не может получить доступ к / dev / null: разрешение запрещено, хотя crw-rw-rw- 1 root root 1, 3 сентября 21 12:05 / dev / null

11

На пользователя postgres:

$ ls -l /dev/null
ls: cannot access /dev/null: Permission denied

Мысль о пользователе root, разрешения правильные:

# ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Sep 21 12:05 /dev/null

Я попытался воссоздать его:

# rm /dev/null && mknod -m 0666 /dev/null c 1 3

Но результат тот же. Я на VPS с Debian 7 и ядра 2.6.32 на x86_64

lalebarde
источник

Ответы:

18

Проблема связана с разрешениями для / dev:

# ls -ld /dev
drwx------ 3 root root 4096 Sep 21 12:12 /dev

Так что / dev не был доступен пользователям.

# chmod a+x /dev
# chmod a+r /dev

Решил проблему.

lalebarde
источник
Поэтому я хочу знать, почему у него были такие разрешения. Вы можете переустановить. Все в / dev управляется ядром, и странно, что у него неправильные разрешения.
cripto
нет, все в / dev не является "управляемым ядром".
tlund
@tlund, пожалуйста, просмотрите вашу любимую книгу ядра. Каталог / dev отражает текущее состояние ядра " doc.opensuse.org/products/draft/SLES/SLES-admin_sd_draft/…
cripto
@ user1048138: Я бы тоже хотел знать. Я начал с автоматической установки Debian 7 от моего провайдера VPS. Затем я обновил, обновил, использовал только apt-get. Плюс один пакет "вручную" с помощью wget some_domain / some_package.deb ; dpkg -i some_package.deb; apt-get -f установить. В какой-то момент / dev / null был изменен на стандартный файл, а права / dev изменились. Я не могу сказать больше.
Lalebarde
1

У меня была похожая проблема, и я пришел сюда в поисках симптомов, но решение не подошло к моему случаю. Поэтому я хотел бы добавить еще одну возможную причину, даже если она не совсем соответствует ОП.

В моем особом случае я использовал proot(хорошая chrootобертка). Но разрешения были правильными /dev/nullи по /devсебе.

Это было монтирование chrootкаталога, которое я сделал thunarкак обычный пользователь. Таким образом, в этом случае монтирование не имело правильных разрешений.

У вас плохое время, чтобы найти это, потому что вы не видите эти разрешения, когда смотрите только на файлы.

Общий путь решения будет состоять в том, чтобы начать проверку условий в расположении проблемы ( /dev/null) и перейти на следующий уровень (уровни) ( /dev), затем монтировать, файловую систему и т. Д., Что будет дальше.

На каждом шаге у вас может быть несколько предварительных условий, каждое из которых имеет свои внешние уровни. Например, пользователь может быть в неправильной группе, что приводит к файлу конфигурации группы, который может иметь неправильные разрешения и т. Д.

Очевидно, что вы должны следовать своего рода дереву в целом.

Harald
источник
0

Я не мог решить это сам, вот что я сделал:

mycommand.sh | echo -n

Команда echoне обращает внимания на стандартный ввод, поэтому она будет отброшена. И -nэто так, что бесполезный перевод строки не выводится на стандартный вывод.

Марк Стюарт
источник
1
Хотя это может ответить на вопрос, было бы лучше, если бы вы могли объяснить, почему это так.
Дэвид Постилл
1
Да, но как он отвечает на вопрос "невозможно получить доступ к / dev / null: разрешение запрещено, хотя crw-rw-rw- 1 root root 1, 3 Sep 21 12:05 / dev / null"?
DavidPostill
1
Это не отвечает на вопрос. Но это обеспечивает обходной путь. Иногда нет идеального прямого ответа.
Марк Стюарт
0
chmod a+rw /dev/null /dev/random /dev/urandom /dev/ptmx /dev/tty /dev/zero /dev/full /dev/fuse /dev/net/tun

это то, что решить мою проблему на VPS. Обратите внимание, что после перезагрузки сервера вы снова запустили эту команду

Zore
источник