I. 사용자 관리
1) root의 역할: 리눅스 시스템에서 시스템 관리자로서의 역할을 수행하기 위한 사용자계정이다. 즉, 리눅스 시스템을 운영하기 위한 모든 권한을 가지며 수퍼 유저(Super User)로 지칭된다. root는 리눅스 설치 시 기본적으로 생성되고, 설치과정에서 root의 비밀번호를 설정한다. 재설정 하기 위해선 쉘상태에서 passwd명령어를 사용하여 변경가능하다.
*su(Sustitute): 다른 계정 사용자로 교체할 수 있는 명령어이다.
옵션
- -c: 쉘을 실행하지 않고 주어진 명령만을 수행한다.
- -s: 지정된 쉘로 로그인한다.
- -, -l: 지정한 사용자의 환경변수를 적용하여 로그인한다.
※root로 변경시에는 "su -" 명령만 내리면 되며 "su - root"와 같은 의미이다.
*TMOUT: 사용자가 일정시간 동안 계정을 사용하지 않는 경우에 자동으로 로그아웃되도록 하기위해서 설정하는 것이다.
-root를 비롯한 모든 사용자의 경우 /etc/profile에 TMOUT 환경변수를 설정한다.
-특정 사용자에게만 설정할 경우엔 .bash_profile에 환경변수를 설정한다.
사용법
1시간이 지나면 자동 로그아웃 설정 |
export TMOUT TMOUT=3600 //초단위계산 |
사용자가 사용한 명령어 목록을 다른 사용자가 로그인하더라도 알 수 없게 history목록 삭제 |
HISTSIZE=0 HISTFILESIZE=0 |
*사용자 신분 확인 명령어
1. 지금 현재 나는 누구인가? = id
- UID(사용자 아이디), GID(그룹 아이디), 소속 그룹 정보를 확인하는 명령어로써, 사용자의 신분을 확인하는 가장 일반적인 명령어이다.
▲ "bjkim" 사용자의 uid는 500, gid는 500, 소속그룹은 bjkim에 소속되어 있다.
EUID(Effective User ID)정보만을 확인 (EUID란 서버보안 점검과정에서 해킹 등을 당하지 않았는가를 확인 할 때 사용) |
id -un ▶ EUID 확인 |
id -u ▶ UID 확인 |
id -gn ▶ 유효그룹 확인 |
id -g ▶ GID 확인 |
2. EUID(유효 사용자 아이디) 확인하기 = whoami
- EUID는 어떤 명령어를 실행하였을 경우에 실제 어떤 사용자 권한으로 실행되는가에 관한것인데, 즉 현재 사용자와 명령어를 실행했을때의 사용자 권한은 동일하겠지만, 그렇지 않은 경우가 있기 때문에 "whoami"로 EUID를 확인할 수 있어야 한다.
3. 최초 로그인한 아이디가 무엇인가? = who am i
- 내가 시스템에 접속할 당시의 계정명과 접속정보를 확인하는 명령어이다. 사용자를 몇번을 바꾸건 출력은 최초 접속 사용자를 출력한다.
▲root=최초 접속자 ID, pts/0= 최초 접속 시 사용한 터미널 장치명, 2018-02-20 14:29= 최초 접속당시 시간, (192.168.1.1)= 최초 접속 당시 IP주소
1) 사용자 계정 설정 파일: 리눅스는 서로 다른 다수의 사용자가 동시에 로그인하여 시스템을 사용할 수 있는 운영체제로, 사용자 각자 시스템 사용 목적에 맞게 자신의 환경을 설정 할 수 있다.
*/etc/passwd
사용자에 대한 기본적인 설정 정보들이 들어 있다. 사용자의 패스워드 사항도 함께 저장되지만, shadow프로그램으로 인해 암호화되어 기록된다. | |
필드 | 의미 |
bjkim | 사용자의 계정명(username) |
x | 사용자의 패스워드 |
500 | 숫자로 표현된 사용자의 UID |
500 | 사용자가 포함된 그룹의 번호를 숫자로 표현한 GID |
bjkim | 사용자에 대해 설명하는 주석 |
/home/bjkim | 사용자의 홈 디렉터리 |
/bin/bash | 사용자의 기본사용쉘 |
*/etc/shadow
passwd의 보안 문제를 해결하기 위해 나온 파일이며, 루트 사용자만이 읽기 권한을 가지고 있다.( /etc/passwd에 패스워드를 x로 표현) |
|
필드 | 의미 |
root |
사용자의 계정명(username) |
!! |
사용자의 암호화된 패스워드 - 복잡한 난수 |
17149 |
마지막으로 패스워드를 변경했던 날짜 - 리눅스 생성일(1970.1.1) 이후 부터 일자수로 계산 |
0 |
패스워드를 한번 변경 후 최소 며칠 이후 다시 설정 할 수있는지에 대한 기간 - 0이면 아무때나 다시 재설정 가능 |
99999 |
해당 패스워드를 변경없이 사용할 수 있는 유효 기간 - 만약 10이면 10일간 유효하고, 99999는 사실상 무기한 |
7 | 패스워드 변경 경고일 수로 만료되기 전에 로그인 시 해당 일자 전에 경고 메세지를 보냄 |
NULL | 패스워드의 유효기간 종료 후 패스워드 비활성화 기간 - 0=바로만료, 1=하루연장 |
NULL | 계정 사용 종료일 |
NULL | 예약 필드 |
*/etc/group
관리자가 특정 그룹을 지정하지 않고 사용자를 생성하면 사용자명과 동일한 그룹이 생성되어 이 파일에 기록된다. | |
필드 | 의미 |
bjkim | 그룹의 이름 (사용자명 X) |
x | 그룹의 패스워드 |
500 | 그룹의 GID |
NULL | 그룹에 속한 사용자들(사용자들은 쉼표(,)로 구분함) |
2) 사용자 추가
*사용자 생성 작업 순서
- /etc/passwd 파일에 사용자 계정 생성
- /etc/shadow 파일에 계정 패스워드 등록
- /etc/group 파일에 사용자의 그룹생성
- /home 디렉토리에 사용자의 홈 디렉터리 생성
- FTP 또는 SSH 사용을 위한 환경 설정
- 메일 사용을 위한 메일 환경 설정
- 사용자의 로그인 정보 및 환경 설정
- 사용자의 디렉터리 및 파일 소유권 변경 및 확인
- DB 사용을 위한 환경 설정 및 응용프로그램 사용을 위한 환경설정
- 기타 응용 소프트웨어 사용을 위한 설정
3) 사용자별 Shell 설정
*쉘(Shell)의 선택
-쉘 종류 확인 및 선택
1. /bin디렉터리 확인, 2. /etc/shells 파일 확인, 3. chsh -l 명령어 사용 |
|
-로그인쉘과 서브쉘: 리눅스에서 제공하는 쉘은 크게 로그인쉘과 서브쉘로 나눌수 있다.
로그인쉘(login shell) |
사용자 생성시 /etc/passwd에 그 정보가 등록되는데, 로그인시 기본으로 지정하여 사용되는 쉘이다. |
서브쉘(sub shell) |
필요에 따라 임시적으로 변경하여 일시적으로 사용하는 쉘이다. |
ex) 현재 쉘 확인: echo $SHELL, 본 쉘로 변경: /bin/sh, 쉘 종료: exit |
-로그인쉘의 변경: "chsh(change shell)" 명령을 사용한다.(모든 사용자 모두 사용 가능)
로그인 쉘 변경 (변경 후 재로그인해야 적용됨) |
▲chsh -s 옵션으로 더 간편하게 바꿀 수 있다.
1) useradd: 사용자 생성을 위한 명령어
useradd [옵션] [값] [사용자명] |
|
옵션 |
의미 |
-u |
사용자의 UID를 지정한다. |
-g |
사용자의 주그룹을 지정한다. ( -G: 보조그룹 지정) |
-c |
사용자에 대한 설명을 추가한다. |
-d |
사용자의 기본 홈 디렉터리 변경한다.(가능한 계정명과 동일한 홈 디렉터리 추가) |
-s |
사용자의 로그인쉘을 지정한다. |
-m -k | 사용자 지정 skel을 생성한다. |
useradd -D [옵션] [값]: 기본 설정값 변경 ( useradd -D = cat /etc/default/useradd) | |
옵션 | 의미 |
-b | 계정 생성 시 생성되는 홈디렉터리의 기본 생성 위치를 변경한다. |
-e | 계정의 기본 만료일자를 변경한다. |
-f | 계정 만료 일자에 대한 일시를 변경한다. (패스워드 비활성화 기간) |
-s | 계정의 기본 로그인쉘을 변경한다. |
-g | 계정 생성시 지정되는 기본 그룹을 변경한다. |
GROUP=100 |
사용자 추가시 기본적으로 100이라는 GID 그룹 지정 (단, useradd 명령에 -n옵션일때만 적용) |
HOME=/home |
홈 디렉터리는 /home 디렉터리 아래에 사용자 이름의 디렉터리로 만들도록 설정 |
INACTIVE=-1 |
|
EXPIRE= |
|
SHELL=/bin/bash | 사용자의 기본 쉘 |
SKEL=/etc/skel | 기본 설정 파일 위치 |
CREATE_MAIL_SPOOL=yes | 메일함 생성 여부 |
2) usermod: 사용자 설정을 바꾸어 주기위한 명령어이다.
usermod [옵션] [사용자명] | |
옵션 | 의미 |
-l | 사용자의 계정명 변경 |
-u | 사용자의 uid 정보 변경 |
-g | 사용자의 기본 그룹 변경 |
-G | 사용자에게 추가 그룹 지정 (-a 옵션과 함께 사용) |
3) passwd: 사용자 생성 후 해당 사용자에 대한 패스워드를 변경하는 명령어이다.
passwd [옵션] [사용자명] |
|
옵션 |
의미 |
-l |
패스워드를 잠금 설정(lock) |
-u | 패스워드를 잠금 해제(unlock) |
-d | 계정에 대한 패스워드를 사용불가로 만듦 |
-n | 패스워드 변경 최소일수 설정 |
-x | 패스워드 변경 유예기간 설정 |
-w | 패스워드 변경 경고 일수 설정 |
-i | 패스워드 변경 유예기간을 설정 |
-S | 패스워드의 설정 상태를 보여준다 |
--stdin | 패스워드를 표준출력장치로 입력 받아 생성 |
4) chage: /etc/shadow 파일에 설정된 사용자에 대한 패스워드의 만료 기간 및 시간 정보를 변경하는 명령어이다.
chage [옵션] [사용자명] |
|
옵션 |
의미 |
-l | aging 정보 확인 |
-d |
최종 패스워드 변경일을 설정 |
-m |
패스워드 변경 최소일수를 지정 |
-M |
패스워드 변경 유예기간을 설정 |
-W |
패스워드 변경 경고일 수를 설정 |
-I | 패스워드 비활성화기간을 지정 (0으로 지정 시 유효기간 없음) |
-E | 계정사용 종료일을 YYYY-MM-DD 형식으로 지정 |
5) userdel: 사용자를 삭제하는 명령어이다.
userdel [옵션] [사용자명] | |
옵션 | 의미 |
-f | 로그인 되어있거나, 다른 사용자가 홈 디렉터리를 사용하고, 삭제 계정의 그룹을 다른 계정의 기본그룹으로 지정되었어도 강제로 삭제 |
-r | 계정생성 시 함께 만들어진 모든 정보를 삭제(사용자 디렉터리, 메일 스풀 파일) |
-h | 도움말 표시 |
6) groupadd: 그룹을 생성하기 위한 명령어이다.
groupadd [옵션] [값] [그룹명] | |
옵션 | 의미 |
-f | 이미 존재하는 구룹과 동일한 그룹 강제 생성 |
-g | 그룹 생성시 GID값 지정 |
-o | 기존의 GID와 동일한 GID로 그룹 생성 가능 |
-r | GID를 500미만으로 자동 지정 |
| groupadd g1 groupadd -g 701 g2 // gid를 701로 지정한 그룹 생성 groupadd g3 //701에 이어서 702로 그룹 생성 |
7) groupmod: 그룹의 설정사항을 변경 시 사용하는 명령어이다.
groupmod [옵션] [값] [그룹명] | |
옵션 | 의미 |
-g | 지정된 GID로 변경 |
-n | 새로운 그룹명으로 변경 |
8) gpasswd: 특정 그룹에 패스워드를 설정하는 명령어이다. (특정 그룹 사용자를 추가, 제거, 그룹관리자 지정 명령어도 있음)
gpasswd [옵션] [값] [그룹명] | |
옵션 | 의미 |
-a | 특정 그룹에 새로운 그룹원을 추가 |
-d | 특정 그룹에서 지정한 그룹원을 제거 |
-r | 특정 그룹의 패스워드를 제거 |
-R | 특정 그룹에 접근을 제어 |
-A | 특정 그룹의 그룹 관리자를 설정 |
-M | 특정 그룹의 그룹원들을 새로 설정 |
특정 그룹에 그룹원을 추가하는 방법들
|
9) groupdel: 그룹삭제 시 사용하는 명령어이다.
groupdel [그룹명] | |
(별다른 옵션은 없다) |
10) chgrp: "Change group"의 약어로, 파일이나 디렉터리의 소유그룹을 변경할 때 사용한다.
chgrp [옵션] [파일명/디렉터리명] | |
옵션 | 의미 |
-c, --changes | 작업 상태를 자세히 보여주나, 실제로 변경되는 것만 보여줌 |
-h, --no-dereference | 심볼릭 링크가 지정하는 것 대신에 심볼릭 링크 자체의 그룹을 변경 |
-f, --silent, --quiet | 그룹이 변경되지 않는 파일들에 대한 오류 메세지를 보여주지 않음 |
-v, --verbose | 작업 진행 상태를 자세하게 보여줌 |
-R, -recursive | 지정한 디렉터리 아래에 있는 모든 파일도 함께 지정한 그룹으로 변경 |
--help | 사용법과 그 옵션들의 설명들을 출력 |
--version | 버전 정보를 출력 |
test 파일의 소유 그룹을 "nobody"로 변경 | |
11) su: 다른 계정 사용자로 교체할 때 사용하는 명령어이다.
su [옵션] [사용자명] | |
옵션 | 의미 |
-c, --command | 대화형 쉘을 시작하지 않고, 한개의 명령만 실행 |
-f, --fast | 새로운 그룹명으로 변경 |
--help | 표준출력으로 사용법을 출력하고 정상적으로 종료 |
-, -l, --login | 쉘을 로그인 쉘로 만듦 |
-m, -p | 'HOME', 'USER', 'LOGINNAME', 'SHELL' 등의 환경변수값을 변경하지 않음 |
-s, --shell | su를 실행하는 사용자가 수퍼 유저가 아니거나 제한된 쉘일 때 /etc/passwd 등록 쉘을 수행하지 않고 지정한 쉘을 수행 |
--version | 표준출력으로 버전정보를 출력하고 정상적으로 종료 |
'자격증 > 리눅스 마스터 1급' 카테고리의 다른 글
Part2) 리눅스 시스템 관리 - 일반 운영 관리(3) | 프로세스 관리, S/W설치 및 관리 (0) | 2018.02.22 |
---|---|
Part2) 리눅스 시스템 관리 - 일반 운영 관리(2) | 파일 시스템 관리 (0) | 2018.02.21 |
Part1) 리눅스의 실무의 이해 - 네트워크의 이해(2) | 네트워크 설정 (0) | 2018.02.14 |
Part1) 리눅스의 실무의 이해 - 네트워크의 이해(1) | 네트워크 기초 (0) | 2018.02.13 |
Part1) 리눅스의 실무의 이해 - 리눅스 시스템의 이해(4) | 프로세스 (0) | 2018.02.08 |