0

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 を実行する必要はありません。メイクファイルがルート権限なしで実行されているかどうかを検出し、権限の変更をスキップする方法はありますか? または、このアクセス許可の問題を自動的に修正しようとする代わりに、構成スクリプトに構成フラグを追加する必要がありますか?

4

2 に答える 2

1

「whoami」を実行すると、現在のユーザーが誰であるかを知ることができます。

    runner=`whoami` ; 
    if test $$runner == "root" ; 
    then 
            chgrp games @localstatedir@/xjump/record
    fi
于 2015-04-21T18:26:46.157 に答える