sudo, su 및 pkexec를 사용하여 원격 서버에 대한 루트 액세스를 얻을 수 없습니다.

sudo, su 및 pkexec를 사용하여 원격 서버에 대한 루트 액세스를 얻을 수 없습니다.

저는 홈 서버로 용도를 변경한 오래된 Dell 컴퓨터에서 CentOS7을 실행하고 있습니다. 또한 원격 위치에서 SSH로 접속하여 모든 것이 원활하게 실행되는지 확인하고 랩톱을 rsync하는 등의 작업을 수행합니다. 즉, 문제가 발생하면 일반적으로 집에 기계를 재설정할 사람이 없습니다.

상태:

지난주 언젠가 sudo, su 및 pkexec와 같은 명령이 작동하도록 허용하는 무언가를 깨뜨린 것이 틀림없습니다.

Su는 내 루트 비밀번호를 수락하지 않으며 sudo는 오류를 표시합니다.

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

pkexec /bin/bash와 같은 것을 실행하려고 하는데 오류가 발생합니다.

pkexec must be setuid root

이것을 보고 나는 다음과 같이 했습니다.

[crlsmdrn@server ~]$ ls -l /usr/bin/sudo                                                                                                       

---x--x--x. 1 root root 143248 Jun 27 13:03 /usr/bin/sudo

그렇다면 컴퓨터를 다시 시작하지 않고도 원격으로 루트 셸을 얻을 수 있도록 sudo의 권한을 다시 4755로 설정하는 방법이 있습니까?

감사해요

답변1

복구 모드로 재부팅하지 않고도 sudo 권한을 재설정할 수 있었습니다! 이것이 내가 한 일입니다:

고맙게도 systemd에서는 polkit을 통해 인증하기 때문에 데몬을 다시 시작할 수 있습니다.

그래서 저는 홈 디렉터리에 다음을 포함하는 유닛 파일을 만들었습니다.

/home/crlsmdrn/sudo-reset.service:

[Unit]
Description=reset sudo

[Service]
Type=oneshot
ExecStart=/home/crlsmdrn/sudo-reset.sh

[Install]
WantedBy=multi-user.target

그런 다음 sudo-reset.sh라는 파일을 만들었습니다.

/home/crlsmdrn/sudo-reset.sh:

#!/bin/sh
chmod 4755 /usr/bin/sudo

그 다음에:

[crlsmdrn@server ~]$ chmod +x /home/crlsmdrn/sudo-reset.sh

다음으로 서비스를 활성화하고 실행합니다.

[crlsmdrn@server ~]$ systemctl enable /home/crlsmdrn/sudo-reset.service
[crlsmdrn@server ~]$ systemctl start sudo-reset-service

[crlsmdrn@server ~]$ sudo
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s]
            [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] file ...

그런 다음 sudo -s를 수행하고 bash 기록을 다시 살펴보며 어떤 권한이 손상되었는지 확인할 수 있었습니다. /usr/bin만 사용하는 것이 지루해 보였기 때문에 rpm --setperms -a를 실행했더니 권한이 수정된 것 같았습니다. .

이 작업을 수행한 후에는 서비스를 비활성화하는 것을 잊지 마십시오.

이야기의 교훈: 동일한 방식으로 작동할 것이라고 기대하지 않고 /usr/bin에서 chown -R root:root를 실행하지 마십시오.

관련 정보