-bash: / dev / null: Quyền bị từ chối


30

Tôi đang cố gắng tạo người dùng mới trên hệ thống Centos 6.

Đầu tiên, tôi làm

useradd kevin

Sau đó, tôi đã cố chạy các lệnh như người dùng đó

su - kevin

Tuy nhiên, tôi nhận được các thông báo lỗi sau

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

Và tôi không thể làm nhiều như người dùng đó.

Các quyền trên /dev/nullnhư sau:

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

Gần giống như họ đang ở trên máy Mac của tôi,

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

thể , nhưng thực sự không chắc, tôi đã chạm vào dev.

Là người dùng root, tôi đã thử thêm kevinvào rootnhóm:

usermod -a -G root kevin

Tuy nhiên tôi vẫn nhận được sự /dev/nullcho phép từ chối lỗi.

Tại sao người dùng mới không thể viết thư /dev/null?
Những người dùng mới nên là một phần của?
Tôi không mạo danh người dùng chính xác?
Có hướng dẫn cho người mới bắt đầu để thiết lập người dùng / quyền trên Linux không?


1
Có vẻ như / dev / null đã thay đổi thành tệp thông thường dài 9 byte; nó được coi là một tệp thiết bị ('c' ở đầu trường loại tệp / bit quyền). Nếu bạn cat /dev/null, nó trông giống như một cái gì đó bạn đã sử dụng gần đây?
Đánh dấu Plotnick

à vâng nó đã làm. "* bậc thầy". Bạn có muốn thêm nó làm câu trả lời & tôi sẽ đánh dấu nó?
Kevin Burke

Bạn có thể khởi động lại và / dev / null sẽ được làm lại, nhưng bạn có biết điều gì đã xảy ra để thay đổi / dev / null thành một tệp không? Sẽ là một nỗi đau nếu nó xảy ra một lần nữa.
Đánh dấu Plotnick

1
Tôi đoán là tôi đã chuyển đầu ra của "nhánh git" sang / dev / null thay vì viết nó, hoặc có một kịch bản xấu hoặc một cái gì đó
Kevin Burke

Câu trả lời:


56

Ai đó rõ ràng đã chuyển một tập tin thông thường sang / dev / null. Khởi động lại sẽ tạo lại nó, hoặc làm

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

Như @Flow đã lưu ý trong một bình luận, bạn phải rootlàm điều này.


12
Nếu bởi "ai đó" bạn có nghĩa là "tôi", thì có :)
Kevin Burke

Ngay cả tôi cũng chạy int vấn đề tương tự trên máy chủ. ubfox 14.04 LTS. Nhưng tôi đã không thay đổi quyền. Có khả năng nào để tôi có thể theo dõi quá trình nào đã thay đổi quyền không?
Mani

@Mani Linux theo mặc định không ghi lại những thay đổi nhỏ như vậy, nhưng bạn có thể bật kiểm toán để xem chúng từ bây giờ. Cách phát hiện trên Linux chmod của một tệp
Đánh dấu Plotnick

1
Giải pháp khắc phục sự cố nhưng vấn đề lại xảy ra. Tại sao?
Abhishek Soni

@AbhishekSoni Bạn có thể thử kiểm tra, như được mô tả trong Hiển thị lịch sử của tệp (danh sách người dùng đã sửa đổi tệp)
Mark Plotnick

13

Điều này sẽ khắc phục vấn đề (như root):

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

2
Cái này cũng hoạt động trên Mac / BSD
redolent

3

Giải pháp được đề xuất bởi Mark không hoạt động trên OpenBSD. Tuy nhiên

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

đã lừa Tôi đã thử nghiệm điều này trên OpenBSD 5.6. Khi câu trả lời được chấp nhận được thực thi / dev / null sẽ chặn và vặn bất kỳ mã nào đọc từ nó khá tệ.


OP không sử dụng CentOS chứ không phải OpenBSD?
ott--

3
Thật không may, các hệ điều hành khác nhau sử dụng các số chính / phụ khác nhau /dev/nullvà không có tiêu chuẩn. OP được hỏi về CentOS 6. Linux đã sử dụng 1,3cho / dev / null sẽ trở lại ít nhất là năm 2001. Trên FreeBSD, tôi đã nhìn thấy 0,6, 15,0, 17,0, và 20,0. OpenBSD sử dụng 2,2. Trên OpenBSD, bạn thực sự không cần phải biết các con số; bạn có thể chạy # cd /dev; ./MAKEDEV std.
Đánh dấu Plotnick

Số chính và số phụ không thể vận chuyển giữa các hệ điều hành. Những gì hoạt động trên Linux thường sẽ không hoạt động trên * BSD hoặc Mac OS X (hoặc Solaris, AIX, HP-UX, khắc) và ngược lại. Bạn phải tìm đúng số để sử dụng trong mknodlệnh bằng cách xem xét kỹ hướng dẫn sử dụng (nếu bạn may mắn, thông tin có trong đó) hoặc bằng cách xem xét kỹ lưỡng các tiêu đề hạt nhân.
Jonathan Leffler

1

Điều này đã xảy ra với tôi trên các cửa sổ trong ứng dụng Ubuntu, trong khi cố gắng chạy một đoạn script được viết vào /dev/null. Quyền đã đúng cho cả hai /dev/dev/null.

Hóa ra vấn đề là các dòng mới của windows trong tệp script. Đang chạy :

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

Giải quyết vấn đề cho tôi.


0

Đăng câu trả lời Mac OS X cho hậu thế ...

sudo su \
&& rm -rf /dev/null \
&& mknod /dev/null c 3 2 \
&& chmod 666 /dev/null
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.