1. 사용자와 그룹
리눅스는 다중 사용자 시스템(multi-user system)이다. 1대에 리눅스에 사용자 여러 명이 동시에 접속해서 사용 가능하다.
리눅스를 설치하면 기본적으로 root 라는 슈퍼 유저(super user)가 있다.
root는 시스템의 모든 작업을 실행 할 수 있는 권한이 있다. 시스템에 접속 할 수 있는 사용자를 생성하는 권한도 있다.
모든 사용자는 혼자 존재하는게 아니라 하나 이상의 그룹에 소속되어야 한다.
gedit이나 vi 에디터로 /etc/passwd 파일을 열면 다음과 같다.
여러 명의 사용자가 보이는데, 제일 위의 root 사용자부터 제일 아래의 바로 위인 tcpdump 사용자 까지는
리눅스에서 기본적으로 존재하는 표준 사용자다.
제일 위에 있는 root 사용자와 제일 아래 부분의 설치 직후에 생성한 사용자(까맣게 가린거/ex) centos)의 의미는 다음과 같다.
사용자 이름: 암호: 사용자 ID: 사용자가 소속된 그룹 ID: 전체 이름:홈 디렉토리: 기본 셸
제일 아래의 centos 사용자를 보면 사용자 이름은 centos고, 암호가 x로 표시되어 있는데 이는 /etc/shadow 파일에
비밀번호가 지정되어 있다는 의미다. centos의 사용자 ID는 1000번이고, centos가 속한 그룹 ID는 1000번이다.
전체이름도 centos로 사용하며, centos 사용자의 홈 디렉토리는 /home/centos이고,
로그인 시 제공되는 셸은 /bin/bash다.
사용자 이름(centos) : 암호(x/있음): 사용자 ID(1000) : 사용자가 소속된 그룹 ID(1000) : 전체 이름(centos) :
홈 디렉토리(/home/centos) : 기본 셸(/bin/bash)
root 사용자의 행을 보면 사용자 ID와 그룹 ID가 0번으로 설정되어 있음을 알 수 있다. 이번에는 /etc/group 파일을 확인해본다.
vi /etc/group
각 행의 의미 :
그룹 이름: 비밀번호: 그룹 ID: 그룹에 속한 사용자 이름
마지막 '그룹에 속한 사용자 이름'은 참조로 사용된다. 즉, 해당 부분에 아무것도 써있지 않다고 해서 그룹에 소속된 사용자가
반드시 없다는 뜻은 아니다(root 그룹보면 root가 있지만 표현이 안 되어 있음)
위의 /etc/passwd 파일에서는 centos 사용자가 속한 그룹이 1000번으로 표현되어 있었는데,
/etc/group 파일에서도 centos 그룹의 ID가 1000번이므로 centos 그룹에는 centos가 속해 있는 것이다.
사용자 이름을 가려서 그렇지 centos사용자라 생각하면 됨.
그룹 이름(centos) : 비밀번호(x/있음): 그룹 ID(1000): 그룹에 속한 사용자 이름(centos)
2. 사용자 및 그룹과 관련된 명령어
useradd(또는 adduser)
새로운 사용자를 추가한다. 이 명령어를 실행하면 /etc/passwd, /etc/shadow, /etc/group 파일에 새로운 행이 추가된다.
[ 사용 예 ]
# useradd newuser : newuser 라는 사용자 생성
# useradd -u 1111 newuser : newuser 사용자를 생성하면서 사용자 ID를 1111로 지정
# useradd -g mygroup newuser : newuser 사용자를 생성하면서 mygroup 그룹에 newuser사용자를 포함(mygroup이 먼저 있어야 함)
# useradd -d /newhome newuser : newuser 사용자를 생성하면서 홈 디렉토리를 /newhome으로 지정
# useradd -s /bin/csh newuser : newuser 사용자를 생성하면서 기본 셸을 /bin/csh로 지정
passwd
사용자의 비밀번호 변경
[ 사용 예 ]
# passwd newuser : newuser 사용자의 비밀번호 지정(또는 변경)
usermod
사용자의 속성 변경. 옵션은 useradd와 동일
[ 사용 예 ]
# usermod -g root newuser : newuser사용자의 그룹을 root 그룹으로 변경
userdel
사용자 삭제
[ 사용 예 ]
# userdel newuser : newuser 사용자 삭제
# userdel -r newuser : newuser 사용자를 삭제하면서 홈 디렉토리까지 삭제
chage
사용자의 암호를 주기적으로 변경하도록 설정
[ 사용 예 ]
# chage -l newuser : newuser 사용자에 설정된 사항을 확인
# chage -m 2 newuser : newuser 사용자에 설정한 암호를 사용해야 하는 최소 일자(즉, 변경 후 최소 2일은 사용해야 함)
# chage -M 30 newuser : newuser 사용자에 설정한 암호를 사용할 수 있는 최대 일자(즉, 변경 후 최대 30일까지 사용)
# chage -E 2019/12/12 newuser : newuser 사용자에 설정한 암호가 만료되는 날짜(즉, 2019/12/12 까지)
# chage -W 10 newuser : newuser 사용자에 설정한 암호가 만료되기 전까지 경고하는 기간(지정하지 않았을 경우 기본값 7일
(즉, 암호가 만료되기 10일 전부터 경고 메시지 나감)
groups
사용자가 소속된 그룹을 보여준다.
[ 사용 예 ]
# groups : 현재 사용자가 소속된 그룹을 보여줌
# groups newuser : newuser가 소속된 그룹을 보여줌
groupadd
새로운 그룹 생성
[ 사용 예 ]
# groupadd newgroup : newgroup이라는 그룹을 생성
# groupadd -g 2222 newgroup : newgroup 그룹을 생성하면서 그룹 ID를 2222로 지정
groupmod
그룹의 속성 변경
[ 사용 예 ]
# groupmod -n newgroup mygroup : newgroup 그룹의 이름을 mygroup으로 변경
groupdel
그룹 삭제
[ 사용 예 ]
# groupdel newgroup : newgroup 그룹을 삭제(단, 해당 그룹을 주요 그룹으로 지정한 사용자 없어야 함)
gpasswd
그룹의 암호를 설정하거나 그룹 관리 수행
[ 사용 예 ]
# gpasswd newgroup : newgroup 그룹의 암호를 지정
# gpasswd -A newuser newgroup : newuser 사용자를 newgroup 그룹의 관리자로 지정
# gpasswd -a user1 newgroup : user1을 newgroup 그룹의 사용자로 추가
# gpasswd -d newuser newgroup : newuser 사용자를 newgroup 그룹의 사용자에서 제거
3. 실습(사용자 및 그룹 관리)
만약을 대비해 VMWare에 올린 CentOS 7 Server에 테스트 한다.
1. root사용자로 접속하고 터미널 실행
2. 유저 추가
useradd user1
3. user1 사용자가 추가 됐는지 확인(tail은 마지막 10행 보여줌)
tail /etc/passwd
제일 마지막 행 보면, user1이 정상적으로 추가됐다. 사용자 이름은 지정한 user1로 되어 있고 암호는
/etc/shadow 파일에 지정되어 있다. 3번째 열에서 user의 ID는 1001번으로 되어 있는데,
이는 그 앞에 있는 centos의 1000번 다음으로 자동으로 1을 더해서 할당 된것. 그룹 ID도 1001번으로 지정되어 있다.
주의할 점은 그룹의 이름이 아닌 그룹의 ID가 지정되어 있다는 점이다. 사용자 홈 디렉토리는 기본설정인 /home/사용자 이름
셸은 기본 설정인 /bin/bash로 지정돼 있다.
user1 사용자는 그룹을 별도로 지정하지 않았다(그래서 두번째 1001 다음 빈칸. centos 랑 비교해보면 됨)
그룹을 확인해본다.
4. 그룹 확인
tail /etc/group
맨 마지막 행에 그룹이 추가 돼 있다. 그룹 이름을 보면 사용자 이름과 동일한 user1으로 되어 있으며,
그룹 ID는 자동으로 마지막 그룹 번호인 1000에 1을 증가한 1001으로 생성됐다.
useradd 명령어를 실행해 별도의 그룹을 지정하지 않으면 자동으로 사용자 이름과 동일한 그룹이 생성되고
새로운 사용자는 생성된 그룹에 자동으로 포함된다.
즉, 새로 생성된 user1 은 소속된 사용자가 1명이 그룹이 된다.
많은 사용자를 관리할 때 '사용자_이름= 그룹_이름' 이 되어서 관리하기가 불편하다.
그래서 사용자를 관리할 경우에 먼저 그룹을 만들고 만든 그룹에 속하는게 낫다.
5. 그룹을 별도로 생성하고 해당 그룹에 다수의 사용자 포함하여 관리
먼저 user1 사용자를 삭제한다. 그리고 centosGroup 그룹을 먼저 만든다.
userdel -r user1
groupadd centosGroup
centosGroup이 정상적으로 생성
새로운 user1, user2 사용자를 만들면서 그룹을 centosGroup 그룹으로 지정한다.
useradd -g centosGroup user1
useradd -g centosGroup user2'
tail -5 /etc/group
/etc/passwd 파일을 확인해보니 그룹 ID가 모두 1001로 되어 있다. /etc/group 파일에서 1001번은
centosGroup임을 알 수 있다.
/etc/shadow 파일을 확인해보면 제일 아래에 user1, user2라는 두 사용자가 추가됐음을 알 수 있다.
그런데 centos 경우에는 암호가 코드화되어 들어 있지만 user1과 user2는 해당 부분에 '!!' 라는 표시만 되어 있다. 암호가 없어 그렇다.
user1과 user2 사용자의 암호를 지정한다. 테스트니 간단하게 입력하고 넘어간다(너무 간단한 암호면 경고 나오는데 걍 ㄱㄱ,
root사용자가 암호를 지정해 줄 경우에는 간단한 암호 뭐라 안함)
다시 /etc/shadow 파일을 확인하면 user1과 user2 사용자 암호가 지정된 것을 볼 수 있다.
둘다 대충 비밀번호 1111했는데 코드화된 암호는 서로 다르다. 이는 /etc/shadow 파일을 살펴봐도 암호를 알 수 없다는 의미.
이번에는 user1 사용자의 홈 디렉토리인 /home/user1과 /etc/skel 디렉토리를 비교한다. 두 디렉토리에는 동일한
파일이 있을 것이다. 즉, 새로운 사용자를 생성하면 해당 사용자의 홈 디렉토리 기본 설정은 '/home/사용자 이름'
으로 지정되며, /etc/skel 디렉토리의 모든 내용을 사용자의 홈 디렉토리에 복사하는 작업이 발생한다.
앞으로 생성하는 사용자에게 특정한 파일 등을 배포하고 싶으면 /etc/skel 디렉토리에 넣으면 된다.
# Note
/skel 디렉토리는 skeleton(뼈대)의 약자.
6. system-config-users 명령어
X윈도 환경에서 사용자 관리를 편하게 도와주는
system-config-users 명령어도 있다. 터미널에 입력해 보면된다.
근데 그딴 커맨드 없다고 한다. 이럴 때는 이 명령어를 해당 프로그램을 설치하고 다시 실행해본다.
yum -y install system-config-users
본인 OS에서 실행한 화면
테스트 했던 VMWare의 CentOS 7 에서의 실행화면(추가된거 잘 나옴)
편리하게 사용자 및 그룹 관리가 가능하다. 근데 X윈도가 아닌 텍스트 모드 환경에서는 안되니까
명령어 숙지하는게 좋다.
'OS > Linux' 카테고리의 다른 글
10. 파일과 디렉토리의 소유와 허가권 (0) | 2020.04.07 |
---|---|
08. 리눅스 기본 명령어 (0) | 2020.04.07 |
07. 마운트와 CD/DVD/USB의 활용 (0) | 2020.04.06 |
06. 도움말 사용법 (0) | 2020.04.06 |
05. 에디터 사용 (0) | 2020.04.06 |