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


11

У користувацьких postgres:

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

Думаючи про користувальницький корінь, дозволи є правильними:

# 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

Відповіді:


18

Проблема виникла з дозволів на / dev:

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

Отже / dev не був доступний користувачами.

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

Вирішили проблему.


Тож я хочу знати, чому він мав ці дозволи. Ви можете перевстановити. Все в / dev керується ядром, і його дивно, щоб мати неправильні дозволи.
крипто

ні, все в / dev не "керує ядром".
тлунд

@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) та перейти до наступного рівня (s) ( /dev), потім монтувати, файлову систему тощо, що далі буде.

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

Очевидно, що вам слід загалом слідувати за різновидом дерева.


0

Я не міг самостійно вирішити цю проблему, тож ось що я зробив:

mycommand.sh | echo -n

echoКоманда не звертає уваги на стандартний ввід, тому він буде відкинутий. І -nце так, що маркований новий рядок не друкується для stdout.


1
Хоча це може відповісти на питання, було б кращою відповіддю, якщо ви могли б дати пояснення, чому це так.
DavidPostill

1
Так, але як він відповідає на питання "не може отримати доступ / dev / null: дозвіл відхилено, хоча crw-rw-rw- 1 root root 1, 3 вересня, 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. Зауважте, що після перезавантаження сервера - ви знову запустили цю команду

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.