如何检查未分配shell的特定用户是否可以写入或读取文件?
作为一个例子,我们可以使用apache用户...是否有任何触摸选项或任何其他命令?
谢谢
答案 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选项,如果文件即使在目录中也不存在也没有错误条件你没有写访问权:
-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
测试执行权限。