Arch Linuxでsystemdを使用すると、次のコマンドはすべてシンボリックリンクを指しますsystemctl
。
/usr/bin/telinit
/usr/bin/poweroff
/usr/bin/runlevel
/usr/bin/reboot
/usr/bin/halt
/usr/bin/shutdown
承認に関連する彼らの行動は混乱していると思います。
$ shutdown
Must be root.
$ halt
Must be root.
$ telinit 3
# Asks for Polkit authorization
承認poweroff
またはreboot
承認は要求されません。poweroff
実際にシステムをシャットダウンする代わりに、ノートブックはオンになっており、画面には無期限に電源が切れるというテキストが表示されます。
私はPolkitのルールを変更しませんでしたが、なぜそれがうまくいくのか疑問に思います。
- すべてのコマンドはルートではなく管理者です
wheel
。 /etc/polkit-1/rules.d
デフォルトのルールセットのみが含まれているようです。# tail /etc/polkit-1/rules.d/* // DO NOT EDIT THIS FILE, it will be overwritten on update // // Default rules for polkit // // See the polkit(8) man page for more information // about configuring polkit. polkit.addAdminRule(function(action, subject) { return ["unix-group:wheel"]; });
慎重に見てみると、、部品があるのに/usr/share/polkit-1/actions/org.freedesktop.login1.policy
yesに設定されています。しかし、そうではありません。これが理由であれば、なぜこれが起こりますか?poweroff
reboot
suspend
hibernate
allow_active
shutdown
ベストアンサー1
これは非常に複雑です。これらのコマンドを列挙順に説明します。
telinit
さまざまなパラメータは
telinit
さまざまな(他の)サブコマンドに直接変換されますsystemctl
。 ~によるとリモート初期化(8)(systemd パッケージのドキュメント):2、3、4、5
SysVランレベルを変更します。これは
runlevel2.target
、...のアクティブ化要求に変換され、、...runlevel3.target
と同じです。systemctl isolate runlevel2.target
systemctl isolate runlevel3.target
したがって、これらのコマンドはに変換され、
systemctl isolate
それ自体はpolkit操作によって制御されますorg.freedesktop.systemd1.manage-units
。この操作に対する権限はデフォルトで管理者認証が必要- アクティブセッション、非アクティブセッション、およびセッション外のすべてのプロセスに適用されます。(しかし、デフォルトでは、polkitは
wheel
グループ内のすべてのユーザーを管理者として処理するように構成されているため、自分自身を認証するように求められます。)halt
、、、poweroff
reboot
コマンド
poweroff
とreboot
タスクは2つのステップで行われます。- root以外のユーザーとして呼び出され、
logind
利用可能な場合はlogind
操作を実行するにはpolkit操作が必要ですorg.freedesktop.login1.*
。 - そうでなければほぼ同等か
systemctl poweroff
実行されてsystemctl reboot
いるが、ポルケットに連絡する必要はありません。
halt
似ていますが、常に2番目のパスに移動します(ほぼ同じですsystemctl halt
)。ログインして停止する方法はありません。「ほぼ同じ」に注意してください。そうすれば
poweroff
root以外のログインでreboot
root以外のログインでhalt
ルートでない場合、
「ルートである必要があります」というメッセージが表示されます。 polkitを介して認証する代わりに
org.freedesktop.systemd1.manage-units
。また、systemctl poweroff
またはを使用するとpolkitを介して認証systemctl reboot
できsystemctl halt
ます。これはバグかもしれません。- root以外のユーザーとして呼び出され、
shutdown
このツールは、遅延停止、一時停止、または再開をスケジュールするために使用できます。引数なしで呼び出すと、1分遅れを意味します。デフォルトの動作は電源を切ることです。 ~から閉じる(8):
時間文字列は、時間/分を表す「hh:mm」形式であり、終了実行時間を指定し、24時間形式で指定されます。あるいは、今からmまでの特定の時間を表す「+ m」構文を使用することもできます。 「now」は即時終了をトリガーする「+0」のエイリアスです。時間パラメータが指定されていない場合は、「+ 1」が暗示されます。
タイムアウトメッセージとウォールメッセージが指定されていない場合、または(#2を参照)のいずれかと
shutdown
同じです。poweroff
halt
reboot
タイムアウトまたはメッセージ月が指定されている場合は、
shutdown
root 権限が必要です。poweroff
終了しないでください実際にそうしなければなりません。これはカーネルのバグかもしれません。