![sudo를 할 수 없습니다 - 우분투 20.04](https://rvso.com/image/768929/sudo%EB%A5%BC%20%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4%20-%20%EC%9A%B0%EB%B6%84%ED%88%AC%2020.04.png)
고전적인 오류
실수로 sudo chown -R ubuntu:www-data /
우분투 20.04 AWS EC2 서버에서 작업했습니다. 머신을 복구할 수 없어 새 머신을 다시 설치해야 한다는 내용의 게시물이 많이 있지만 이 서버에서 실행되는 postgres의 복사본을 가져오고 싶습니다. 현재 sudo로는 어떤 명령도 수행할 수 없습니다. 따라서 postgres를 시작하거나 phppgadmin을 통해 로그인할 수 없습니다.
우리는 다음을 수행했습니다.
- 인스턴스를 중지했습니다.
- 볼륨을 분리했습니다.
- 새 인스턴스를 만들었습니다.
- 볼륨을 첨부했습니다
- 볼륨을 마운트했습니다.
- 새 인스턴스에서 루트로 변경됨
- 했어
chown -R root:root /mnt/rescue
(이것을 , 등으로 변경root:ubuntu
함ubuntu:ubuntu
) - 했어
chmod -R 4755 /mnt/rescue
(또한0755
,ug-s
등을 했어) - 루트 종료
umount /mnt/rescue
- 구조 인스턴스 종료
- 볼륨 분리
- 손상된 시스템에 볼륨을 연결합니다. 기계는 새로운 소유자를 나타내지만 sudo는 작동하지 않습니다.
- 새 인스턴스 생성을 시도했습니다. 수정된 볼륨을 연결하고 /etc/fstab을 업데이트하여 인스턴스를 재부팅했습니다. 볼륨을 머신과 병합했습니다. 재부팅 후에도 여전히 동일한 문제가 발생하며 sudo를 실행할 수 없습니다.
확실히 머신을 다시 생성하거나 백업 및 복원할 수 있습니다. 그러나 일부 미션 크리티컬 데이터는 포스트그레스에 있습니다. sudo를 사용하거나 죽은 postgres에서 파일을 검색하려면 어떻게 해야 합니까?
우리는 끊임없이 오류에 직면하고 있습니다:
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
그러나 /usr 또는 /usr/bin 내부 어디에서나 ls -l을 수행하면 모든 파일의 전체 소유권은 ubuntu:ubuntu 또는 우리가 시도한 다른 조합으로 유지됩니다.
답변1
setuid 비트를 설정하고 sudo의 기본 권한(rws)인 루트에 대해 실행 가능하게 만드십시오.
chmod u+s /mnt/rescue/usr/bin/sudo
chmod +x /mnt/rescue/usr/bin/sudo
이는 시스템을 복원하는 데 유용할 수 있지만 권한과 소유권이 다른 다른 파일과 디렉터리가 많이 있으므로 개별적으로 설정하는 것은 지루할 수 있습니다.