Chmods 似乎不适用

Chmods 似乎不适用

我有一个定期运行的脚本,它会重新应用我运行的游戏服务器主目录的 FACL 和 chmod 权限。

该脚本首先发出主目录范围的递归 chmod,然后将某些文件 chmod 为特定值(首先将所有文件设置为 770,然后进行其他更改)。

脚本中的相关内容:

for d in */; do
    < server verification and type checking >
    chmod -R 770 ${d%/}
    chmod 771 ${d%/}
    chmod 775 ${d%/}/$gamedir
    < ... chmodding unrelated game asset directories for webserver access ... >
    for k in "${BLOCK_DIRS[@]}"; do
        if [ -d "$k" ]; then
            echo -e "${CYAN}Checking $(pwd)/$k...${NC}"
            echo -e "${RED}Debug: chmod -R 1700 $(pwd)/$k${NC}"
            chmod -v 1700 "$(pwd)/$k"
            chmod -R 0700 "$(pwd)/$k"
        fi
    done
done

示例输出:

mode of ‘/home/servers/tf_test/tf/../bin’ changed from 0770 (rwxrwx---) to 1700 (rwx-----T)

但是,目录权限只会在第一个循环中最后一个服务器上发生变化。也就是说,第一个 for 循环中有 9 个服务器,而只有最后一个服务器会受到内部 for 循环的更改。

手动发出的相同命令完全可以正常工作。我做错了什么?

(此外,这是我的第一个问题 - 如果我没有说出一些重要的事情 - 请纠正我,我会相应地编辑问题)

答案1

ls不显示所有者组的访问标志 - 它显示最高组的访问权限,这欺骗了我。我还重新安排了脚本中的 chmod,以便它们首先 chmod 目录的内容,然后 chmod 目录本身,现在粘性位可以正常工作。
至于ls组权限问题。

foo@bar:/foo# ls -lha game_server | grep bin
drwxrwx--T+  2 gameaccount  gameaccount  4.0K Dec 21 20:56 bin
foo@bar:/foo#

该目录归 gameaccount 所有,并且看起来拥有该目录的组 gameaccount 具有 7 个权限位,对吗?错误的

foo@bar:/foo# getfacl game_server/bin
# file: game_server/bin
# owner: gameaccount
# group: gameaccount
# flags: --t
user::rwx
group::---
group:root:rwx
mask::rwx
other::---

问题可以关闭 - ls 只是没有显示我期望的权限位。

相关内容