我正在尝试在 Centos 6 系统上创建一个新用户。
首先,我做
useradd kevin
Run Code Online (Sandbox Code Playgroud)
然后,我尝试以该用户身份运行命令
su - kevin
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误消息
-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 ~]$
Run Code Online (Sandbox Code Playgroud)
而我作为那个用户也做不了多少。
权限/dev/null
如下:
-rwxr-xr-x 1 root root 9 Jul 25 17:07 null
Run Code Online (Sandbox Code Playgroud)
与我的 Mac 上的大致相同,
crw-rw-rw- 1 root wheel 3, 2 Jul 25 14:08 null
Run Code Online (Sandbox Code Playgroud)
我有可能碰过 dev,但真的不太可能。
作为 root 用户,我尝试添加kevin
到root
组中:
usermod -a -G root kevin
Run Code Online (Sandbox Code Playgroud)
但是,我仍然收到/dev/null
权限被拒绝的错误。
为什么新用户不能写入/dev/null
?
新用户应该属于哪些组?
我没有正确模拟用户吗?
是否有在 Linux 上设置用户/权限的初学者指南?
Mar*_*ick 78
显然有人将常规文件移动到 /dev/null。重新启动将重新创建它,或者做
rm -f /dev/null; mknod -m 666 /dev/null c 1 3
Run Code Online (Sandbox Code Playgroud)
正如@Flow 在评论中指出的那样,您必须这样root
做。
1
而3
这里是基于Linux操作系统的主要和次要设备号(由处理的第3设备mem
驱动程序,请参见/proc/devices
,cat /sys/devices/virtual/mem/null/dev
,readlink /sys/dev/char/1:3
)。它因操作系统而异。例如2
,2
在 OpenBSD和AIX 上,它在给定的操作系统上也可能并不总是相同。某些操作系统可能会提供makedev
/MAKEDEV
命令来帮助重新创建它们。
jll*_*gre 17
这应该可以解决问题(以 root 身份):
rm /dev/null
mknod /dev/null c 1 3
chmod 666 /dev/null
Run Code Online (Sandbox Code Playgroud)
这些命令在做什么:
rm
正在删除由于缺少预期文件而创建的伪造文件;mknod
正在/dev/null
为 Linux 内核创建一个以适当的主要和次要编号命名的字符设备;chmod
正在设置所有用户的权限,使其能够读取和写入/dev/null
.小智 6
Mark 建议的解决方案在 OpenBSD 上不起作用。然而
mknod -m 666 /dev/null c 2 2
Run Code Online (Sandbox Code Playgroud)
成功了。我已经在 OpenBSD 5.6 上测试过了。当接受的答案被执行时,/dev/null
将会非常糟糕地阻止并破坏从中读取的任何代码。
要在 OpenBSD(null
包括)上重新创建所有标准设备,您应该使用(作为 root):
cd /dev
./MAKEDEV std
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
85622 次 |
最近记录: |