检查不同的用户是否对linux上的文件具有读/写权限

时间:2015-03-24 22:28:36

标签: linux file-permissions audit

如何检查未分配shell的特定用户是否可以写入或读取文件?

作为一个例子,我们可以使用apache用户...是否有任何触摸选项或任何其他命令?

谢谢

2 个答案:

答案 0 :(得分:4)

测试读取权限

尝试读取文件的开头并丢弃正常输出。然后,您可以查找空字符串(成功)或“权限被拒绝”消息(您还可以检查其他错误消息,例如“没有此类文件或目录”)。例如:

head -1 /path/to/file 2>&1 > /dev/null | grep 'Permission denied'

测试写入权限

将touch命令与-c( - no-create)选项一起使用。合并stdout和stderr并再次搜索空字符串(成功)或错误:

touch -c /path/to/file 2>&1 | grep 'Permission denied'

如果您明确测试目录的写访问权限,请确保测试目录而不是其中包含的文件,因为使用-c选项,如果文件即使在目录中也不存在也没有错误条件你没有写访问权:

来自Wikipedia: touch (Unix)

  

-c,如果该文件不存在,请不要创建它并且不报告此条件

作为特定用户测试

最后一个难题是如何将其作为不同的用户进行检查。以root身份执行test命令作为所需用户“sudo -u [用户名] [命令] ”,以便使用建议的用户:

sudo -u apache touch -c /path/to/file 2>&1

答案 1 :(得分:0)

“ test”命令是为此用例设计的。

sudo -u otheruser test -r /path/to/file
如果其他用户可以读取文件,则

将返回0;如果其他用户无法读取文件,则

将返回1。您可以运行test -r /path/to/file; echo "$?"来查看test命令的返回代码。

使用test -w测试写权限,使用test -x测试执行权限。