16.04에서 / sbin / shutdown, / sbin / reboot 등을 다시 sudo로 만드는 방법은 무엇입니까?


18

어떤 이유로 들어, 우리는 루트 (또는 사용하는 것으로 더 이상 필요하지 않는다 sudo) 실행 /sbin/shutdown, /sbin/reboot

그 실행 파일은 이제 /bin/systemctl일반 사용자로 모든 것을 처리하는 심볼릭 링크이기 때문 입니다.

그러나 루트 인증을 원 shutdown하고 reboot다시 요구하려면 어떻게해야합니까? 어떻게하면 되나요?


3
폴킷 규칙이라고 생각합니다. 필요에 따라 askubuntu.com/a/570969/158442 를 수정 하십시오 ( pkaction | grep login1다른 관심 규칙에 사용 )
muru

3
(관리자 권한이 필요한 규칙의 예 : askubuntu.com/a/744094/158442 )
muru

1
로그인 한 유일한 사람인 경우에만 해당되는 것이 아닙니다. 시스템에 다른 사람이 로그인 한 경우 루트 암호를 입력하라는 메시지가 표시됩니다.
ognjen

그것은 당신이 기대하는 대답이 아닐 수도 있지만, 다른 관리자가 '/ etc / sudoers'를 편집했을 때 비슷한 동작이 발생할 수 있습니다. 이것이 문제의 원인 인 sudo visudo경우 입력하여 문제를 다시 변경하고 해당 실행 파일의 경로가있는 줄을 확인할 수 있습니다.
Damien

답변:


5

Systemd는 실제로을 어떻게 처리합니까 shutdown, reboot및 기타 명령 및 할당 된 기본 권한은 허용됩니다. 이를 변경하려면 Polkit 규칙을 만들어야합니다. 다음을 포함하는 .pkla파일을 작성하십시오 /etc/polkit-1/localauthority/50-local.d(예 confirm-shutdown.pkla:).

[Confirm shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.*
ResultActive=auth_admin_keep

다양한 종료, 재부팅 등의 명령입니다, 폴킷 측면에서, 조치 org.freedesktop.login1, 예를 들어 org.freedesktop.login1.power-off, org.freedesktop.login1.reboot여기에 특정 문제가있는 기본 구성이며, 등 /usr/share/polkit-1/actions/org.freedesktop.login1.policy:

<action id="org.freedesktop.login1.power-off">
        <description>Power off the system</description>
        ...
        <defaults>
                <allow_any>auth_admin_keep</allow_any>
                <allow_inactive>auth_admin_keep</allow_inactive>
                <allow_active>yes</allow_active>
        </defaults>

활성 사용자는 전원을 끄거나 재부팅 할 수 있습니다.


0

chmod명령 을 사용할 수 있습니다 .

  • 루트에만 액세스하려면 다음과 같이 쓸 수 있습니다.

    chmod 700 directory/to/the/file
    
  • 루트와 sudo 그룹에 권한을 부여하려면 다음과 같이 쓸 수 있습니다.

    chmod 770 directory/to/the/file
    
  • 파일 그룹을 sudo에서 다른 사용자 (예 : 사용자 또는 관리자)로 변경하려면 다음을 입력해야합니다.

    chown owner:group directory/to/the/file
    
  • 되돌리려면 다음을 실행하십시오.

    chown root:sudo filedirectory 
    

참고 : sudo이 명령 을 사용해야 하거나 루트 계정으로 로그인했을 수 있습니다


링크 권한을 변경하려고하면 대상 (이 경우 /bin/systemctl) 의 권한이 변경 되므로 chmod / sbin / shutdown을 실행하면 $ l 명령으로 확인 된대로 /bin/systemctl권한 bin/systemctl이 변경 될 것으로 가리키는 모든 링크에 영향을 미칩니다. ll /bin/systemct-rwx ------ 1 개 루트 루트 659848 1월 18일 16시 4분 / 빈 / systemctl *
장로 긱

다시 변경해야하는 경우 기본 권한은 다음과 같습니다.-rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl
Geek


-1

사용자가 루트 권한으로 스크립트를 실행 중인지 확인하는 스크립트를 만들 수 있습니다.
그런 다음 systemctl 명령을 실행하거나 오류를 반환합니다.

#! / bin / bash
if [ "$ (whoami)"! = "root"]; 그때
    echo "죄송합니다. 루트가 아닙니다."
    1 번 출구
그밖에
    (systemctl shutdown 명령)
fi

출처


4
루트가 아닌 사용자가 단순히이 스크립트를 우회하지 못하게하려면 어떻게해야합니까?
Robie Basak

-1

터미널에서 권한을 변경하십시오. wheel 또는 admin과 같은 특정 그룹에 의해서만 실행 가능하도록 만들 수 있습니다. 안타깝게도 (또는 아마도 운 좋게도) 파일은 하나의 그룹 소유권 만 가질 수 있으므로 chown은 자체적으로 작동하지 않습니다. "sudo chown root : wheel / sbin / shutdown"과 "sudo chmod g + x / sbin / shutdown"을 시도하십시오. 루트와 관리자 만이 파일을 실행 가능하게 만들며 sudoers는 암호를 입력해야합니다.


2
"wheel"그룹은 아치 리눅스와 다른 배포판의 일이지만 Ubuntu btw에서는 그렇지 않습니다.
바이트 사령관

2
이것은 효과적이지 않습니다. 사용자는 다른 곳에서 systemctl 바이너리를 다운로드하여 대신 실행할 수 있습니다.
Robie Basak

@ 로비, 당신은 모든 솔루션으로 할 수 있습니다. 전원 버튼을 누르고있을 수 있습니다. 내 솔루션은 그가 요구하는대로 작동합니다.
chevydog
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.