GNU/Linux >> Linux の 問題 >  >> Linux

Linux – Gnomeはルート権限なしでどのように再起動しますか?

Linuxカーネル開発の本を読んでいます。第5章「システムコールの実装」77ページにあります

たとえば、capable(CAP_SYS_NICE)は、呼び出し元が他のプロセスの適切な値を変更する
機能を持っているかどうかをチェックします。デフォルトでは、
スーパーユーザーはすべての機能を所有し、非ルートは何も所有していません。
例として、reboot()システムコールを示します。その最初のステップが
呼び出しプロセスにCAP_SYS_REBOOTがあることを確認する方法に注意してください。その1つの
条件文が削除された場合、どのプロセスでも
システムを再起動できます。

ただし、Debian Sidでは、gnomeを使用するか、sudoまたはsuを使用せずに/ sbin / restartを実行することで、マシンを再起動できます。
これはどのように可能ですか?

たぶんsystemctlで?

ls -l /sbin/reboot 
lrwxrwxrwx 1 root root 14 Jun 28 04:23 /sbin/reboot -> /bin/systemctl

編集:私のユーザーグループ

[[email protected]:~]$ groups 
damian sudo wireshark bumblebee

編集2:systemctlパーミッション

[[email protected]:~]$ ls -l /bin/systemctl 
-rwxr-xr-x 1 root root 626640 Jun 28 04:23 /bin/systemctl

承認された回答:

これは、polkitと呼ばれる承認マネージャーを介して行われます。 :

polkitは、特権プログラム( "MECHANISMS")が非特権プログラム
( "SUBJECTS")にサービスを提供することを目的とした承認APIを提供します。多くの場合、何らかのプロセス間通信
メカニズムを介して使用されます。

systemdを使用 およびpolkit 非リモートセッションのユーザーは、電源関連のコマンドを発行できます。すべてのpolkitを一覧表示できます 登録されたアクションとpkactionでそれらの詳細を取得します (引数なしで呼び出されると、すべてのアクションIDが一覧表示されます。)
この特定の場合、アクションIDはorg.freedesktop.login1.rebootです。 したがって、実行する場合:

pkaction --action-id org.freedesktop.login1.reboot --verbose

出力は次のようになります:

org.freedesktop.login1.reboot:
  description:       Reboot the system
  message:           Authentication is required for rebooting the system.
  vendor:            The systemd Project
  vendor_url:        http://www.freedesktop.org/wiki/Software/systemd
  icon:              
  implicit any:      auth_admin_keep
  implicit inactive: auth_admin_keep
  implicit active:   yes

ここで、active: yes アクティブなセッションのユーザーがシステムを再起動することを
許可されていることを意味します(polkitでの暗黙的な許可の詳細 ページ)。セッションがアクティブかどうかは、次のコマンドで確認できます:

loginctl show-session $XDG_SESSION_ID --property=Active
Active=yes

Linux
  1. Linux OS が KDE または Gnome 環境を使用しているかどうかを検出する方法

  2. グラフィカル サーバーなしで Linux システムを起動する方法

  3. root 権限なしで Linux にソフトウェアをインストールする

  1. Linux システムはどのくらい稼働していますか?

  2. Linux はリアルタイムクロックをどのように使用しますか?

  3. Linux で再起動をスケジュールするにはどうすればよいですか?

  1. Linuxでホスト名を変更する方法

  2. LinuxでユーザーのSudo権限を設定する方法

  3. Linuxでシステムの稼働時間を確認する方法