-bash: / dev / null: Дозвіл відхилено


30

Я намагаюся створити нового користувача в системі Centos 6.

По-перше, я роблю

useradd kevin

Потім я спробував запустити команди як цей користувач

su - kevin

Однак я отримую такі повідомлення про помилки

-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
[kevin@gazelle ~]$

І я не можу зробити дуже багато, як цей користувач.

Дозволи на /dev/nullтакі:

-rwxr-xr-x  1 root root           9 Jul 25 17:07 null

Приблизно так само, як вони є на моєму Mac,

crw-rw-rw-   1 root   wheel         3,   2 Jul 25 14:08 null

Це можливо , але на самому справі малоймовірно, що я доторкнувся Dev.

Як користувач root, я спробував додати kevinдо rootгрупи:

usermod -a -G root kevin

Однак я все ще отримую /dev/nullдозвіл, яким відмовлено у помилках.

Чому новий користувач не може написати на нього /dev/null?
До яких груп повинен входити новий користувач?
Хіба я не видаю себе за належне ім'я користувача?
Чи є керівництво для початківців щодо налаштування користувачів / дозволів на Linux?


1
Схоже, що / dev / null було змінено на звичайний файл, що триває 9 байт; це повинен бути файл пристрою ('c' на початку поля бітів типу / дозволу). Якщо ви cat /dev/null, чи схоже це на те, що ви нещодавно використовували?
Марк Плотнік

ах. так, це було. "* господар". ви хочете додати це як відповідь & я позначу це?
Кевін Берк

Ви можете перезавантажити файл, і / dev / null буде перероблено, але чи знаєте ви, що сталося зі зміною / dev / null у файл? Було б болі, якщо це повториться.
Марк Плотнік

1
Я здогадуюсь, що я перемістив вихід "git гілки" в / dev / null замість того, щоб писати його, або у мене був поганий сценарій чи щось таке
Кевін Берк

Відповіді:


56

Хтось, очевидно, перемістив звичайний файл у / dev / null. Перезавантаження відтворить його, або зробить

rm -f /dev/null; mknod -m 666 /dev/null c 1 3

Як зазначав @Flow у коментарі, ви повинні це rootзробити.


12
Якщо під «ким-небудь» ви маєте на увазі «я», то так :)
Кевін Берк

Навіть я побіг у тому ж питанні на сервері. ubuntu 14.04 LTS. Але я не змінював дозволи. Чи є можливість простежити, який процес змінив дозволи?
Мані

@Mani Linux за замовчуванням не записує такі невеликі зміни, але ви можете увімкнути аудит, щоб побачити їх відтепер. Як виявити в Linux chmod файлу
Марк Плотник

1
Рішення усуває проблему, але проблема повторюється. Чому?
Абхішек Соні

@AbhishekSoni Ви можете спробувати перевірити, як це описано в Відображення історії файлу (список користувачів, які змінили файл)
Марк Плотнік

13

Це має вирішити проблему (як корінь):

rm /dev/null
mknod /dev/null c 1 3
chmod 666 /dev/null

2
Цей також працює на Mac / BSD
повторний

3

Рішення, запропоноване Марком, не працювало на OpenBSD. Однак

mknod -m 666 /dev/null -c 2 2

зробив трюк. Я перевірив це на OpenBSD 5.6. Коли прийнята відповідь виконана / dev / null буде блокувати і викручувати з неї будь-який зчитуваний код.


Чи не використовував ОП CentOS, а не OpenBSD?
ott--

3
На жаль, різні операційні системи використовують різні основні / другорядні номери для /dev/null, і немає стандарту. OP питання про CentOS 6. Linux використовує 1,3для / DEV / нуль відбувається тому , по крайней мере , 2001 року на FreeBSD, я бачив 0,6, 15,0, 17,0і 20,0. Використовує OpenBSD 2,2. У OpenBSD вам фактично не потрібно знати цифри; ти можеш бігати # cd /dev; ./MAKEDEV std.
Марк Плотнік

Основна та незначна кількість не переноситься між операційними системами. Те, що працює в Linux, зазвичай не працює на * BSD або Mac OS X (або Solaris, AIX, HP-UX, ...), і навпаки. Ви повинні знайти правильні номери, які слід використовувати в mknodкоманді, перевіряючи посібники (якщо пощастить, інформація знаходиться там) або ретельно вивчаючи заголовки ядра.
Джонатан Леффлер

1

Це сталося зі мною у Windows в додатку Ubuntu, намагаючись запустити сценарій, який записав /dev/null. Дозволи були правильними і для, /devі для /dev/null.

Виявилася проблема у вікні нових рядків у файлі сценарію. Запуск:

dos2unix.exe c:\path\to\script.sh

Вирішили питання для мене.


0

Опублікування відповіді на Mac OS X для нащадків ...

sudo su \
&& rm -rf /dev/null \
&& mknod /dev/null c 3 2 \
&& chmod 666 /dev/null
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.