shutdown / reboot / suspend / hibernateを無効にする方法


12

GNOMEを搭載したUbuntu 10.04 LTSデスクトップPCを使用しています。

どうすればGNOMEで、またはrootでさえも再起動/シャットダウン/サスペンド/休止状態機能を完全に無効にできますか?ルートが「reboot」コマンドまたは「pm-suspend」コマンドを発行するため、何も実行されず、マシンは起動します。これらの基本的な「機能」を完全に無効にするにはどうすればよいですか?


私は知らないよ?キオスクとして?あなただけの削除shutdownpm-suspendから/sbin//bin/
Amith KK

それらのファイルはキャッシュ内にある可能性がありますか?それらを削除すると、GNOMEでもリブート/シャットダウン/サスペンド/ハイバネーション機能が永久に禁止されますか?
ランスベインズ

はい、おそらくそうするでしょう@Lance Baynes
Amith KK

回答:


15

これらのアクションへのユーザーアクセスは、polkitによって制御されます。特に、次のアクションに対応しています。

  • org.freedesktop.consolekit.system.stop
  • org.freedesktop.consolekit.system.restart
  • org.freedesktop.upower.suspend
  • org.freedesktop.upower.hibernate

これらのアクションはすべて、アクティブなローカルユーザーに対してデフォルトで許可されています(ただしconsolekit、最初の2つのアクセス許可は、システムにログインしている単一のユーザーがいる場合にのみ機能します)。

これらのアクションを無効にするには、次の/etc/polkit-1/50-local.d/disable-shutdown.pklaようなファイルを作成します。

[Disable shutdown/whatever]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no

これにより、これらのアクションが完了しなくなります。これらのポリシーファイルの詳細については、を実行してくださいman pklocalauthority

rootただし、制限しようとしている場合、これはささいな不便にすぎません。定義によりroot、従来のUNIXの任意アクセス制御システムによる無制限のアカウントです。完全なrootアクセス権を与えたユーザーを信頼できない場合、システムをシャットダウンするだけでなく、より大きな問題が発生します。

Ubuntuの以降のバージョンでは、誰かが互換性を壊すことにしたことに注意してください。14.04でlightdmからのシャットダウン/再起動を無効にする方法で回答したように?アクションに変更しているようだ「org.freedesktop。login1 .reboot」(と-のように)。

たとえば、14.04で次の行を/etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pkla機能として追加します。

[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no

さらに、このメソッドはGUIから発行されたreboot / etcコマンドのみをブロックすることに注意してください。コマンドラインからのリブート/ etcコマンドをブロックするには、molly-guardを使用することができます- ルートを含むすべてのユーザーのシャットダウンコマンドの無効化で説明されているように-結果?


3
Ubuntu 13.10での動作を停止しました!!!
ガブリエレ

@GabrieleV login1を含むバージョンは13.10で動作するのでしょうか?私は14.04でそれをテストしました-そして、できればCanonicalの誰もが楽しみのためにすべてのリリースでpolkitの後方互換性を壊しません。
アクティビティを減らす

別のデータポイントとして、新しいUbuntu 18.04.1 LTSでこれを正常に使用し、シャットダウンと再起動を禁止しました(ただし、休止状態とサスペンドは許可しました)。これらの「login1」名を使用する必要があることに注意してください。「halt」および「halt-multiple-sessions」も無効にしたこと。/usr/share/polkit-1/actions/org.freedesktop.login1.policyでこれらのアクションを見つけたので、私はそれをしました。最後に、Ubuntu 18.04のgdm3 UIでは、確認ダイアログのボタンは非表示ではなく、単に効果がありません。
MarnixKlooster ReinstateMonica

6

molly-guardのインストールを検討してください。

sudo apt-get install molly-guard

このパッケージは、システムのホスト名を入力するようにインタラクティブにプロンプ​​トを出すことにより、意図しないシャットダウン/リブート/サスペンド/休止状態を防ぎます。

ただし、シャットダウン/リブート/サスペンド/休止状態を完全に無効にするようにmolly-guardを構成するのは簡単です。/etc/molly-guard/run.d/99-prevent-allに、これを含む実行可能ファイルを作成するだけです:

#!/bin/sh
exit 1

コマンドラインから発行されたコマンドに対してのみ保護し、GUIから発行されたshutdown / reboot / suspend / hibernateはそれをバイパスしていることに注意してください。再起動を使用してGUIもブロックするには、polkitルールを使用できます


これは、管理者が作業を行い、他のすべてのユーザーがしばらくシャットダウンしないようにする必要があるマルチユーザーコンピューターに適したソリューションです。
アレクシスウィルク

1
コンソールから動作しますが、molly-guardが設定されている場合(および「常に確認する」に設定されている場合でも)、シャットダウンはGNOMEから開始するときに確認せずに続行します(3.4)。
1

ええ、これはもう機能していません... 13.10以降、おそらく13.04。
アレクシスウィルケ14年

3

警告! ここにリストされているコマンドは使用するのが危険です。あなた自身のリスク以外でこれらを使用しないでください!

chmod -x /usr/sbin/pm-suspend
chmod -x /sbin/reboot
chmod -x /sbin/shutdown

4
答えを実証できますか?再起動やシャットダウンの可能性を排除したいとは思わないでしょう。
viyyer

このように休止状態を再び有効にするにはどうすればよいですか?
ガブリエルフェア

「chmod -x」ではなく「chmod + x」を使用してください
LanceBaynes

5
警告!これをしないでくださいこれらのコマンドは、シンボリックリンクにしている/bin/systemctlし、そこから実行可能なビットを削除します。これは、を制御する重要な実行可能ファイルservice SERVICE_NAME [stop|start|restart]です。システムはおそらくもう起動しません(システムをまったくシャットダウンできない場合)。
ダニエルF

これらのコマンドは、ubuntu VPSで実行しました。ホストからVPSをシャットダウンし、シャットダウンに失敗しました。SSHデーモンを強制終了しました。強制的に停止および開始し、SSHで問題なく実行できます。再起動/bin/systemctlが読み取り専用に設定された後-rw-r--r-- 1 root root
-kryo

0

OPの答えに基づいて、次のことができます

for file in $(/sbin/shutdown /sbin/reboot /usr/sbin/pm-suspend); do
    mv $file $file.bak && touch $file
done

これにより、シンボリックリンクの名前が変更され、空のファイルに置き換えられます。これにより、コマンドラインのシャットダウンが防止されます。GUIコマンドがそれを呼び出すか、独自の操作を行うかはわかりませんので、受け入れられた答えも行う必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.