기본값을 바꾸려는 이유
보안 면에서, 뭐든 기본값은 좋지 않습니다.
사실 "미지(몰?루)에 의한 보안"은 그다지 좋은 방법이 아닙니다. 해당 정보를 알기만 해도 뚫을 수 있으니까요.
하지만 몇몇 기본 설정은 바꾸는 게 마음에 안심이 됩니다. 기본 ID / 기본 패스워드를 마구 입력해보는 기계들로부터는 피할 수 있으니까요...
기본값 바꾸기: 사용자 생성
사용자 생성은 useradd 명령을 사용합니다.
관리자 권한으로 실행해야 해서, sudo 도 앞에 붙여야 합니다.
sudo useradd -m -s /bin/bash 사용자명
- -m: 홈 폴더를 만듭니다.
- -s: "로그인 셸"을 지정합니다. 이걸 뭐라고 설명해야하지... "명령줄을 구동해주는 도우미 프로그램" 이라고 합시다. bash가 가장 많이 쓰이고 자료가 많습니다. 이 프로그램은 /bin/bash 경로에 있습니다.
저는 닉네임이 ch 라서, 계정 이름도 보통 ch로 지어요. 이 이름은 따라하지 마세요. 저만 ch 할거에요.
실행 예시
ubuntu@my-firefish-instance:~$ sudo useradd -m -s /bin/bash ch ubuntu@my-firefish-instance:~$ ls /home ch opc ubuntu ubuntu@my-firefish-instance:~$ sudo -iu ch ch@my-firefish-instance:~$
- opc: 오라클이 올려준 우분투에는 opc라는 계정이 기본으로 있고, 오라클 클라우드가 이 서버를 관리할 때 사용합니다. 냅둬도 돼요.
- 홈 폴더: /home/opc
- ubuntu: 기본 계정
- 홈 폴더: /home/ubuntu
- ch: 방금 만든 계정 (제 마음대로 이름을 지었습니다)
- 홈 폴더: /home/ch
사용자 전환 (sudo -iu), 로그아웃 (exit)
위에서 설명이 빠진 명령어도 있죠.
sudo -iu 사용자명
- -i 혹은 --login: 지정된사용자로 로그인합니다
- -u 사용자명 혹은 --user 사용자명: 해당 사용자가 되어 명령을 실행합니다.
사용자명으로 로그인하는 명령어입니다. 위를 다시 확인해보면, 로그인한 뒤로
사용자명@서버이름:현재경로$
로 바뀌었죠?
방금 만든 유저는 어떠한 권한도 없어서, 둘러보는 것 외에는 아무것도 못 합니다. exit 명령어를 실행해서, 다시 원래 사용자로 돌아옵시다.
실행 예시
ch@my-firefish-instance:~$ exit logout ubuntu@my-firefish-instance:~$
usermod: 사용자에게 sudo 그룹 부여하기 (user modification)
이제, 방금 만든 계정에 관리자 권한을 줘봅시다.
리눅스에는 사용자 외에도 "그룹"이라는 개념도 있습니다.
그 중에서도 우리가 관심있는 건 "sudo" 라는 그룹입니다. 이 그룹에 속해있으면 컴퓨터에서 관리자 권한을 휘두를 수 있습니다. usermod 명령어로 sudo 그룹에 방금 만든 사용자를 추가해볼까요?
sudo usermod -aG sudo 사용자명
- -aG (additional group): 해당 사용자에 추가 그룹을 부여합니다. 기존에 설정되었던 그룹은 냅두고 그룹을 추가하는 방법입니다. 기존에 그룹이 있었냐구요? 기본적으로 사용자명과 동일한 이름의 그룹이 생성되는 걸로 알고있어요.
- 앞의 sudo는 명령어구요, 뒤의 sudo는 그룹 이름입니다.
실행 예시
ubuntu@my-firefish-instance:~$ sudo -iu ch To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. ch@my-firefish-instance:~$ groups ch sudo ch@my-firefish-instance:~$
한번 sudo ls 를 실행해볼까요?
실행 예시
ch@my-firefish-instance:~$ sudo ls [sudo] password for ch: Sorry, try again. [sudo] password for ch: Sorry, try again. [sudo] password for ch: sudo: 3 incorrect password attempts ch@my-firefish-instance:~$
헉 암호가 뭐지!
passwd: 만든 계정의 암호 설정하기
사실 아까 만든 계정에 암호를 설정한 적이 없죠. "exit"으로 나가서 ubuntu 계정으로 돌아온 뒤, passwd 명령어로 사용자의 암호를 설정합시다.
sudo passwd 사용자명
실행 예시
ch@my-firefish-instance:~$ exit logout ubuntu@my-firefish-instance:~$ sudo passwd ch New password: Retype new password: passwd: password updated successfully ubuntu@my-firefish-instance:~$
이제 다시 새로 만든 사용자로 바꿔서 관리자 권한이 있는지 확인해볼까요.
# sudo로 ls 명령어가 실행되면 관리자 권한이 있는 것입니다. sudo ls
실행 예시
ubuntu@my-firefish-instance:~$ sudo -iu ch To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. ch@my-firefish-instance:~$ sudo ls [sudo] password for ch: ch@my-firefish-instance:~$
OK, 성공입니다.