“su”에 대한 비밀번호가없는 이유는 무엇입니까? "스도"문제


34

GUI를 사용하여 Ubuntu를 설치했으며 암호와 모든 것을 제공했습니다. 나는 과정을 복잡하게 기억하지 못한다. 그러나 걱정되는 것은 다음 비밀번호를 모른다는 것입니다.

$ su
Password: <the only password I've ever created on this machine>
su: Authentication failure

나는 무엇을 해야할지 모르겠다. 나는 곤경에 처하지 않지만 여기서 무슨 일이 일어나고 있는지 알고 싶습니다. 디렉토리에서 자신을 잠글 수도 있습니다.

starkers@ubuntu:~/Desktop$ mkdir foobs
starkers@ubuntu:~/Desktop$ sudo chmod 777 -R foobs
sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700
[sudo] password for starkers: <the only password I've ever created on this machine> 
starkers@ubuntu:~/Desktop$ cd foobs
bash: cd: foobs: Permission denied

조금 혼란 스러워요. 어떻게 이런 식으로 자신을 잠글 수 있습니까? sudo여기서 핵심 명령 이라고 생각 합니다. 그러나 foobs파일을 통해 가능한 한 열린 파일로 만들고 있는데 chmod왜 잠기지 않습니까?


6
chmod -R 777 whatever큰 보안 위험을 유발하지 않으려면 거의 수행하지 마십시오 .

1
@BroSlow 정상에 감사합니다. 이 질문 외에는 어떻게 디렉토리에 대한 읽기 권한을 안전하게 설정합니까? 666?
Starkers

1
확실히 더 좋지만, 당신이하려는 일에 달려 있습니다. 예를 들어 모든 사용자에게 모든 것에 대한 R / W 액세스 권한이 필요합니까? 그렇지 않다면 644와 같은 것을 할 수 있습니다 (당신을 제외한 모든 사람에게만 읽음). 그리고 일반적으로 재귀 chmod를 할 때 의도 한 파일 만 변경한다는 점에 매우주의를 기울 입니다.

1
@broslow 당신은 높습니까? 666은 1) 여전히 쓰기 가능하며 따라서 동일한 수준의 보안 위험이며 2) 실행 파일을 제거하므로 더 이상 해당 디렉토리에 chdir 할 수 없습니다.
Shadur

@Starkers 여기서보고있는 실제 보안 문제는 미친 이유 때문에 /var/lib/sudo세계 쓰기 가능으로 설정되어 있다는 것입니다. 이런 일이 일어나지 않아야하며 왜 그런지 알아 내야합니다.
Shadur

답변:


49

기본적으로 슈퍼 유저 ( root) 계정은 비활성화되어 있으며 비밀번호가 없습니다. 다음을 실행하여 만들 수 있습니다.

$ sudo passwd root

그런 다음 su이 비밀번호를 사용하여 루트로 로그인 할 수 있습니다.

에 관해서는 chmod, 올바른 명령은 다음과 같습니다

$ chmod 777 -R foobs

다음을 사용할 수도 있습니다.

$ sudo -i

비밀번호를 사용하여 루트로 로그인하려면 (위에 설명 된대로 루트 비밀번호를 작성하지 않음).


4
@Oli 질문을 편집하여 추가 할 수 있습니다 sudo su. 이것은 또한 터미널에서 영구적 인 권리를 부여합니다.
wakeup

13
사용하지 마십시오 sudo su. 환경에 문제가 생겨 파손될 수 있습니다. 대신을 사용하십시오 sudo -i.
strugee

20
루트 비밀번호를 설정하지 마십시오. 마십시오 하지 루트 암호를 설정합니다.
wchargin

4
chmod 777은 거의 항상 불량입니다 (스티커 비트는 제외됨 / tmp와 함께 사용됨). 이 답변은 보안 위험입니다. 또한 루트 비밀번호를 설정하는 것이 우분투를 사용하는 방식이 아닙니다. 보안 위험을 다시 초대합니다. neon_overload의 답변을 따르십시오.
Rinzwind

4
@WChargin 왜 루트 계정 / 비밀번호가없는 것이 좋습니다? 나는 아치 리눅스 사용자로서 정말로 궁금합니다.
Rob

67

1. 루트 비밀번호가없는 이유

로 루트로 로그인 할 수있는 수퍼 유저 계정의 비밀번호를 만들 있지만 su, 이것이 우분투 (또는 점점 더 많은 배포판)를 사용하는 일반적인 방법은 아니라는 점을 언급 할 가치가 있습니다. 우분투는 기본적으로 루트 로그인 및 비밀번호를 제공 하지 않기로 선택했습니다 . 대신 기본 Ubuntu 설치는 sudo수퍼 유저 권한을 부여 하는 데 사용 됩니다. 기본 우분투 설치에서 OS를 설치 한 사람에게는 기본적으로 "스도"권한이 부여됩니다.

전체 "sudo"권한을 가진 사람은 sudo자신의 명령 앞에 "슈퍼 유저로"무언가를 수행 할 수 있습니다 . 예를 들어 apt-get dist-upgrade수퍼 유저 로 실행 하려면 다음을 사용할 수 있습니다.

sudo apt-get dist-upgrade

웹에서 우분투에 대한 튜토리얼을 읽는 곳 어디에서나 sudo 사용법을 볼 수 있습니다. 이 작업을 대신 할 수 있습니다.

su
apt-get dist-upgrade
exit

sudo를 사용하면 sudo 액세스 권한이있는 사용자를 미리 선택하십시오. 그들은 자신의 암호를 사용하기 때문에 루트 암호를 기억할 필요가 없습니다. 여러 명의 사용자가있는 경우 루트 비밀번호를 변경하지 않고 모든 사람에게 새 비밀번호를 알리지 않고도 sudo 권한을 제거하여 수퍼 유저 액세스 권한을 취소 할 수 있습니다. sudo를 사용하여 사용자가 수행 할 수있는 명령과 해당 사용자에 대해 금지 된 명령을 선택할 수도 있습니다. 마지막으로 보안 위반이있는 경우 어떤 사용자 계정이 손상되었는지를 보여주는 더 나은 감사 추적을 남길 수 있습니다.

Sudo를 사용하면 수퍼 유저 권한으로 단일 명령을보다 쉽게 ​​수행 할 수 있습니다. 으로는 su, 당신은 영구적으로 사용 종료해야하는 수퍼 유저 쉘에 드롭 exit또는 logout. 이로 인해 사람들이 로그 아웃했다가 나중에 로그인하는 것보다 편리하기 때문에 필요 이상으로 수퍼 유저 셸에 머무를 수 있습니다.

sudo를 사용하면 다음 명령을 사용하여 영구 (대화식) 수퍼 유저 셸을 열 수 있습니다.

sudo su

... 명령에 sudo대한 수퍼 유저 권한을 부여 하므로 루트 암호 없이도 계속 수행 할 수 있습니다 su.

마찬가지로 su -로그인 쉘 대신 sudo su -또는 바로 가기를 사용할 수 있습니다 sudo -i.

그러나 그렇게 할 때 모든 명령에 대해 수퍼 유저 역할을한다는 것을 알아야합니다. 실수로 시스템에 손상을 줄 가능성을 줄이기 위해 필요 이상으로 수퍼 유저로 머 무르지 않는 것이 좋은 보안 원칙입니다 (시스템 없이는 사용자 소유의 파일 만 손상시킬 수 있음).

다만, 명확하게 당신은 할 수 있습니다 당신이 선택하는 경우, 루트 사용자에게 특별히 대신 일들이 방법을 수행하려는 경우, OLI의 대답 @에 설명 된대로 루트로 로그인을 허용하는 암호를 제공합니다. 우분투를 선호하는 우분투 협약에 대해 sudo알려주고 대안이 있다는 것을 알려 드리고자합니다.


2. chmod 777 -R 명령의 문제점

귀하의 질문에는 두 번째 부분이 있습니다 : 명령 관련 문제 sudo chmod 777 -R foobs.

첫째, 다음 경고는 컴퓨터에서 잠재적으로 심각한 보안 문제를 나타냅니다.

sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700

이것은 어떤 단계에서 /var/lib/sudo세계 기록 가능하도록 설정되었음을 의미합니다 . 나는 당신이 같은 명령을 사용하여 어떤 단계에서 이것을했다고 상상합니다 sudo chmod 777 -R /. 불행히도이 작업을 수행하면 시스템 전체의 모든 파일 권한이 거의 손상되었을 수 있습니다. 이 파일이 세계에서 쓸 수있는 권한으로 변경된 유일한 중요한 시스템 파일 일 가능성은 낮습니다. 기본적으로 지금은 쉽게 해킹 가능한 시스템을 보유하고 있으며 시스템을 다시 얻는 유일한 방법은 다시 설치하는 것입니다.

둘째, 사용중인 명령 :

sudo chmod 777 -R foobs

홈 디렉토리 내에서 파일을 조작 할 때이 경우에는를 ~/Desktop사용할 필요가 없습니다 sudo. 홈 디렉토리에 생성 한 모든 파일은 어쨌든 수정 가능해야합니다 (그렇지 않은 경우 재미있는 일이 발생합니다).

또한 파일 사용 권한을 재귀 적으로 또는 많은 수의 파일에서 수행하는 것과 같이 파일 사용 권한을 변경 한 결과에 대해 충분히 알고 있어야합니다. 이 경우 파일 쓰기 권한을 세계 쓰기 가능하도록 신중하게 변경합니다. 다른 사용자 나 컴퓨터의 버그가있는 서버 소프트웨어는 이러한 모든 파일과 디렉토리를 쉽게 덮어 쓸 수 있습니다.

해결하려는 모든 문제에 대해 적절한 해결책 chmod 777 -R [dir]아니라는 것이 거의 확실합니다 (위에서 언급했듯이 / var / lib의 시스템 파일 에도이 작업을 수행했다는 증거가 있습니다. 장소).

기본 몇 가지 기본 규칙 :

  • 홈 디렉토리, 데스크탑 등에서 자신의 파일을 엉망으로 만들면 sudo슈퍼 유저 권한 을 사용할 필요가 없습니다 . 만일 그렇게한다면, 당신이 잘못하고 있다는 경고 신호입니다.

  • 패키지가 소유 한 시스템 파일을 수동으로 수정해서는 안됩니다. 예외 : 당신은 그런 자신의 구성을 수정하여로 그 패키지, 문서화 방법으로 구체적으로 그 일을하지 않는 한 /etc. 이것은 파일 권한 변경에도 적용됩니다. 학습서 또는 문제점을 수정하려는 시도 sudo또는 수퍼 유저 권한이 필요 하고 단순히 / etc /의 구성을 변경 한 것이 아니라면, 잘못된 일을하고 있다는 경고 신호입니다.


멋진 설명 .. 엄지 손가락 .. :)
Saurav Kumar

7
"sudo -i"는 "sudo su"보다는 루트 쉘을 얻는 "공식적인"방법이라고 생각합니다.
Max

3
예, sudo -i이상 을 사용해야합니다 sudo su.
세스

sudo -i(또는 sudo su -) 보편적으로 더 좋지는 않지만 단지 다릅니다- 루트 사용자의 로그인 환경을 시뮬레이션하는 로그인 쉘을 시작합니다. 예를 들어 루트 사용자 의 .profile파일 또는 .login파일을 실행합니다. 셸의 환경이 수퍼 유저 권한에 발생하는 대화식 셸보다 루트 로그인 셸과 유사하게하려면 더 좋습니다. 쉘을 사용하는 경우 로그인 기반 쉘을 사용하는 것이 더 나을 수도 있지만, 그에 대한 해결책은 우분투입니다. 우분투는 주로 sudo수퍼 유저 권한으로 명령을 실행하는 데 사용하도록 설계되었습니다 .
thomasrutter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.