root
root
root..?
root
는 UNIX 혹은 그 이전 운영체제부터 사용되던 단어로 root directory
(/
) 에서 기인한다.
root
는 superuser
즉, 모든 권한을 가지고 있는 유저를 일컫는 말이다.
root
계정은 시스템의 모든 자원, 프로그램, 파일에 대해서 모두 접근이 가능하다.
무엇이 root를 특별하게 할까?
- Linux에서는
root
계정에 대해서 UID
를 0
으로 설정한다. (root
라는 사용자의 이름이 root
를 특별한 계정으로 만드는 것이 아니라, root
에 부여되어 있는 0
이라는 UID
가 root
계정이 superuser
의 역할을 하도록 한다.
- 즉
UID
가 0
인 유저는 root
와 동등한 권한을 갖는다!
root를 안전하게 이용하기
root
계정은 항상 비밀번호를 가지고 있어야하며, 관리자 이외에 공유해서는 안된다!
- 그래서 시스템이 설치될 때
root
의 비밀번호를 설정하도록 한다.
root
가 모든 권한을 갖고 있기 때문에 강력한 힘만큼 시스템에 위험하다!
- 해커들은
root
에 대한 권한을 얻고싶어하기 때문에, root
에 대해 직접 접근하도록하지 못하도록 하고, sudo
명령어를 통해서 관리를 하도록 하는 것이 바람직하다.
/etc/security/user
파일을 수정을 통해서 root
계정의 직접 접근을 막을 수 있다.
- 또한 어떤 유저가
su -
, su
, sudo
명령어를 사용했는지 확인하기 위해서 로그 파일에 이를 기록하는 것이 좋다.
sudo
sudo
는 원래 “superuser do” 라는 의미를 가지고 있었다. 그런데, sudo
의 기능 중에 특정 유저의 권한으로 실행할 수 있는 기능이 만들어지면서 sudo
는 “substitute user do” 라는 의미로 바뀌었다.
sudo -u $USER_NAME command
를 통해서 명령을 실행하면 해당 유저의 권한을 갖고 명령을 실행할 수 있다.
sudo
명령어를 통해서 사용자는 root
계정의 권한을 획득하여 명령어를 실행할 수 있다.
- 물론,
sudo
명령어를 사용하기 위해서 해당 유저에게 sudo
명령어를 사용할 수 있도록 권한을 부여하는 작업이 필요하다.
/etc/sudoers
파일의 수정을 통해서 유저, 그룹에게 sudo
권한을 부여한다.
- 그런데 해당 파일은 읽기 전용 파일로 되어있어, 별도의 권한 변경이 필요하고 이는 위험하다.
- 따라서
visudo
명령어를 이용하여 해당 파일을 수정한다.
sudo
의 경우 별개의 프로그램이기 때문에 sudo
를 사용하기 위해서는 sudo
프로그램의 설치가 필요하다. (*기본적으로 내장되어 있지 않을 경우)
sudo vs su
sudo
와 su
는 명백히 다른 명령어이다.
su
의 경우 ***“switch user”***를 의미한다. 즉, 계정을 전환하는데 이용하는 명령어이다.