제 데스크탑 컴퓨터에 Ubuntu 20.04를 설치하였습니다. 그런데, 제 'cho' 라는 계정으로, sudo su라는 것을 입력하였을 때, 'cho'의 암호만 입력하면, root로 로그인을 할 수 있었습니다.

 

 

 cho로 sudo su를 수행했습니다. 적절한 인증을 거친 후에, root가 되었다는 것을 확인할 수 있는데요. 제가 쓰던 또 다른 환경에서는, 다른 유저로 sudo su를 했을 때, 'cho'라는 유저로 로그인을 하면, 실패를 하고 reported가 될 거라는 문구가 떴습니다. 왜 그럴까요? 이러한 의문을 해결하기 위해서, 이들을 관리할 법한 파일들을 보도록 하겠습니다.

 


 pwd 디렉터리로 가 보겠습니다.

 

 여기서 ls 명령어를 입력하면, 꽤 많은 파일과 폴더들이 나오는 것을 볼 수 있는데요. 이 중에, sudoers가 눈에 보이는군요. 이 파일을 보도록 하겠습니다.

 

 

 그러면, 이상한 영어와 이상한 설정들이 있는 것을 볼 수 있는데요. # 뒤에 있는 문구들을 유심히 볼 필요가 있습니다. 한 번 보면, root는 특별한 권한을 가진 존재라고 합니다. 그리고, admin의 멤버들은 root 권한을 가질 수 있다? 문맥상으로는 그럴 듯 해 보입니다. 그리고 밑에 보시면, Allow ~ sudo라는 것이 보입니다. 

 

 이것은, 어떠한 command를 execute 하기 위한 sudo를 allow 한다는 것을 의미합니다. 그러면, 이런 의심을 해 봅시다. 'cho' 라는 유저가 특정한 그룹에 속했는데, 그 '특정 그룹'이 sudo를 할 수 있는 권한을 가지면?

 

 

 ubuntu 20.04에서 그룹 파일은 etc의 group입니다. 여기서 cho 라는 패턴만 뽑겠습니다. 그러면, cho가 어떠한 그룹에 속해있는지 나와 있는데요. 이 중에, sudo가 눈에 들어오는군요.

 

 

 deluser 명령어를 보면, 제일 밑에 deluser user group이 있습니다. 이것은 user를 group에서 제거하라는 명령입니다.

 

 deluser cho sudo라고 쳐 보겠습니다. 이 명령은 cho를 sudo 그룹에서 제거하는 명령입니다. 이제 sudo su로 루트 권한을 획득해 보겠습니다.

 

 

 그러면, cho의 암호를 입력하라고 뜹니다. cho의 비밀번호를 입력하면, cho is not in the sudoers file이라는 에러가 뜹니다. 이는, cho가 sudo를 실행할 수 있는 그룹에 속하지 않기 때문입니다. 즉, 이 명령을 실행을 할 권한이 없습니다. 해당 명령어를 cho가 수행할 권한이 없다면, 거부해야 합니다. 당연하게도, sudo shutdown도 먹히지 않습니다.

 

 

 shutdown을 하기 위해서는 루트 권한을 획득해야 하는데, cho는 sudo 그룹에 없으니, 당연한 결과입니다.

 

 

 

 당연하게도, su 명령어를 입력하고, 루트의 비밀번호를 입력해야 합니다.

 

 

 group 파일에서 'cho'라는 패턴을 찾아 보았습니다. 아까와 다른 점이 하나 있다면, sudo 그룹에 cho가 없다는 것입니다.

 


 adduser는 그룹에 유저를 추가할 때에도 쓰는 명령입니다. 시놉시스의 5번째 단락에 adduser user group이 보이는데요. 이것은 유저 user를 그룹 group에 추가합니다.

 

 

 그러면, adduser cho sudo는 무엇을 의미할까요? 그룹 sudo에 cho를 추가하라는 의미입니다.

 

 

 이렇게 한 후에, 세션을 끊고, 다시 접속해서 유저 cho로 sudo su를 수행하면 먹히는 것을 볼 수 있습니다. Centos나, fedora 등은 sudo 권한을 줄 수 있는 그룹이 다를 수 있으니, sudoers 파일을 보면 되겠습니다.