리눅스 종료 권한


8

데스크탑 환경 (우분투 또는 데비안)을 설치한다고 가정 해보십시오. 일반 사용자로서 시스템 메뉴의 아무 곳이나 버튼을 클릭하여 시스템을 종료 할 수 있습니다. 이를 수행하기 위해 수퍼 유저로 전환 할 필요가 없습니다.

그러나 동일한 데스크톱 환경에서 일반 사용자로 터미널 (예 : gnome-terminal)을 열고 입력하면

shutdown -h now

나는 프롬프트 할 것이다

shutdown: need to be root

종료하는 유일한 방법은 명령에 sudo를 추가하는 것입니다.

왜 이것이 그렇게 설명 할 수 있습니까?

감사합니다 KC


답변:


8

K.Chen이 묻는 질문은 CLI에서 수행 할 때 sudo 권한이 필요한 이유는 무엇이며 GUI에서 수행 할 때 그러한 권한이 필요하지 않은 이유입니다.

대답의 첫 번째 부분은 Gnome, KDE, Xfce, Mate, Cinnamon과 같은 데스크탑 환경을 디자인하는 사람들이 사용자의 작업을 단순화하려고 시도하고 sudo 자격 증명을 요구하지 않고 종료 및 재부팅을 구성한다는 것입니다. 우연히도 이는 프로그램 종료와 관련 이 없는 종료 순서가 있어야 함을 의미하며 , sudo 권한이 필요합니다 (그 방법은 없습니다).

각 DE가 어떻게하는지 자세히 알지 못하지만 루트 권한이 필요하지 않은 시스템을 종료하거나 다시 시작 / 종료 / 최대 절전 모드로 전환하는 방법이 있다는 것을 알고 있습니다. Arch Linux 포럼 게시물에서 원본 게시물 찾을 수 있습니다 . 본질적으로 hese 명령을 발행하는 것입니다.

정지

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

재부팅

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

dbus- 일시 중지

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

동면하다

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate 

내 생각에 GUI 버튼은 대략 이러한 명령을 사용합니다. 확실하게 코드를 살펴 봐야하지만 이것이 안전한 내기라고 생각합니다.


1
데스크탑 환경도 실행중인 시스템에 누군가 원격으로 로그인 한 경우이 명령을 발행하고 성공적으로 종료 / 재부트 / 일시 중지 / 최대 절전 모드로 전환 할 수 있습니까?
gerrit

이 질문에는 악의적 인 측면이 있습니다. 일부 재량에 따라야한다고 생각합니다.
MariusMatutiae

1
왜 악의적인가? 악용 될 수 있으면 sysops는이를 보호하는 방법을 알고 알아야합니다.
gerrit

나는 당신이 악의적이라고 말하지는 않지만이 정보를 악의적으로 사용할 수 있습니다. 난 이미 아마 내가 @Matteo처럼 했어야 ... 그것을 공유하는 데 후회하고
MariusMatutiae

5

이 디자인 결정의 이유는 기술적 인 것이 아닙니다 ( shutdownGUI에 권한이없는 명령이 있거나 암호가 필요할 수 있음 ).

  • 데스크탑 환경을 사용하는 경우 사용자가되어 가정 컴퓨터에 물리적으로 액세스 할 수 있습니다. 그런 다음 사용자가 전원 단추를 누르거나 전원 코드를 뽑는 것보다 깨끗하게 종료하는 것이 좋습니다.

  • 쉘을 사용할 때 사용자는 원격 사용자 일 수 있으며 원격 종료를 피하기 위해 더 많은 권한이 요청됩니다.

이는 규칙이 아니라 가정에 기반한 기본값 일뿐 입니다. 셸에 로컬 사용자가 있고 데스크톱 환경이있는 원격 사용자가있을 수 있습니다. 기본 동작을 선택하려면 그에 따라 시스템을 구성 할 수 있습니다.


@Matteo, 요점을 참조하십시오. 그러나 MariusMatutiae가 말했듯이 DE는 수퍼 유저 권한없이 종료하려면 "종료"이외의 다른 프로그램을 호출해야합니다. 그게 무엇인지 힌트가 있습니까?
K.Chen

1

Sudo (superuser do)는 시스템 관리자가 특정 사용자 (또는 사용자 그룹)에게 모든 명령과 인수를 기록하는 동안 일부 (또는 모든) 명령을 루트로 실행할 수있는 기능을 제공 할 수 있습니다. shutdown -h 명령 또는 init 0 명령을 사용하여 기계를 끌 수 있습니다. 그러나 두 명령 모두 실행하려면 루트 권한이 필요했습니다.

/ sbin에있는 명령을 실행하려면 루트 권한이 있어야합니다. shutdown 명령의 위치를 ​​찾으려면

터미널에서 종료 된 유형 입력하십시오 .

희망은 당신의 의심이 분명 :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.