Назад | Перейти на главную страницу

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.

Те же команды, введенные вручную, работают абсолютно нормально. Что я делаю не так?

(к тому же это мой первый вопрос - если я не сказал чего-то важного - поправьте меня, я соответствующим образом отредактирую вопрос)

ls не показывает флаги доступа для группы владельцев - он показывает доступ самой высокой группы, и это меня обмануло. Я также изменил chmods в скрипте так, чтобы они сначала изменяли содержимое каталога, а затем сам каталог, и теперь работает липкий бит.
Для 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 просто не показывал биты разрешений, которые я ожидал.