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

4 ответа4

18

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

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

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

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

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

1

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

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

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

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

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

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

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

0
chmod a+rw /dev/null /dev/random /dev/urandom /dev/ptmx /dev/tty /dev/zero /dev/full /dev/fuse /dev/net/tun

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

0

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

mycommand.sh | echo -n

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .