Я создаю скрипт установки для игры в Linux. В рамках установки я изменяю suid-разрешения исполняемого файла игры в группу «games», чтобы игра могла обновлять файл рекордов, даже когда его запускали обычные пользователи.Как сделать команду chgrp необязательной в моем скрипте установки?
Сейчас мой Makefile.am выглядит следующим образом:
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src man
install-exec-hook:
chgrp games @[email protected]/xjump
chmod +s @[email protected]/xjump
mkdir -p @[email protected]/xjump
touch @[email protected]/xjump/record
chmod 660 @[email protected]/xjump/record
chgrp games @[email protected]/xjump/record
Проблема, которую я имею что команда команды chgrp требует привилегий администратора. Если я устанавливаю игру по всему миру с помощью sudo make install
, то его все работает нормально, но если я изменить префикс куда-то в моем домашнем каталоге и попытаться сделать регулярные make install
это не удается из-за команду chgrp
chgrp: changing group of ‘/home/hugo/Desktop/aaa/bin/xjump’: Operation not permitted
Поскольку установленные локально В версии игры есть только один игрок, мне действительно не нужно делать чгпп. Есть ли способ определить, выполняется ли make-файл без привилегий root и пропустить изменение разрешения? Или я должен добавить флаг конфигурации в свой скрипт configure вместо того, чтобы пытаться исправить эту проблему разрешения автоматически?
Да, chgrp требует наличия привилегий root. в противном случае вы могли бы тривиально совершить DoS-атаку на группу или пользователя, «предоставив» им кучу файлов и превысив их квоту диска. только root может выдавать файлы произвольным образом. или глупые взломы системы, такие как создание двоичного двоичного файла, который у вас есть, chown/chgrp-it it to root/wheel и полностью подорвать систему. –
Мой вопрос в том, что если я устанавливаю для одного пользователя, то chgrp не нужен. Поэтому в этом случае мне бы хотелось, чтобы сценарий установки не требовал root, как сейчас. – hugomg
, если это просто для одного пользователя, зачем вообще менять группу? поместите файл оценки в принадлежащий пользователю/сгруппированный пользователь в качестве пользователя. –