-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

我接触开发人员是可能的,但实际上不太可能。

作为root用户,我尝试添加kevinroot组中:

usermod -a -G root kevin

但是,我仍然收到/dev/null权限被拒绝的错误。

为什么新用户无法写信/dev/null
新用户应属于哪些组?
我没有正确模拟用户吗?
是否有在Linux上设置用户/权限的初学者指南?


1
看起来/ dev / null变成了一个9字节长的普通文件;它应该是设备文件(文件类型/权限位字段开头的“ c”)。如果cat /dev/null是,看起来像您最近使用过的东西吗?
Mark Plotnick

啊。是的,它确实。“ *大师”。您是否要将其添加为答案并标记出来?
凯文·伯克

您可以重新启动,并重新制作/ dev / null,但是您知道将/ dev / null更改为文件时发生了什么吗?如果再次发生,那会很痛苦。
Mark Plotnick

1
我的猜测是我将“ git branch”的输出移至/ dev / null而不是编写,或者脚本或其他内容不正确
Kevin Burke

Answers:


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上检测文件
Mark Plotnick

1
解决方案解决了问题,但问题再次发生。为什么?
Abhishek Soni


13

这应该解决问题(以root用户身份):

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

2
这也可在Mac / BSD上使用
命名2015年

3

Mark建议的解决方案不适用于OpenBSD。然而

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

做到了。我已经在OpenBSD 5.6上进行了测试。执行接受的答案时,/ dev / null将严重阻塞并拧紧从中读取的所有代码。


OP没有使用CentOS而不是OpenBSD吗?
ott

3
不幸的是,不同的操作系统对使用不同的主要/次要数字/dev/null,并且没有标准。OP问的CentOS 6 Linux已经使用1,3了的/ dev / null的可以追溯到至少2001年在FreeBSD上,我已经看到了0,615,017,0,和20,0。OpenBSD使用2,2。在OpenBSD上,您实际上不需要知道数字。你可以跑步# cd /dev; ./MAKEDEV std
Mark Plotnick

主编号和次编号不能在操作系统之间传输。在Linux上有效的通常在* BSD或Mac OS X(或Solaris,AIX,HP-UX等)上不起作用,反之亦然。您必须mknod通过仔细阅读手册(如果幸运的话,其中的信息)或通过仔细检查内核头文件来找到要在命令中使用的正确数字。
乔纳森·勒夫勒

1

这是在Ubuntu应用程序中Windows上发生的,同时试图运行写入的脚本/dev/null。许可对/dev和都是正确的/dev/null

原来问题是脚本文件中的Windows换行符。正在运行:

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.