지금 누구로 로그인했는지, 그 계정이 어떤 권한으로 명령을 실행하는지를 확인하는 명령이다.

계정 확인

Bash
whoami
id
id user
who
w

whoami는 지금 명령이 실행되는 사용자 이름이다. sudo로 실행하면 root로 나올 수 있다. id는 사용자 번호, 기본 그룹, 속한 그룹을 함께 보여 준다. 인자로 다른 계정 이름을 주면 그 계정을 조회한다.

who는 로그인한 세션의 터미널과 시각이다. w는 거기에 각 세션이 실행 중인 명령까지 붙인다.

sudo

sudo는 허용된 계정이 다른 사용자, 보통 root의 권한으로 명령 하나를 실행하게 한다.

Bash
sudo ls /root
sudo -u postgres psql
sudo -l

비밀번호를 물으면, 많은 설정에서는 root 비밀번호가 아니라 내 계정의 비밀번호다. `-u`는 그 사용자로 실행한다. `-l`은 지금 계정에 허용된 sudo 명령을 보여 준다.

sudo는 필요한 명령 앞에만 붙인다. `sudo -i`는 대상 계정의 로그인 셸을 연다. 그 셸 안의 명령은 모두 그 권한으로 실행된다. 일이 끝나면 exit로 나온다.

su

Bash
su -
su - postgres

`su -`는 대상의 로그인 환경으로 들어간다. 홈, PATH, 셸 설정을 그 계정 기준으로 다시 읽는다. 하이픈 없는 `su`는 일부 환경을 지금 셸에서 가져간다. 계정 작업을 할 때는 `su -`가 예측하기 쉽다.

대상 계정에 비밀번호가 없거나 막혀 있으면 su는 실패할 수 있다. 그 계정의 명령 하나만 실행할 수 있으면 sudo -u가 맞다.

root로 연 셸에서 만든 파일의 소유자는 root다. 내 계정으로 다시 편집해야 하면 chown으로 소유자를 되돌린다.

비밀번호와 기록

Bash
passwd
groups
last -n 10

passwd는 내 로그인 비밀번호를 바꾼다. 현재 비밀번호를 먼저 묻는다. 다른 계정을 바꾸려면 관리자 권한이 필요하다.

groups는 지금 계정이 속한 그룹이다. id의 그룹 목록과 같다. last는 로그인 기록이다. `-n`은 줄 수다. 기록이 없는 시스템은 출력이 짧다.