User와 Group
Linux에서 모든 사용자는 디폴트로 항상 하나의 그룹에 속하게 되는데, 사용자명과 동일한 이름의 그룹이다. 사용자가 속할 수 있는 다른 그룹을 보조 그룹(Supplimentary Group)이라고 한다.
user 관련 명령어
`user`까지만 치고 탭을 두 번 누르면 `user`로 시작하는 여러가지 명령어 옵션이 출력되는 것을 볼 수 있다.
user 관련 명령어 | 용도 |
useradd | 사용자 생성 |
userdel | 사용자 삭제 |
usermod | 사용자 속성 변경 |
useradd 명령어
`useradd 사용자명` 명령어로 사용자를 원하는 이름으로 생성할 수 있다.
id 명령어
`id 사용자명`을 수행하면 해당 사용자의 식별자인 id, 그룹정보를 확인할 수 있다. 이때 `gid`는 해당 유저의 primary group을 나타낸다. 아래 사진을 보면 gid의 이름은 `john`으로, 사용자 이름과 그룹 이름이 동일한 것을 확인할 수 있다. 사용자를 처음 생성하면 사용자의 디폴트 그룹이 동일한 이름으로 생성된다. `groups`는 해당 사용자가 속한 다른 보조 그룹을 뜻한다.
group관련 명령어
`group`까지만 치고 탭을 두 번 누르면 `group`로 시작하는 여러가지 명령어 옵션이 출력되는 것을 볼 수 있다.
group 관련 명령어 | 용도 |
groupadd | 그룹 생성 |
groupdel | 그룹 삭제 |
groupmod | 그룹 속성 변경 |
user를 group에 가입 시키기
우선 `groupadd 그룹명` 명령어로 그룹을 원하는 이름으로 생성할 수 있다. `usermod -aG 그룹명 사용자명` 명령어로 해당 사용자를 해당 그룹에 가입시킬 수 있다. `id john`을 수행하면 groups에 beatles가 추가된 것을 확인할 수 있다. john은 beatles의 멤버가 되었으므로, beatles가 가진 권한을 모두 동일하게 부여받는다.
passwd 명령어
`passwd 사용자명` 명령어를 통해 해당 사용자에게 비밀번호를 할당할 수 있다.
userdel 명령어
`userdel 사용자명`을 사용하면 해당 사용자가 삭제된다. 사용자의 데이터는 자동으로 삭제되지 않고 남아있는다.
사용자 계정 정보가 담긴 passwd 파일
passwd 파일은 `/etc/passwd`에 위치해있는데, `/etc` 하위에 있는 것을 보면 알 수 있듯이 configuration file(구성 파일)이다. 파일 명을 보면 오해하기 쉽지만 이곳이 비밀번호가 저장되는 곳은 아니다. 해당 파일 내에서 특정 유저에 대한 정보를 출력하기 위해서 `grep 사용자명 /etc/passwd`명령어를 수행하면 다음과 같은 내용을 확인할 수 있다.
john:x:1000:1000: john:/home/ john:/bin/bash
사용자의 비밀번호
사용자 비밀번호는 `shadow`라는 파일에 저장된다. `grep 사용자명 /etc/shadow`를 수행하면 다음과 같은 결과를 확인할 수 있는데, `사용자명:` 다음에 나오는 해시가 암호화된 비밀번호다.
john:$5XvmYk2.GXVWhDo2TYGN2hCitD/wU9Kov.uZD8xsnleuf1r0ARX3qodIKiDsdoQA444b8IMPMOnUWDmVJVkeg1::0:99999:7:::
/etc/group 파일
`grep 그룹명 /etc/group` 명령어를 수행하면 그룹 구성 파일인 `/etc/group` 파일 내용 중에서 해당 그룹명이 포함된 줄을 출력해준다. 아래 출력을 보면 wheel이라는 그룹의 아이디는 10이고, student라는 유저가 속해있음을 알 수 있다.
wheel:x:10:student
sudo 명령어
sudo 명령어를 사용하면, 임시로 root 권한으로 명령어를 수행할 수 있다. `sudo grep student /etc/shadow` `/etc/shadow` 파일의 내용을 조회하는 것은 root만 할 수 있기 때문에 일반유저로 로그인했을 때는 `permission denied`가 뜨는 것을 확인할 수 있다. sudo 명령어를 붙이면 student 유저인지 확인하기 위해 student의 비밀번호를 입력하면 root 권한으로 명령어를 수행할 수 있게 된다.
sudo -u 옵션
`-u`옵션을 사용하면 특정 유저로서 명령어를 수행하게 된다. 따라서 현재 로그인한 유저를 확인할 수 있는 명령어인 `whoami`를 사용하여 다음과 같이 실험을 해보면, 실제로 student로 로그인한 상태에서도 다른 유저라고 답하는 것을 볼 수 있다.
[student@servera ~]$ sudo -u cockpit-ws whoami
cockpit-ws
[student@servera ~]$ sudo whoami
root
유저 변경 명령어 su -
`su`는 switch user를 뜻한다. `su - 사용자명`을 수행하면 해당 사용자로 로그인된다. 사용자명을 명시하지 않으면 root로 변경된다.
본 포스트 시리즈는 「 RH024 Red Hat Enterprise Linux Technical Overview 」 강좌를 요약한 내용입니다.