종료 / 재부팅 / 일시 중지 / 최대 절전 모드를 해제하는 방법은 무엇입니까?


12

그놈이 포함 된 Ubuntu 10.04 LTS 데스크탑 PC가 있습니다.

그놈 또는 루트를 사용하여 재부팅 / 종료 / 일시 중지 / 최대 절전 기능을 완전히 비활성화하려면 어떻게해야합니까? 따라서 루트는 "재부팅"또는 "pm-suspend"명령을 수행하여 아무 작업도 수행하지 않으며 시스템이 계속 작동합니다. 이러한 기본 "기능"을 완전히 비활성화하려면 어떻게해야합니까?


나는 몰라? 키오스크로서? 당신은 제거 shutdown하고 pm-suspend에서 /sbin//bin/
Amith KK

그 파일들은 캐시에있을 수 있습니다. 이들을 제거하면 그놈에서도 재부팅 / 종료 / 일시 중지 / 최대 절전 기능이 영구적으로 허용되지 않습니까?
LanceBaynes

예, 아마 그렇게했을 것입니다
@Lance

답변:


15

이러한 조치에 대한 사용자 액세스는 polkit에 의해 제어됩니다. 특히 다음 조치에 해당합니다.

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

이러한 모든 작업은 기본적으로 활성 로컬 사용자에 대해 허용됩니다 ( consolekit시스템에 단일 사용자가 로그인 한 경우에만 처음 두 권한이 작동하도록 제한 함).

이러한 작업을 비활성화하려면 다음 /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액세스 권한 이있는 사용자를 신뢰할 수없는 경우 시스템을 종료하는 것보다 더 큰 문제가 있습니다.

이후 우분투 버전에서는 누군가가 호환성을 깨기로 결정했습니다. 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에서 실행 된 재부팅 / etc 명령 만 차단합니다. 명령 줄에서 재부팅 / etc 명령을 차단하려면 모든 사용자에 대해 shutdown 명령 비활성화, 루트 결과에 설명 된대로 molly-guard를 사용할 수 있습니까?


3
Ubuntu 13.10에서 작동이 중지되었습니다 !!!
GabrieleV

@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

이 패키지는 시스템의 호스트 이름을 입력하라는 대화식 메시지를 표시하여 의도하지 않은 종료 / 재부트 / 일시 중지 / 최대 절전 모드를 방지합니다.

그러나 shutdown / reboot / suspend / hibernate를 완전히 비활성화하도록 molly-guard를 구성하는 것은 쉽지 않습니다. /etc/molly-guard/run.d/99-prevent-all에 실행 파일을 작성하십시오.

#!/bin/sh
exit 1

명령 행에서 실행 된 명령, GUI에서 실행 된 shutdown / reboot / suspend / hibernate가 명령을 무시하는 것만 보호합니다. 재부팅을 사용하여 GUI를 차단하려면 polkit 규칙을 사용할 수 있습니다 .


이것은 관리자가 작업을 수행하고 다른 모든 사용자가 잠시 동안 종료되지 않도록해야하는 다중 사용자 컴퓨터에 적합한 솔루션입니다.
Alexis Wilke

1
콘솔에서 작동하지만 molly-guard가 있고 '항상 묻기'로 설정되어 있어도 그놈 (3.4)에서 시작할 때 묻지 않고 종료가 진행됩니다.
Jan

예, 더 이상 작동하지 않습니다. 13.10 이후, 아마도 13.04 일 수 있습니다.
Alexis Wilke 3

3

경고! 여기에 나열된 명령은사용하기에 위험 합니다. 자신의 위험을 제외하고는 사용하지 마십시오!

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

4
답을 입증 할 수 있습니까? 나는 그가 재부팅과 종료의 가능성을 없애고 싶었다고 생각하지 않는다.
viyyer

어떻게 이런 식으로 최대 절전 모드를 다시 활성화 할 수 있습니까?
Gabriel Fair

"chmod -x"가 아닌 "chmod + x"사용
LanceBaynes

5
경고! 이 명령을 수행하지 마십시오. 이 명령은 심볼릭 링크되어 /bin/systemctl있으며 실행 가능 비트를 제거합니다. 이것은 또한 제어하는 ​​중요한 실행 파일입니다 service SERVICE_NAME [stop|start|restart]. 시스템이 더 이상 부팅되지 않을 것입니다 (시스템을 전혀 종료 할 수있는 경우).
Daniel F

우분투 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.