パスワードを求めずにグループを切り替えるには?

パスワードを求めずにグループを切り替えるには?

Linuxには、グループ定義を指定する2つのファイルがあります。そのうちの1つはで/etc/group、もう1つはです/etc/gshadow。一般ユーザーがプロセスを開始したときにパスワードを入力しなくてもグループを切り替えることができることを願っています。ユーザーがこのグループのメンバーではないことが重要です。

次の方法でこれら2つのファイルを設定することで、これを正常に達成しました。

# cat /etc/group | grep audio
audio:x:29:pulse

# cat /etc/gshadow | grep audio
audio:*::pulse,morfik

これで、ユーザーはmorfik次のコマンドを実行できます。

$ /usr/bin/sg audio -c "pulseaudio -D" 

$ ps -eo user,group,args | grep pulse
morfik   audio    pulseaudio -D
morfik   audio    /usr/lib/pulseaudio/pulse/gconf-helper

しかし、問題がありますgrpck。以下の結果が出力されます。

# grpck
'morfik' is a member of the 'audio' group in /etc/gshadow but not in /etc/group

audioファイルグループからユーザーを削除した/etc/gshadow後にプロセスを開始しようとすると、次のエラーが発生します。

sg[2378]: Failed to crypt password with previous salt of group 'audio'

grpckしたがって、質問はこんな感じです。ニュースについて心配する必要がありますか?sgバグを修正してみんなが幸せになる方法はありますか?

答え1

sg/etc/group認証を提供しない、またはにリストされているパスワードを入力するか、に記載されているグループにプライマリグループを切り替えることで、プライマリグループを別のセカンダリグループ(たとえば、ユーザーにリストされているグループ)に切り替えることができます。したがって、「パスワードを入力する必要はありません」と「このグループのメンバーではありません」の使用は矛盾します。/etc/group/etc/group/etc/gshadowsg

ユーザーがグループに自由に切り替えることができる場合は、グループのメンバーにならないようにすることは意味がありません。唯一の利点は、グループを訪問したときに録音することです。

試している構成(ユーザーはリストに表示されますがgshadowリストには表示されませんgroup)はサポートされている構成ではありません。それがあなたが望むものに近いものを提供するという事実は、実際に私にバグのように感じます。gshadowリストにないグループのメンバーシップは付与されてはいけませんgroup。これ手動「あなたは、と同じユーザーリストを使用する必要があります」というフレーズ/etc/group。この推奨事項に違反する場合は、合理的または移植可能な動作を期待しないでください。

ユーザーがグループで特定のコマンドを実行および記録できるようにするには、sudo を使用できます。visudo次の行を実行して追加します。NOPASSWDユーザーが心配する可能性がある類似していない状況の後:

morfik ALL = (morfik:audio) NOPASSWD: pulseaudio

関連情報