我如何检查一个没有 shell 分配的特定用户是否可以写入或读取文件?
以 apache 用户为例... touch 或其他命令中有任何选项吗?
谢谢
我如何检查一个没有 shell 分配的特定用户是否可以写入或读取文件?
以 apache 用户为例... touch 或其他命令中有任何选项吗?
谢谢
"test" 命令是为此使用情况而设计的。
sudo -u otheruser test -r /path/to/file
如果 otheruser 可以读取该文件,则返回0,否则返回1。您可以运行test -r /path/to/file; echo "$?"
查看 test
命令的返回代码。
使用test -w
测试写入权限,使用test -x
测试执行权限。
尝试读取文件开头并丢弃正常输出。然后,您可以查找空字符串(成功)或“权限被拒绝”消息(您还可以检查其他错误消息,如“没有这样的文件或目录”)。例如:
head -1 /path/to/file 2>&1 > /dev/null | grep 'Permission denied'
使用带有 -c(--no-create)选项的 touch 命令。将标准输出和标准错误流合并,再次搜索空字符串(成功)或错误消息:
touch -c /path/to/file 2>&1 | grep 'Permission denied'
-c,如果文件不存在,则不创建文件并且不报告此情况
sudo -u apache touch -c /path/to/file 2>&1