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/gshadow
sg
ユーザーがグループに自由に切り替えることができる場合は、グループのメンバーにならないようにすることは意味がありません。唯一の利点は、グループを訪問したときに録音することです。
試している構成(ユーザーはリストに表示されますがgshadow
リストには表示されませんgroup
)はサポートされている構成ではありません。それがあなたが望むものに近いものを提供するという事実は、実際に私にバグのように感じます。gshadow
リストにないグループのメンバーシップは付与されてはいけませんgroup
。これ手動「あなたは、と同じユーザーリストを使用する必要があります」というフレーズ/etc/group
。この推奨事項に違反する場合は、合理的または移植可能な動作を期待しないでください。
ユーザーがグループで特定のコマンドを実行および記録できるようにするには、sudo を使用できます。visudo
次の行を実行して追加します。NOPASSWD
ユーザーが心配する可能性がある類似していない状況の後:
morfik ALL = (morfik:audio) NOPASSWD: pulseaudio