-bash: /dev/null: 权限被拒绝

-bash: /dev/null: 权限被拒绝

我正在尝试在 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 用户,我尝试添加kevin到该root组:

usermod -a -G root kevin

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

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

答案1

显然有人将常规文件移至 /dev/null。重新启动将重新创建它,或者执行

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

正如 @Flow 在评论中指出的,你必须root这样做。

1这里3是基于 Linux 的操作系统上的设备主设备号和次设备号(由mem驱动程序处理的第三个设备,请参阅/proc/devicescat /sys/devices/virtual/mem/null/devreadlink /sys/dev/char/1:3)。它随操作系统的不同而变化。例如,它是22 在 OpenBSD 上AIX,在给定的操作系统上它也可能并不总是相同。某些操作系统可能会提供makedev/MAKEDEV命令来帮助重新创建它们。

答案2

这应该可以解决问题(作为 root):

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

这些命令正在做什么:

  • rm正在删除由于缺少预期文件而创建的虚假文件;
  • mknod/dev/null正在为 Linux 内核创建一个以适当的主设备号和次设备号命名的字符设备;
  • chmod正在设置所有用户都能够读取和写入的权限/dev/null

答案3

Mark 建议的解决方案在 OpenBSD 上不起作用。然而

mknod -m 666 /dev/null c 2 2

成功了。我已经在 OpenBSD 5.6 上对此进行了测试。当执行接受的答案时,/dev/null将非常严重地阻止和破坏从中读取的任何代码。

要在 OpenBSD(包含)上重新创建所有标准设备null,您应该使用(以 root 身份):

cd /dev
./MAKEDEV std

答案4

对于 IBM AIX Server,我做了同样的事情并且它正在工作

# rm /dev/null;mknod /dev/null c 2 2;chown root:system /dev/null;chmod 0666 /dev/null

# ls -l /dev/null
crw-rw-rw-    1 root     system        2,  2 Jul 10 22:18 /dev/null

相关内容