如果我以非特权用户的身份创建一个文件,并将权限模式更改为400
,则该用户正确地将其视为只读:
$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro
Run Code Online (Sandbox Code Playgroud)
一切都很好。
但后来 root 出现了:
# [ -w somefile ] && echo rw || echo ro
rw
Run Code Online (Sandbox Code Playgroud)
有没有搞错?当然,root 可以写入只读文件,但它不应该养成这样的习惯:最佳实践往往会规定我应该能够测试写权限位,如果不是,则已设置那样是有原因的。
我想我想了解为什么会发生这种情况,以及在测试没有设置写入位的文件时如何获得错误的返回码?