我正在尝试在 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/devices
、cat /sys/devices/virtual/mem/null/dev
、readlink /sys/dev/char/1:3
)。它随操作系统的不同而变化。例如,它是2
,2
在 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