带有数字参数的 chown

c4f*_*t0r 4 linux debian fedora sles

我在 Opensuse 12 和 Fedora 17 上试过这个,我使用以下命令

touch file
chown 777 file
ls -l file
-rw-r--r-- 1 777 root 0 Oct  9 21:43 file
grep 777 /etc/passwd
echo $?
1
Run Code Online (Sandbox Code Playgroud)

没有用户 777

 grep pippo /etc/passwd
 echo $?
 1
 chown pippo file
 chown: invalid user: `pippo'
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用不存在的用户,则会出现一个错误。

为什么我可以将不存在的数字用户与 chown 一起使用,而不能与名称一起使用?

Mat*_*Ife 10

为什么我可以将不存在的数字用户与 chown 一起使用,而不能与名称一起使用?

因为用户名必须解析为 UID,所以如果用户不存在,则无法进行解析,而 UID 是终止类型(它描述自己没有解析)。

从技术上讲,操作系统的所有 chown 请求都必须针对 UID 完成。用户名是为了您的利益,而不是操作系统。

  • `为什么不检查数字用户是否对应于现有用户` - 因为系统通常有一个外部来源进行身份验证。如果由于有人弄乱了配置文件的所有权而导致外部身份验证系统损坏,会发生什么情况?因此,即使身份验证数据库损坏,也需要有一种方法允许系统管理员将所有权设置为正确的 ID。 (3认同)