리눅스는 여러 사용자(account, 계정)가 동시에 로그인할 수 있는 멀티 유저 시스템이다. 한 사람이 여러 계정을 소유할 수도 있고, 여러 계정을 동시에 사용할 수도 있다.
루트 사용자
root 사용자는 리눅스 시스템의 모든 권한을 가진 관리자 계정이다. 시스템 내 모든 파일에 대한 읽기/쓰기/실행 권한을 가지며, 시스템 주요 설정 변경, 패키지 관리, 시스템 전원 관리 및 리부팅 등을 수행할 수 있다.
시스템 사용자
리눅스 시스템에서 만든 사용자이다. 백그라운드 서비스나 데몬을 실행하는 등 특정 기능을 수행한다. 보통 리눅스를 설치할 때 혹은 드라이버나 프로그램을 설치할 때 자동으로 추가되며 일반적으로 시스템 관리용이기에 로그인이 불가능하다.
일반 사용자
root 사용자와 시스템 사용자를 제외한 모든 사용자를 의미한다. 리눅스 시스템에 로그인해서 사용하는 일반적인 사용자를 가리킨다.
root 사용자는 모든 권한을 가지고 있고, 시스템 업데이트, 주요 소프트웨어 및 패키지 설치/업데이트/제거 등 중요한 일을 모두 담당한다. 강한 권한을 가진 만큼, 비밀번호 유출 등을 막기 위해 보안에 신경써야 한다.
root 사용자로 로그인하지 않았을 때, root 사용자의 권한이 필요하다면? 일반 사용자가 root의 권한을 사용할 수 있는 방법에는 3가지가 있다.
su [옵션] [-] [사용자]
su 명령어 뒤에 사용자 이름을 입력하면 현재 셸의 사용자를 입력한 사용자로 전환하려고 시도한다. 이 때 비밀번호를 물어보고 올바른 비밀번호라면(전환하려는 사용자) 입력된 사용자로 전환한다.
사용자 위치에 아무것도 입력하지 않으면 root 사용자로 로그인을 시도하는 것이다.
사용자 앞의 하이픈(-)은 선택 사항이며, 단순히 사용자만 전환하는 것이 아니라 해당 사용자의 전체 로그인 환경(환경 변수, 작업 디렉토리 등)도 함께 로드한다. 즉, 새로운 사용자가 셸에 로그인한 것처럼 동작한다.
여기서 옵션으로 -c를 사용하면 다른 사용자로 전환하지 않고 입력한 명령을 다른 사용자의 권한으로 사용할 수 있다. a라는 사용자를 선택해서 -c 옵션을 사용하면, a라는 사용자의 권한으로 명령을 사용할 수 있다는 의미이다. (sudo 명령어와 비슷하다.)
sudo [옵션] [명령어]
sudo 명령어는 특정 사용자의 권한으로 단일 명령을 실행한다.