为什么看到具有400个权限的文件可由root写入但由用户只读?

富有的

如果我以非特权用户身份创建文件,然后将权限模式更改为400,则该用户将其正确地视为只读:

$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro

一切都很好。

但是随后出现了root:

# [ -w somefile ] && echo rw || echo ro
rw

有没有搞错?当然,root可以写入只读文件,但不应养成它的习惯:最佳实践将倾向于指示我应该能够测试写入许可位,如果没有,则设置它这种方式是有原因的。

我想我既想了解为什么会发生这种情况,又要了解在测试未设置写位的文件时如何得到错误的返回码?

震荡器

test -waka[ -w不检查文件模式。它检查它是否可写。对于root,它是。

$ help test | grep '\-w'
  -w FILE        True if the file is writable by you.

我测试的方法是对输出stat(1)(“%a八进制访问权限”)进行逐位比较

(( 0$(stat -c %a somefile) & 0200 )) && echo rw || echo ro

注意,子外壳$(...)需要一个0前缀,以便的输出stat被解释为八进制(( ... ))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中创建具有其他用户可以写入的权限的文件

如何读取/写入可以由非root用户访问的文件?

能够使用非sudo用户覆盖只读文件的root权限

Git无法检出具有只读权限的文件

azure devops:一个用户看不到该存储库,同一组中具有相同权限的另一个用户可以看到。为什么是这样?

除非具有root用户权限,否则无法写入闪存驱动器

USB驱动器由用户自动安装,但仅具有root用户的写入权限

创建具有部分root权限的用户

为什么默认情况下某些文件仅对root用户只读?

为什么/ media / username root:root具有默认权限?

/ etc / sudoers文件是否仅假定具有只读权限?

Samba:需要访客/所有人都是只读的,并且可由组中的用户写入

Samba:需要访客/所有人都是只读的,并且可由组中的用户写入

允许用户仅运行具有root权限/特权的特定二进制文件

文件系统已作为root挂载但由用户拥有。为什么?

为什么我的Postgres用户对表具有执行权限?

为什么新的默认目录具有用户可执行权限,而新文件仅具有用户读写权限?

如何创建对所有文件具有只读访问权限的用户?(即没有写权限的root)

网站地图生成器必须可由具有775权限的www数据拥有的文件夹上的Web服务器写入

这个问题基于一个错误。为什么vim会为具有--w--w--w-权限的文件提供“只读”权限

为什么我仍然可以写入标有400的文件

为什么要有644个文件权限?

停止强制保存具有只读权限的文件

没有u权限的用户可以阅读,更改权限并删除文件吗?为什么?

超级用户可以写入具有000访问权限的文件吗?

为什么即使在root:root且具有“ t”标志的情况下,也无法在/ tmp /中写入文件?

无法写入具有开放世界写入权限的文件

赋予所有用户读取、写入和执行文件夹权限的文件权限代码是什么

为什么我可以编写具有只读权限的模块参数?