관리자 암호를 요구하지 않고 시스템을 종료하려면 어떻게해야합니까?


49

내 컴퓨터에 여러 사람이 로그인 한 경우 컴퓨터를 종료 할 때 Ubuntu에 수퍼 유저 인증이 필요합니다. 암호를 묻지 않고 컴퓨터를 종료 할 수 있도록하려면 어떻게해야합니까?


3
+1 종료하기 위해 암호를 입력하면 가정용 PC의 많은 사용자가 성가신 것으로 의심됩니다.
Richard Holloway

7
다른 사람이 로그인 한 상태에서 컴퓨터를 종료하면 열려있는 창은 어떻게됩니까? 공개 문서? 자동 저장하지 않는 것은 단순히 잃어버린 것 같습니다. 이것은 고려할 가치가 있습니다.
Torben Gundtofte-Bruun

"Ubuntu는 컴퓨터를 종료 할 때 수퍼 유저 인증이 필요합니다.", Ubuntu 11.10에서는 수퍼 유저 권한을 요구하지 않습니다. 메뉴를 사용하여 종료하면 로그 아웃으로 만 작동하고 다음 질문과 같이 로그인 페이지로 이동합니다. askubuntu.com/ q / 64073 / 11995 , 수퍼 유저 비밀번호를 요청하도록 Ubuntu를 구성하는 방법에 관심이 있습니까?
Mikl

1
이후 1404과의 경우 : 참조 askubuntu.com/questions/454039/...
Takkat

답변:


27

해결 방법이 필요하지 않습니다. 여러 사용자가 로그인 한 경우 시스템 종료 및 재부팅을위한 관리자 인증없이 종료 할 수 있도록 정책을 변경하면됩니다.

자주 사용하는 텍스트 편집기를 사용하여 /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy 파일을 편집하십시오. 루트 권한이 필요합니다.

다른 사람이 로그인 할 때 종료와 관련된 섹션 변경

  <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

  <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

다른 사람이 로그인 할 때 재부팅 관련 섹션

  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

여러 사용자가 로그인 한 경우 PC를 종료하고 재부팅 할 수 있습니다. 원하는지 여부는 다른 질문입니다.


1
다음은 policykit에 대한 추가 링크입니다. hal.freedesktop.org/docs/PolicyKit/polkit-conf.html
Richard Holloway

4
폴킷을 다시 설치하거나 업그레이드 할 때마다 변경 사항이 지워지지 않습니까?
Ryan Thompson

3
@Ryan, wiki.ubuntu.com/SecurityTeam/PolicyKitPermissions/12.04에 따르면 / etc / polkit-1 / localauthority에 .pkla 파일 을 작성할 수는 있지만 구문에 대해서는 확실하지 않습니다 . archlinux.org/index.php/PolicyKit#Authorities )
Joril

1
Flimm이 더 나은에서, 아래의 답변은 업데이트 중에 덮어 쓸되지 않습니다 askubuntu.com/a/251942/7472
Konstigt

1
재부팅하지 않고 규칙을 다시로드하는 방법은 무엇입니까?
Suncatcher

33

Richard Holloway의 답변 은 실제로 PolickKit 인증이 부여되는 방식이 아닙니다. 아래 /usr/share/polkit-1/actions에 설치된 파일 은 수정하지 않습니다. 대신에서 아래의 권한을 수정해야합니다 /etc/polkit-1/localauthority/50-local.d/.

이 질문에 대한 방법은 다음과 같습니다.

다음과 같이 이름이 지정된 파일을 작성 /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkla하고 편집하십시오 sudoedit.

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes

그런 다음 .pkla동일한 디렉토리에 다른 파일을 작성 하십시오. .pkla예를 들어로 끝나는 이름을 사용 allow_all_users_to_restart.pkla하고 다음 내용으로 채우십시오.

[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes

참고 문헌 :


이것은 매우 이상한 문제에 대한 해결책으로 판명되었습니다. PowerBroker를 설치 한 후 12.04에서 (Active Directory에 인증하기 위해) 사용자는 GUI를 사용하여 컴퓨터를 전혀 다시 시작하거나 종료 할 수 없었습니다 (lightdm 또는 indicator-session이 작동하지 않았습니다. 로그인 화면으로 돌아갑니다). 정책 키트, 모든 것이 효과가있었습니다.
korylprince


4
이제 이름이 변경되었습니다! 14.04부터 : / usr / share / polkit-1 / actions $ grep multiple * org.freedesktop.login1.policy : <action id = "org.freedesktop.login1.power-off-multiple-sessions"> org.freedesktop .login1.policy : <action id = "org.freedesktop.login1.reboot-multiple-sessions"> org.freedesktop.login1.policy : <action id = "org.freedesktop.login1.suspend-multiple-sessions"> org .freedesktop.login1.policy : <action id = "org.freedesktop.login1.hibernate-multiple-sessions">
Konstigt

1
16.04의 경우 @Konstigt의 변경 사항 /var/lib/polkit-1/localauthority/50-local.d외에도 ResultAny=yes파일이 있어야하고 두 파일 모두에 추가 줄 이 필요했습니다. 내가 얻는 유일한 경고 메시지는 Failed to set wall message, ignoring: Interactive authentication required.이지만 종료하고 다시 시작하면 이제 올바르게 작동합니다.
sigalor

@ sigalor의 코멘트 추가와 함께, 나를 위해 일 sysctl poweroff -i해야합니다 org.freedesktop.login1.power-off-multiple-sessions, 그래서를 제외하고 같은 라인에 별도의 파일을 만든Action=org.freedesktop.login1.power-off-multiple-sessions
wickedchicken

16

더 좋은 방법이 있습니다. dbus-send를 설치 한 경우 루트 권한으로 에스컬레이션하지 않고도 dbus 통해 종료 할 수 있습니다 .

문서가있는 페이지를 기억할 수 없지만 한 명의 Archlinux 사용자가 이것을 알아 냈습니다.

일시 휴업:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

재부팅 :

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Reboot

매달다, 중지하다, 뜨게하다:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:1

최대 절전 모드 :

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate

문안 인사.


와우 .. 해키 굉장하지만 해키 ...
자탄 교

1
11.10에서 종료 및 재부팅이 더 이상 작동하지 않는 것 같습니다
Mikl

@Mikl try install hal (sudo apt-get install hal)
Epeli

12

HAL은 이제 폐기되어 최신 Ubuntu 릴리스에 설치되지 않은 것 같습니다.

전원 상태를 관리 하려면 ConsoleKitUPower dbus 서비스를 사용해야합니다

일시 휴업:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

재시작:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

매달다, 중지하다, 뜨게하다:

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

최대 절전 모드 :

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate

Arch Linux 포럼에 감사합니다 .

이것은 현재 Precise와 Quantal에서 작동하지만 Freedesktop 포커스가 ConsoleKit에서 systemd로 이동 한 이후 얼마나 오래 지속되는지는 모릅니다. 정식적인 관심이 있는지 모르겠다 ...


4

이것은 14.04에서 작동합니다. Flimm 의 이전 IMO 정답 의 업데이트 된 변형입니다 .

sudo mkdir -p /etc/polkit-1/localauthority/50-local.d
sudoedit /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown_reboot_suspend.pkla 

이것을 안에 붙여 넣으십시오.

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-multiple-sessions
ResultActive=yes

[Allow all users to reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-multiple-sessions
ResultActive=yes

[Allow all users to suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-multiple-sessions
ResultActive=yes

[Allow all users to ignore inhibit of shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-ignore-inhibit
ResultActive=yes

[Allow all users to ignore inhibit of reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-ignore-inhibit
ResultActive=yes

[Allow all users to ignore inhibit of suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-ignore-inhibit
ResultActive=yes

1

다른 사용자가 터미널 창을 열고 reboot명령을 루트로 실행하지 않고 로그인하는 동안 재부팅 할 때 수퍼 유저 비밀번호를 묻는 프롬프트를 피할 수있는 방법이 없습니다 .

sudo reboot

그럼에도 불구하고 사용자 계정의 암호 프롬프트를 무시하도록 구성되지 않은 경우 암호를 묻는 메시지 sudo도 표시됩니다.

걱정하지 마십시오. 이것들은 좋은 것입니다. 재부팅은 드물고 간단한 관리자 암호 프롬프트로 실수로 자신을 호소합니다!


sudo를 입력 할 때 visudo를 편집하고 사용자에게 암호를 묻지 않도록 할 수도 있습니다.
Da1T

0

나는 이것이 커맨드 라인을 통해 그것을 할 때만 문제라고 생각합니다.

그렇다면 여기에 문제를 해결하는 데 도움 이되는 링크 가 있습니다.


아니요, 종료시 다른 사용자가 로그인 한 경우 관리자 비밀번호를 묻는 팝업 창이 있습니다. GUI 사용.
이사야


-1

gdm이 루트로 실행되기 때문에 GUI에서 루트없이 종료 할 수 있습니다. Gnome은 gdm에게 종료하도록 지시하고 gdm은 종료합니다.

스크립트로 비슷한 것을 할 수 있습니다. BASH를 사용하는 것이 얼마나 편리한 지 잘 모르겠지만 루트로 실행되고 특정 신호를 수신하면 shutdown 명령을 실행하는 스크립트를 작성할 수 있다고 생각합니다.

보안 문제가 발생할 수 있습니다.


그가 겪을 가능성이있는 문제는 다른 사람들이 여전히 로그인하고 종료 / 재시작을 활성화하기 위해 sudo 암호를 요구하는 프롬프트라고 생각합니다.
David Thomas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.