팀원들한테 리눅스 서버 계정 만들어 줬다가 저런 에러가 떴다. 

일단 왜 저런 에러가 떴냐 하면....... 파일 권한 설정을 잘못해서 그런 것 같았음 

 

각 팀원들에게 슈퍼 유저 권한을 가지고 있는 사용자 계정을 생성해 주었는데 파일질라로 폴더 옮길 때 B 계정이 A 계정의 파일에 접근이 안 되는 거였다.

A-user 라는 사용자 계정과 B-user라는 사용자 계정이 있는 리눅스의 디렉토리 구조를 살펴 보면 

bin

boot

...

home

 ㄴ A-user 

 ㄴ B-user

var

 

이런 식으로 구성되어 있음 그러니까 home 폴더 안에 각각의 계정이 관리할 수 있는 폴더들이 있는 거죵...... A-user로 접속했을 때 A-user@ubuntu:~$ 이렇게 뜨는 ~ < 얘는 /home/A-user 라는 뜻이다 ㅇㅇ 

 

왜지? B 계정이 슈퍼 유저 권한을 가지고 있으면 A 계정의 폴더에도 들어가져야 하는 거 아닌가? 이런 생각을 가졌고 무지막지했던 나는 그대로 A-user 폴더와 B-user 폴더에 chmod 777 * 을 날려버린다 ㅋㅋㅋ 이러면 안 됩니다 여러분...... 왜 그러면 안 되는지는 저도 알고 싶지 않았습니다 

 

changing permissions of '폴더이름' 이라는 오류가 떴는데 대수롭지 않게 여기고 넘겼었는데 포트를 열어야 할 일이 생겨서 sudo 권한을 썼더니 sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set  이런 에러가 떴던 것이다...... root 계정으로 들어가서 작업을 하긴 했는데 이러면 안 되는 거 아시죠? 내가 사수가 있었다면 진짜 뒤지게 혼나지 않았을까 싶음 

 

그러다가 다른 팀원들도 sudo 에러가 생겨서 안 되겠다 고쳐야겠다 싶어서 구글링을 *나게 했다 

일단 원인은 chmod 권한을 전체에다가 뿌려버려서 root에 대한 sudo 권한이 꼬였던 것 같음 

/usr/bin/sudo는 uid 0이 소유해야 하고 setuid 비트가 설정되어 있어야 한다 < 라는 말이 sudo가 엑세스 권한을 잃었고 root로 아무것도 실행할 수 없다는 뜻임. sudo 루트 권한이 덮어씌워져서 sudo의 사용이 제한되었다는 것...... 

 

리눅스에서 UID는 User Identification 즉 권한 부여를 하기 위한 id임 리눅스의 총 권한을 가지고 있는 root 계정은 UID가 0으로 지정되어 있다. 즉 uid를 0으로 설정하면 모든 계정이든 root의 권한을 가질 수 있는 것이다. (또한 root 계정은 보안 검사를 하지 않는다고 함)

하지만 동일하게 지정하면 사용자 감시 추적이 중복으로 기록되어서 추적이 어려워진다는 취약점이 있기 때문에 보통 uid는 각각 다른 숫자로 부여된다고 한다...... 그리고 해킹 같은 것도 사용자 계정의 uid를 0으로 직접 하드코딩해서 넣게 되면 

구글링으로 이런 개념을 알게 되었지만 어떤 전공 책을 찾아야 이런 개념을 습득할 수 있을지 ㅠ 잘 모르겠다 좀 더 자세히 알고 싶은데 정보의 한계가 있음....... 

 

일단 해결법은 간단하다 

리눅스 grub에 들어가서 복구 모드로 셸 스크립트 작성하는 방법이 있었는데 복구 모드에 ptsd가 오던 나는 다른 방법을 찾기 시작함....... 방법이 있을 거야.....! 

 

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

cmd 창에 요걸 입력하면 되는데 루트 계정으로 접속을 해서 쳐야 한다 

처음에 모르고 사용자 계정으로 터미널에 입력을 하니까 chown: changing ownership of '/usr/bin/sudo': Operation not permitted

이런 오류가 떴음 

 

root@ubuntu:/home/user# chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
root@ubuntu:/home/user# exit

 

이렇게 아무 이상 없이 작동이 되나 싶었는데 다시 사용자 계정으로 sudo를 적용해 보니 

더보기

sudo: error in /etc/sudo.conf, line 0 while loading plugin "sudoers_policy"
sudo: /usr/lib/sudo/sudoers.so must be only be writable by owner
sudo: fatal error, unable to load plugins

또 이런 에러가 떴다 ㅡㅡ 

sudoers_policy 라는 거에 대해서 문제가 있나 봄 

다시 root 로 들어가서 

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

이 명령어를 입력했는데 이것도 잘 안 됐음...... 애초에 pkexec가 뭐야? 하 

 

다시 도전

chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
sudo -l

sudo -l을 입력하니까 해당 디스크립션이 뜸 

더보기

Matching Defaults entries for root on 우분투계정명:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User root may run the following commands on 우분투계정명:
    (ALL : ALL) ALL

저게 뜨면 아마 성공인 것 같다! 

sudo -l이 무슨 커맨드인 것인가....... -l이면 list인 건데 sudo list 했다고 왜 되는 건지는 잘 모르겠다 

 

아무튼 저 두 줄 명령어를 치고 사용자 계정에 들어와서 sudo 적용을 하니 정상적으로 작동함!