-bash: / dev / null: Izin ditolak

30

Saya mencoba membuat pengguna baru pada sistem Centos 6.

Pertama, saya lakukan

useradd kevin

Kemudian, saya mencoba menjalankan perintah sebagai pengguna itu

su - kevin

Namun, saya mendapatkan pesan kesalahan berikut

-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 ~]$

Dan saya tidak bisa berbuat banyak seperti pengguna itu.

Izin pada /dev/nulladalah sebagai berikut:

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

Kira-kira sama dengan yang ada di Mac saya,

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

Itu mungkin , tetapi sangat tidak mungkin, saya menyentuh dev.

Sebagai pengguna root, saya mencoba menambahkan kevinke rootgrup:

usermod -a -G root kevin

Namun saya masih mendapatkan /dev/nullizin ditolak kesalahan.

Mengapa pengguna baru tidak dapat menulis /dev/null?
Kelompok apa yang harus menjadi bagian dari pengguna baru?
Apakah saya tidak menyamar sebagai pengguna dengan benar?
Apakah ada panduan pemula untuk mengatur pengguna / izin di Linux?

Kevin Burke
sumber
1
Sepertinya / dev / null diubah menjadi file biasa sepanjang 9 byte; itu seharusnya menjadi file perangkat ('c' di awal jenis file / izin bit bits). Jika Anda cat /dev/null, apakah itu terlihat seperti sesuatu yang baru-baru ini Anda gunakan?
Mark Plotnick
ah. ya itu benar. "* tuan". Anda ingin menambahkan itu sebagai jawaban & saya akan menandainya?
Kevin Burke
Anda dapat reboot dan / dev / null akan dibuat ulang, tetapi apakah Anda tahu apa yang terjadi dengan mengubah / dev / null menjadi file? Akan sangat menyebalkan jika itu terjadi lagi.
Mark Plotnick
1
Dugaan saya adalah saya memindahkan output dari "git branch" ke / dev / null alih-alih menulisnya, atau memiliki skrip atau sesuatu yang buruk
Kevin Burke

Jawaban:

56

Seseorang ternyata memindahkan file biasa ke / dev / null. Reboot akan membuatnya kembali, atau lakukan

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

Seperti @Flow telah mencatat dalam komentar, Anda harus rootmelakukan ini.

Tandai Plotnick
sumber
12
Jika dengan "seseorang" maksudmu "aku", maka ya :)
Kevin Burke
Bahkan saya berlari int masalah yang sama di server. ubuntu 14.04 LTS. Tapi saya tidak mengubah izin. Apakah ada kemungkinan di mana saya dapat melacak proses yang mengubah izin?
Mani
@Mani Linux secara default tidak mencatat perubahan kecil seperti itu, tetapi Anda dapat mengaktifkan audit untuk melihatnya mulai sekarang. Cara mendeteksi chmod di Linux pada suatu file
Mark Plotnick
1
Solusinya memperbaiki masalah tetapi masalah berulang. Mengapa?
Abhishek Soni
@AbhishekSoni Anda dapat mencoba mengaudit, seperti dijelaskan dalam Menampilkan riwayat file (daftar pengguna yang telah memodifikasi file)
Mark Plotnick
13

Ini harus memperbaiki masalah (sebagai root):

rm /dev/null
mknod /dev/null c 1 3
chmod 666 /dev/null
Jlliagre
sumber
2
Yang ini juga berfungsi pada Mac / BSD
redolen
3

Solusi yang disarankan oleh Mark tidak bekerja pada OpenBSD. Namun

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

melakukan trik. Saya telah menguji ini pada OpenBSD 5.6. Ketika jawaban yang diterima dijalankan / dev / null akan memblokir dan mengacaukan pembacaan kode apa pun darinya.

meschi
sumber
Bukankah OP menggunakan CentOS daripada OpenBSD?
ott--
3
Sayangnya, sistem operasi yang berbeda menggunakan angka mayor / minor yang berbeda /dev/null, dan tidak ada standar. OP ditanya tentang CentOS 6. Linux telah digunakan 1,3untuk / dev / null akan kembali ke setidaknya 2001. Pada FreeBSD, saya sudah melihat 0,6, 15,0, 17,0, dan 20,0. Penggunaan OpenBSD 2,2. Di OpenBSD, Anda sebenarnya tidak perlu tahu nomornya; kamu bisa lari # cd /dev; ./MAKEDEV std.
Mark Plotnick
Nomor utama dan kecil tidak dapat diangkut antara sistem operasi. Apa yang berfungsi di Linux biasanya tidak akan berfungsi pada * BSD atau Mac OS X (atau Solaris, AIX, HP-UX, ...), dan sebaliknya. Anda harus menemukan nomor yang benar untuk digunakan dalam mknodperintah dengan memeriksa manual (jika Anda beruntung, informasinya ada di sana) atau dengan memeriksa header kernel.
Jonathan Leffler
1

Ini terjadi pada saya di windows dalam aplikasi Ubuntu, ketika mencoba menjalankan skrip yang ditulis /dev/null. Izin benar untuk keduanya /devdan /dev/null.

Ternyata masalahnya adalah windows baris baru dalam file skrip. Berlari:

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

Memecahkan masalah bagi saya.

Arthur.V
sumber
0

Posting jawaban Mac OS X untuk anak cucu ...

sudo su \
&& rm -rf /dev/null \
&& mknod /dev/null c 3 2 \
&& chmod 666 /dev/null
Julian
sumber