shell bash脚本检查文件是否具有除444以外的权限或只读

7nbnzgx9  于 2023-05-18  发布在  Shell
关注(0)|答案(1)|浏览(187)

我想检查在不同的文件夹列表,如果特定的.php文件存在,并有特定的权限,实际上我不希望这些文件有任何类型的写权限,只是只读,只读的任何所有者,组,其他人。这就是444许可。

#!/bin/bash
#
# List all permissions

for dir in /home/user/client*/stream*/mp4; do
    config_file="${dir}/stream.php"
    if [ -f "$config_file" ]; then
        if [ "$config_file" != '0444' ]; then
            echo "Writable file in $dir"
        fi
    else
        echo "The stream.php file does not exist in $dir"
    fi
done

当然,我想从chatgpt那里得到一些帮助,但它只给了我错误的答案。
我也尝试了[ -w "$config_file" ],这是一些文档中建议的,但它总是返回我:Writable file in $dir而且我知道文件是不能写的。其他建议是使用-perm命令,但这给了我if [ "$config_file"行中的语法错误
编辑:-w返回文件是可写的,因为作为root用户,我可以写入文件,即使文件具有只读权限或444

093gszye

093gszye1#

不知道你是如何得到-w给予你错误的答案的,但另一种方法是使用stat --format=%a file_name,它会打印八进制的权限位(例如:第444章你要找的人
要检查该值,请将条件更改为:if [ $(stat --format=%a "$config_file") != 444 ]; then

  • 我想你需要更好地了解你需要做什么。一个文件不仅仅是“可写”或不可写,它有三个不同类别的用户,这些用户拥有不同的权限(所有者、组和其他所有人)。还有父目录的权限。您还必须了解您试图保护的对象(哪些用户、进程、它们运行的权限等)。*

相关问题