우분투에서 sudo를 다시 얻는 방법?


12

나는 이것을했다 :

sudo chown -R myname /usr/

이제이 sudo오류로 인해 명령을 사용할 수 없습니다 .

sudo : setuid 루트 여야합니다

그리고 이것을 읽었을 때이 파일의 소유자 /usr/bin/sudo는 루트가 아닙니다. /usr폴더 의 chown 때문에 이제 내 사용자 입니다.

많은 포럼과 블로그에서 사람들은 루트로 이것을 제안합니다.

# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo

... 그러나 이것의 문제는 루트로 로그인해야한다는 것입니다.하지만 su터미널에 쓸 경우 암호가 잘못 되었기 때문에 (실제로 사용자에게 추가 한 암호를 사용합니다) :

$ su
Password:
su: Authentication failure

sudo명령을 다시받을 수 있습니까?

편집 : 내 우분투는 Mac OS X의 Paralells에 있습니다.


"내 사용자에게 추가 한 비밀번호를 사용합니다"는 무슨 뜻입니까? 를 사용할 때 와 같은 사용자 비밀번호 가 아닌 루트 비밀번호를su 묻는 메시지가 표시 됩니다 . 이 컴퓨터의 루트 암호를 알고 있습니까? sudo
Caleb

아니요, 추가하거나 수정할 필요가 없습니다. 기본값이 있습니까?
Adam

단일 사용자 모드로 재부팅해야합니다. 어떤 배포판을 운영하고 있습니까?
Gilles 'SO- 악한 중지'

1
궁금한 점이 있지만 무엇을 수행하기로 결정했는지는 sudo chmod -R cirk:cirk /usr무엇입니까?
loosecannon

1
프로그램의 정확한 위치를 알지 못하여 / usr / 어딘가에 설치된 프로그램 전체 usr 폴더에서 chown을 사용하기로 결정했으며 멍청한 놈이기 때문에 모든 것을 다시 망쳤습니다 .P
Adam

답변:


5

모든 파일에 대한 올바른 소유권이 무엇인지 확인하기 위해 가이드로 사용할 수있는 유사한 시스템이있는 경우 복구 모드로 부팅하고 루트 셸로 드롭 한 다음 모든 파일의 올바른 소유권을 수동으로 복원 할 수 있습니다 파일 /usr.

가장 빠른 방법은 OS를 다시 설치하거나 백업에서 복원하는 것입니다.

우분투 또는 이와 유사한 경우 기본적으로 루트 암호가 없으므로 (계정이 비활성화되어 있기 때문에) 할 수 없습니다 su.


8
Woah는 그것을 쉽게 가져옵니다. 이것은 Windows 재설치가 항상 가장 쉽고 빠른 방법은 아니며 사람들에게 문제를 해결하는 방법을 가르치지 않습니다. 이 경우 그가해야 할 일은 파일 시스템을 LiveCD 또는 제안한 복구 모드 (디스트로에 따라 다름)와 같은 다른 환경에 마운트하여 쉽게 수행 할 수있는 작업을 취소하는 것입니다.
Caleb

@Caleb 파일 시스템의 주요 덩어리에 대한 권한을 완전히 휴지통에 버립니다. 그는 sudo를 망칠뿐만 아니라 자신의 게시물에 -R을 사용했다는 언급을 잊어 버렸습니다 (그렇지 않으면 sudo가 아닌 / usr 디렉토리 자체의 소유자 만 변경했을 것입니다). 또한 프로세스를 되 돌리는 방법을 설명했지만 시간이 많이 걸리고 힘든 작업입니다.
psusi

1
chown그렇지 않은 경우입니다 chmod. /usr폴더의 모든 것이 있어야하므로 클로버가 의미 root:root하는 chmod어려운 수정이 아니라 쉬운 수정이되어야합니다 .
Caleb

2
@Caleb / usr의 모든 것이 root : root가 아니어야합니다.
psusi

6
@Caleb chown은 setxid 비트를 재설정합니다. /usr루트가 소유하지 않은 파일이 몇 개 있습니다 . 더 많은 다른 그룹에 있습니다 (특히에서 setgid 프로그램 /usr/bin).
Gilles 'SO- 악 그만해라'

11

루트 수준의 액세스 권한을 부여하는 유일한 것에 대한 권한을 부여 했으므로 현재 소프트웨어 환경 외부에서이 문제를 해결하는 데 도움이 필요합니다.

가장 쉬운 방법은 배포판 용 LiveCD를 부팅하고 드라이브를 마운트 chmod하고 여기에 나열된 파일을 사용하여 파일 권한을 변경하는 것입니다.

루트 쉘을 얻기 위해 단일 사용자 모드로 부팅을 시도 할 수도 있습니다.

일반적으로 /usr/디렉토리의 모든 항목을 소유 root해야하므로 chown파산 한 것을 수정하기 위해 재귀 를 수행 할 수 있어야합니다 . ( 편집 : 당 @Gilles 분명히 실행 코멘트 chown는 그래서 나누기 대해 setuid 및 setgid 비트 다시 소유권을 수정하면 그 모두를 복원하기 위해 수동으로 기존 시스템에 비교해야합니다.)

그러나 매우 소수 는이어야합니다 4111. 추가 권한은 특별한 권한이지만 사용자로 실행할 때도 루트 권한으로 실행됩니다! sudo일부 명령 만이 권한 비트를 설정해야합니다. 시작 하기 chmod위해를 실행하지 않았다면 아마이 문제를 전혀 고칠 필요가 없을 것입니다 . 모든 권한이 이미 정확해야합니다. chmod모든 권한이 무엇인지 모른 채 큰 작업을 수행하지 마십시오 .


OS가 가상 머신에있는 경우 가능합니까?
Adam

그렇습니다. 런레벨 1 (grub / lilo에서 부팅 프로세스를 시작할 때 또는 부트 로더와 상관없이 수행 할 수있는 작업)을 사용하거나 LiveCD의 ISO 이미지를 부팅 장치로 사용하도록 VM을 설정할 수 있습니다.
Caleb

아담, 내가 그것을 다시 설치하기 전에, 나는 당신의 조언을 시도 할 것입니다 :)
Adam

좋아, 내가 LiveCD에 있다고 생각하는데, 이제 이것을 터미널에 써야합니까? sudo chown -R root /usr/?
Adam

나중에 시작하지만 /usrLivdCD에서는 시작하지 마십시오. 어딘가에 마운트하고 해당 경로를 따라 실행해야합니다 /mnt/mydrive/usr. 그런 다음 setuid 비트를 수정해야합니다 /mnt/mydrive/usr/bin/sudo. 그런 다음 livecd에서 / usr을 살펴보고 루트 이외의 다른 소유권이 있는지 확인하십시오. find /usr -not -uid 0일치하도록 변경하십시오. 그런 다음 다른 setuid 또는 setgid 비트가 설정된 것을 찾아서 일치하는지 확인하십시오. 실제 Ubunutu 시스템이 있다면 그와 비교하는 것이 가장 좋습니다.
Caleb

4

우분투 복구 모드에서 다음 명령을 입력하십시오.이 문제가 해결되었습니다.

mount -o remount,rw /
mount --all
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
restart

이것이 문제를 해결하기를 바랍니다. (또는 다른 사람의)

블로그 게시물 에서이 것을 찾았 습니다 .


2

이것은 다른 답변에서 제안한 것보다 훨씬 쉽습니다. 라이브 CD를 포맷, 재부팅 또는 사용할 필요가 없습니다.

su root # then enter your password to switch to root user
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
exit # to get back to the original user

이것이이 문제를 해결하는 가장 쉬운 방법입니다. 설명, sudo가 손상되었습니다 (손상된 용어가 잘못되었다는 것을 알고 있지만 작동하지 않으므로 sudo를 사용하지 않아야합니다)

  • 명령 1 (su root) 을 사용하여 sudo를 사용하지 않고 사용자를 root로 변경합니다.
  • 명령 2 (chown root : root / usr / bin / sudo && chmod 4755 / usr / bin / sudo)를 사용하여 sudo의 권한 / 소유권을 수정합니다.
  • 명령 3 (exit) 을 사용하여 원래 사용자에게 돌아갑니다.

이 방법을 Linux mint에서 테스트했습니다. 어느 시스템과 같은 우분투입니다. 이 방법은 다른 OS에서는 작동하지 않습니다. 그에 따라 답변을 업데이트합니다.

감사


알다시피, 기본적으로 루트 계정에는 암호가 없으므로 첫 번째 단계에서 암호를 제공하는 것이 불가능하며 작동하지 않기 su root때문에 sudo루트 암호를 설정할 수 없습니다
TitanFighter

1
고맙습니다.
Arun

1

사람들이 만드는 것보다 간단합니다. 다음을 시도하십시오 :

  1. 깨진 su명령을 사용하여 루트로 로그인하는 대신 현재 사용자로 로그 아웃하고 일반 디스플레이 관리자 (예 : 로그인 화면)를 통해 루트로 다시 로그인하십시오.
  2. 터미널에서 다음을 실행하십시오. chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

이렇게하면 sudo명령 이 수정되고 곧 다시 시작하여 실행할 수 있습니다.


0

su 또는 sudo없이 루트로 로그인하려면 pkexec를 사용할 수 있습니다.

pkexec su

이제 파일의 권한을 변경하십시오.

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