私はLinuxシステムにすべて770 / root:root(perms / owner:group)のストレージディレクトリセットを持っており、ACLを使用してユーザーアクセスを管理します。 (グループがLDAPを介して管理されているネットワークを介してディレクトリが共有され、管理者ではないため、Unixグループは使用できません。)
各ディレクトリに対して、1人のユーザーはACLを介してフルrwxアクセス権を持ち、他のすべてのユーザーはACLを介してrxアクセス権を持ちます。
現在は、ユーザーの追加/削除要求に手動で応答する必要があります。この機能を「rwx」ユーザーに渡して、自分が所有するディレクトリをインポートしたいと思います(私は元々怠惰なシステム管理者だからです)。
私が考えることができる最善の解決策は、指定されたディレクトリで呼び出し側ユーザーの "rwx" ACLステータスを確認し、次のように "rx" ACLユーザーを追加/削除できるようにするroot setuidを使用してスクリプト/プログラムを作成することです。
$ modify_acls.sh [--remove] [--add] <my_directory> <other_user>
より簡単な方法はありますか、または上記の解決策は何らかの理由で機能しませんか?
答え1
setuidシェルスクリプトの代わりに特定のスクリプトを有効にすることを検討してくださいsudo
。
この方法は最も一般的に使用されますが、sudo
「誰かがrootとしてすべてのプログラムを実行できるようにすること」に限定されません。詳細は で簡単に行うことができます/etc/sudoers
。man sudoers
sudo
セキュリティ上の理由から、setuidスクリプトが完全に無効になっているシステムでは、2番目の選択肢が機能しないことを除いて、setuidスクリプトを代わりに使用することに実質的な利点はありません。カスタム setuid バイナリを作成することもできますが、sudoers
ユーザーを追加または削除したい場合は、行を挿入して変更する方が簡単で迅速で簡単です。
答え2
setuid シェルスクリプトは通常Linuxでサポートされていないため、シェルスクリプトを使用すると機能しない可能性があります。
解決策は、必要な機能を提供し、実行可能ファイルのuidルートを設定する小さな実行可能ファイルをCで書くことです。