"chmod -R 777 / usr / bin"뒤에 sudo를 수정하는 방법?


15

나는 들어가서 chmod -R 777 /usr/binsudo가 작동하지 않습니다.

라고 말합니다 sudo must be setuid root.

일부 조언은 온라인에서 실행되었다고 말했다 chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo.

입력 chown root:root /usr/bin/sudo하면 opened in readonly mode오류가 표시됩니다.


1
이러한 명령을 실행하려면 루트

마 노즈 쿠마르 :나요 내 대답의 방법 (당신이 허용로 표시 한) 사용자를 위해이 문제를 해결? Damien Roche와 Oli가 언급했듯이 명령 이 성공적으로 완료된 후에는이 방법이 실제로 작동하지 않는다고 확신합니다 . 마찬가지로 , 작업에 setuid를 루트이어야합니다. (폴킷 서비스를 사용하는 이유는 확실 하지 않지만 실제로는 그렇지 않습니다.) 그러나 다른 사람들이 이것이 효과가 있다고 들었습니다. chmod 명령이 완료 되기 전에 Ctrl + C를 눌렀 습니까? pkexecsudo chmod -R 777 /usr/binsudopkexec777
Eliah Kagan

여보세요. 이 방법은 실수로 성공적으로 실행 sudo chmod -R 777 /usr/bin한 후 root계정에 로그인 한 후에 만 나에게 효과적 입니다.
iHowell

답변:


10

승인 된 상태에도 불구하고 이제이 답변이 잘못되었다고 확신 합니다 . (동의에 대해 OP와 협의 한 후 곧 개선 할 수 있기를 바랍니다.) 나는 이것이 효과가 있다고 말하는 다른 사람들을 생각 나게하지만 그들의 문제는 적어도 약간 다르다고 생각합니다. 여기에 설명 된 방법은 + chmod -R 777 /usr/bin로 중단 되거나 완료되지 않은 일부 상황에 유용합니다 . 그러나 일단 그렇게되면, unsetuid'd이며 Damien Roche와 Oli가 올바로 언급 했듯이 , 보다 잘 작동하지 않습니다 .CtrlCpkexecsudo

Ubuntu 데스크탑 시스템에는 PolicyKit 이 설치되어 있으므로 pkexec깨진 sudo실행 파일 또는 sudoers파일 을 복구하는 데 사용할 수 있습니다 . 복구 모드로 부팅 할 필요가 없으며 라이브 CD로 부팅 할 필요가 없습니다. 다시 부팅 할 필요조차 없습니다.

이 경우 다음 명령을 실행하십시오.

pkexec chown root:root /usr/bin/sudo
pkexec chmod 4755 /usr/bin/sudo

자세한 내용은 이 질문 을 참조하십시오.


9
pkexec must be setuid root! 악몽이야!
Damien Roche

1
Damien이 지적했듯이이 접근법의 문제점 pkexec은와 똑같은 처지에 있습니다 sudo. 일반적으로 setuid이며에 있습니다 /usr/bin. 나는 그것을 테스트했고 이것은 후에 작동하지 않습니다 chmod -R 777 /usr/bin.
Oli

@DamienRoche, Oli :이 방법을 더 빨리 수정하지 않아서 죄송합니다 ! 둘 다 맞아 왜 pkexecsetuid root가 작동 해야하는지 잘 모르겠습니다 (다른 비 setuid 프로세스와 같이 polkit 데몬을 통해 작동하지 않습니까?) . OP (이를 수락 한 사람) 가이 답변에 옳거나 도움이되는 것이 무엇인지 밝힐 수 있는지 확인하기 위해 질문에 대해 언급했습니다. 이 게시물 상단에 임시 배너를 추가하여 더 이상 오도하지 않습니다. 경우 이 대답은 계속 존재, 개선 된 형태는 아마 배너 현재 몇 가지 정보를 통합 할 예정이다.
Eliah Kagan

su/ bin
FliiFe

@FliiFe 파일의 권한 (또는 소유권)을 수정 /usr/bin하려면 루트 권한 이 필요하지만 su루트 로그인은 기본적으로 비활성화되어 있기 때문에 대부분의 우분투 시스템 에서 루트 권한을 가질 수 없습니다 . 달리 sudo하고 pkexec사용할 때, su루트 쉘을 얻기 위해 또는 루트로 명령을 실행하려면 루트 암호, 자신의하지를 제공해야합니다. 그러나 우분투에는 root가 기본적으로 암호가 없습니다 (즉 , 빈 암호를 입력 해도 작동 하지 않는 root의 암호 기반 인증은 항상 실패 합니다). 자세한 내용은 RootSudo 를 참조하십시오.
Eliah Kagan

4

라이브 CD / Pendrive에서 실행할 때에도 chmod명령 앞에 접두사를 붙여야합니다 sudo. 따라서 단계는 다음과 같습니다.

  1. 라이브 CD / Pendrive에서 부팅
  2. 디스크가 이미 자동 마운트되었는지 여부와 위치를 확인하십시오. 그렇지 않은 경우 장착하십시오 (아래 참조).
  3. 사용 sudo chmod 0755 <path>권한을 조정

디스크가 마운트 된 위치를 알아내는 방법 : 터미널 창에서 mount(인수없이) 실행하십시오 . 마운트 된 모든 장치가 나열됩니다. type목록을 확인하십시오 - "실제 파일 시스템"을 사용하지 않는 모든 것을 건너 뛸 수 있습니다 (디스크는 아마도 ext3 또는 ext4를 사용합니다-proc, sysfs 등과 같은 것을 건너 뛸 수 있습니다). 뭔가 유망한 소리가 들리면 (처럼 보이는 경우)을 /dev/sda1 on /media/sda1 type ext3사용하여 내용 ls /media/sda1을 확인하십시오.

이 마운트되지 않은 경우에 확인할 수 있습니다 /dev(사용하여 디스크가 될 수있는 항목 ls /dev/ |grep '/dev/sd, 디스크 모양을해야 사용할 수있는 장치를 확인하기 위해 /dev/sdaX, /dev/sdbX등 - X 숫자 인 포함). 이것을 마운트 된 장치 목록과 비교하십시오. 없는 경우 마운트하여 내용을 확인하십시오 (위 그림 참조). 마운트하려면 먼저 마운트 포인트를 생성 한 sudo mkdir /mnt/mydisk다음 ( 예 :)을 사용하여 장치를 마운트 mount /dev/sda1 /mnt/mydisk하고을 사용하여 내용을 확인하십시오 ls /mnt/mydisk.

올바른 디스크를 얻으면 usr 디렉토리에서 권한을 다시 변경할 수 있습니다 sudo chmod 0755 /mnt/mydisk/usr.

이제 매개 변수를 chmod사용하여 원래 명령을 재귀 적으로 실행 한 경우 여전히 문제가있을 수 있습니다 -R. 이 경우 각 항목을 수동으로 수정하거나 새로 설치하기 위해 바로 갈 수 있습니다 ...


나는 마운트 지점을 만들려고하지만, 본인은 오류가있어 / MYDISK하지 존재 않는 점 mnt에 마운트 어떤 것을 함께 그냥 내가 쓴 기록을 위해 교체 할 MYDISK입니다 mount /dev/sda /mnt/mydisk에서root@Ubuntu:/dev#
VIN

a) mount 명령을 실행하기 전에 해당 마운트 지점 (디렉토리)을 작성하고 (설명 된대로) b) 선행 슬래시도 처리 했습니까? 시도해보십시오 mkdir -p /mnt/mydisk && mount /dev/sda1 /mnt/mydisk(파티션이 없다고 생각 /dev/sda하므로 파티션 번호도 놓쳤을 것입니다. 올바른 장치를 지정했는지 확인하십시오 (또는 마운트가 실패합니다)
Izzy

1

Mat가 맞다고 생각합니다 ./usr/bin에 비트를 추가하려면 루트 여야하지만 물론 sudo가 손상되었습니다. 루트 암호가 있으면이 암호를 사용하여 루트로 로그온 한 다음 위 명령으로 권한을 수정하십시오. 그러나 당신이하지 않으면 (그리고 나도 그렇지 않은 경우) 아마 다음과 같은 것이 가장 좋습니다 :

  • 리눅스 라이브 CD에서 부팅
  • 뿌리가되다
  • 위 시스템으로 파티션을 마운트
  • 그런 다음 터미널을 사용하여 해당 파일 시스템에 대한 권한을 정리하십시오.

루트는 항상 사용자 번호 0이므로 모든 시스템의 루트는 다른 파일 시스템에서 루트를 변경할 수 있습니다.


1

나는 많은 지식이 없다. 그러나이 단계는 내 컴퓨터를 다시 시작하지 않아도 문제를 해결했습니다. 다음과 같이하세요:

su root
<enter root password>
cd /usr
chmod -R 755 *

1
최소한 "cd"명령이 없습니다. 이렇게하면 루트에 대한 홈 디렉토리에서 "chmod"를 수행하게됩니다. 그것은 상황을 악화시킬 것입니다.
Rinzwind

thaks ... 내 대답을 편집 ... 나는 / usr 폴더에
Manu Mohan Thekkedath

2
암호가로 설정된 경우에만 작동하며 root이는 Ubuntu의 기본 구성이 아닙니다.
David Foerster

1

로컬 스크립트에 대한 권한을 설정하려는 시도에서 실수로 sudo 권한을 위반하고 소유권을 변경했습니다. 다음을 수행하여 sudo의 소유권을 루트로 다시 변경할 수있었습니다.

1 단계 : 전환 우분투 복구 모드 . 프로세스를 모르는 경우 /ubuntu//a/172346/223901 에서 답변을 참조하십시오.

2 단계 : 복구 모드에서 root-Drop to root shell prompt를 선택 합니다.

3 단계 : 다음 명령 수행

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

시스템이 정상적으로 부팅 될 때까지 기다리면 sudo의 소유권이 다시 root로 표시됩니다.

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