web-dev-qa-db-ja.com

ユーザースイッチャーメニューからシャットダウン、サスペンド、再起動、および休止状態を削除する

ローカルネットワークのルーターとして、および複数のユーザーがいる通常のデスクトップとして、デスクトップを使用しています。 Maverickを実行しています。時々、デスクトップユーザーの1人が誤って[シャットダウン]、[再起動]、[一時停止]、または[休止]を押すと、ランダムな時間にネットワークを修正する必要が生じます。コマンドラインから再起動およびシャットダウンする方法を知っています。 GUIインターフェースは必要ありません。

ユーザースイッチャーメニューからシャットダウン、サスペンド、再起動、および休止状態のオプションを削除するにはどうすればよいですか?私が残したいのは、「ロック画面」、「ゲストセッション」、ユーザーのリスト、および「ログアウト」だけです。

システム全体のソリューションが最適ですが、必要に応じて各ユーザーに1つずつ実行できます。

7
Azendale

オプション1:

gconf-editor をインストールし、gksu gconf-editorを実行し、/ apps/indicator-session /で再起動とシャットダウンを抑制します。

サスペンドとハイバネートについてはわかりませんが、<allow_active>/usr/share/polkit-1/actions/org.freedesktop.upower.policynoに変更するとうまくいくかもしれません。


オプション2:

インジケータセッション パッケージを削除し、デスクトップショートカットをログアウトして画面をロックします。

ログアウトするコマンドはgnome-session-save --logout-dialogで、画面をロックするにはgnome-screensaver-command --lockを使用します。

4
sergio91pt

Ubuntu 14.04および16.04(Unity)の場合

gsettingsを使用してインジケーターセッションメニューのほとんどのメニュー項目を無効にし、systemctlを使用してsystemdレベルでサスペンド機能自体を無効にします。ただし、このソリューションは完全ではありません。

メニュー項目を無効にする方法

まず、gsettingsコマンドを使用して関連キーを探し、grepコマンドでフィルターします。キーワードに「セッション」と「メニュー」を使用して、2回フィルタリングします。

$ gsettings list-recursively | grep session | grep menu
com.canonical.indicator.session suppress-logout-menuitem false
com.canonical.indicator.session force-restart-menuitem false
com.canonical.indicator.session suppress-restart-menuitem false
com.canonical.indicator.session suppress-shutdown-menuitem false
com.canonical.indicator.session user-show-menu true

次に、gsettingsを使用して、関連するキーを現在の値と反対の値に設定します。つまり、「false」が「true」になります。次のコマンドを1つずつ実行します。

$ gsettings set com.canonical.indicator.session suppress-shutdown-menuitem true
$ gsettings set com.canonical.indicator.session suppress-restart-menuitem true
$ gsettings set com.canonical.indicator.session suppress-logout-menuitem true
$ gsettings set com.canonical.indicator.session user-show-menu false

suppress-logout-menuitemキーを有効にするには、Unityデスクトップを再ロードする必要があります(ターミナルでunityコマンドを実行するか、HUDコマンドプロンプトを実行し、ログアウトする必要はありません)。

そして、それはほとんどのメニュー項目を隠すために必要なことです。

Before and after disabling menu items in indicator session

上記の手順に従って、「一時停止」メニュー項目を除くすべてのメニュー項目がインジケーターセッションメニューで非表示になりました。 未解決のバグ を隠せないことに関して Suspend メニュー項目。それを確認してサブスクライブすると、解決が促進される場合があります。

メニュー項目を直接抑制できない場合、次に簡単な解決策は、システム全体のレベルで一時停止を無効にすることです。

Ubuntu 14.04でサスペンドを無効にする方法(Unity、upstart)

14.04リリースでは、サスペンドを無効にする方法がいくつかあります。つまり、polkit-1またはpm-utilsの構成ファイルを編集します。しかし、どれが実際に適切に機能するかについての明確化はありません。

Ubuntu 16.04でサスペンドを無効にする方法(Unity、systemd)

16.04リリースでは、systemdで一時停止を無効にします Debian Wikiに記載されているように

$ Sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Created symlink from /etc/systemd/system/sleep.target to /dev/null.
Created symlink from /etc/systemd/system/suspend.target to /dev/null.
Created symlink from /etc/systemd/system/hibernate.target to /dev/null.
Created symlink from /etc/systemd/system/hybrid-sleep.target to /dev/null.

systemctlコマンドはすぐに有効になります。再起動などは必要ありません。

その結果、「一時停止」メニュー項目をクリックすると、システムはスリープ状態にならず、画面がブランクになってログイン画面に戻ります(「ロック画面」と同様の効果)。

サスペンド後の既知の問題の回避策

実際の中断がなくても、現在のセッションを再開すると同じ既知の問題が発生します。 中断後にネットワークマネージャが起動しない 。回避策は、サービスを再起動することです。

$ Sudo systemctl restart network-manager.service

ネットワークマネージャが再起動され、ネットワークが再び利用可能になります。

Ubuntu 16.04(Unity)で動作する上記すべてをテストし、VirtualBoxに新規インストールしました。

4
clearkimura

サスペンドおよびハイバネートの場合、パッケージの更新時に置き換えられるパッケージファイルを編集する代わりに、/etc/polkit-1/localauthorityのファイルを使用できます。 /etc/polkit-1/localauthority/90-mandatory.d/disable-suspend.pklaを含むファイルでサスペンドを無効にします:

[Disable suspend]
Identity=unix-user:*
Action=org.freedesktop.upower.suspend
ResultActive=no

これは、特に休止状態を無効にする設定を含むファイル/var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pklaに触発されています。

[Disable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=no

少なくとも、私はUbuntu 12.04で使用しています。

PolicyKitローカル機関の詳細: http://hal.freedesktop.org/docs/polkit/pklocalauthority.8.html