【发布时间】:2015-05-28 10:32:45
【问题描述】:
如何检查未分配 shell 的特定用户是否可以写入或读取文件?
作为一个例子,我们可以使用 apache 用户...有没有 touch 选项或任何其他命令?
谢谢
【问题讨论】:
标签: linux file-permissions audit
如何检查未分配 shell 的特定用户是否可以写入或读取文件?
作为一个例子,我们可以使用 apache 用户...有没有 touch 选项或任何其他命令?
谢谢
【问题讨论】:
标签: linux file-permissions audit
“测试”命令专为此用例而设计。
sudo -u otheruser test -r /path/to/file
如果其他用户可以读取该文件,则返回 0,如果其他用户无法读取该文件,则返回 1。可以运行test -r /path/to/file; echo "$?"查看test命令的返回码。
使用test -w 测试写入权限,使用test -x 测试执行权限。
【讨论】:
尝试读取文件的开头并丢弃正常输出。然后,您可以查找空字符串(成功)或“Permission denied”消息(您还可以检查其他错误消息,例如“No such file or directory”)。例如:
head -1 /path/to/file 2>&1 > /dev/null | grep 'Permission denied'
使用带有 -c (--no-create) 选项的 touch 命令。结合 stdout 和 stderr 再次搜索空字符串(成功)或错误:
touch -c /path/to/file 2>&1 | grep 'Permission denied'
如果您要明确测试目录的写访问权限,请确保测试目录而不是其中包含的文件,因为使用 -c 选项,即使文件不存在于目录中也不会出现错误情况您没有写入权限:
-c,如果文件不存在,则不创建,不报此情况
难题的最后一部分是如何以不同的用户身份进行检查。以 root 身份使用“sudo -u [username] [command]”以所需用户身份执行测试命令,因此请使用您建议的用户:
sudo -u apache touch -c /path/to/file 2>&1
【讨论】: