Linux ゲームのインストール スクリプトを作成しています。インストールの一環として、ゲームの実行可能ファイルの suid パーミッションを「games」グループに変更して、通常のユーザーが実行した場合でもゲームがハイスコア ファイルを更新できるようにします。
現在、私の Makefile.am は次のようになっています。
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src man
install-exec-hook:
chgrp games @bindir@/xjump
chmod +s @bindir@/xjump
mkdir -p @localstatedir@/xjump
touch @localstatedir@/xjump/record
chmod 660 @localstatedir@/xjump/record
chgrp games @localstatedir@/xjump/record
私が抱えている問題は、chgrp コマンドには管理者権限が必要なことです。を使用してゲームをグローバルにインストールしている場合sudo make install
、すべて正常に動作しますが、プレフィックスをホームディレクトリのどこかに変更して定期的に実行しようとするmake install
と、chgrp が原因で失敗します
chgrp: changing group of ‘/home/hugo/Desktop/aaa/bin/xjump’: Operation not permitted
ローカルにインストールされたバージョンのゲームにはプレイヤーが 1 人しかいないため、chgrp を実行する必要はありません。メイクファイルがルート権限なしで実行されているかどうかを検出し、権限の変更をスキップする方法はありますか? または、このアクセス許可の問題を自動的に修正しようとする代わりに、構成スクリプトに構成フラグを追加する必要がありますか?