[1. 리눅스 일반] 03 리눅스의 기본 명령어 (1) - 사용자 생성 및 계정 관리
System/Linux Master

[1. 리눅스 일반] 03 리눅스의 기본 명령어 (1) - 사용자 생성 및 계정 관리



1. 리눅스 명령어 개요


가. which

1) 명령어 경로 확인

2) 명령어 위치를 찾아주거나 alias를 보여주는 명령어

3) 사용자가 현재 위치에서 명령을 실행시켰을 때 어떤 명령이 실행되는지를 알고 확인할 수 있다.

4) $PATH가 설정되어 있는 경로에서만 해당 명령어의 경로를 찾는다.


· 형식 : which [명령어]


ex) httpd, pwd, m 위치 확인

1
2
3
4
5
6
7
8
[kinew@localhost ~] $ which httpd
/usr/sbin/httpd
[kinew@localhost ~] $ which hm
alias m='ls -al | more'
        /bin/ls
        /bin/more
[kinew@localhost ~] $ which pwd
/bin/pwd
cs


나. alias

· 자주 사용하는 명령어를 특정 문자로 입력해 두고 명령어 대신 해당 문자를 사용할 수 있게 한다.

· 형식 : alias [별명]='[명령어]'


ex) 명령어 'ls -al | more'를 문자 'm'으로 단축

1
[kinew@localhost ~] $ alias m='ls -al | more'
cs


다. unalias

· alias 해제

· 형식 : unalias [옵션][단축명령어]

+) 옵션 -a : 설정된 모든 alias 해제


ex) 단축 명령여 'm' 해제


라. 환경변수 PATH

1) 실행 파일들의 디렉터리 위치 저장

2) 명령어 입력자의 현재 작업 디렉터리와 상관없이 특정 명령어를 입력하면 PATH 변수에 저장되어 있는 경로에서 해당 명령어를 찾아 실행한다.

+) echo $PATH : 지정된 PATH값 확인


ex) 계정자 kinew에 설정되어 있는 PATH 확인

1
2
[kinew@localhost ~] $ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/kinew/.local/bin:/home/kinew/bin
cs



3) 기존 PATH에 새로운 경보를 추가하는 방법에는 명령어 PATH나 홈 디렉터리의 .bash_profile에 PATH를 추가한다. 기존 경로와 새 경로는 콜론(:)으로 구분한다.

· 형식 : export [변수명]=$[변수명]:변수값


ex1) 기존 PATH에 디렉터리 /dev 추가


1
2
3
[kinew@localhost ~] $ PATH $PATH:/dev
[kinew@localhost ~] $ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/kinew/.local/bin:/home/kinew/bin:/dev
cs


ex2) 파일 .bash_profile에 PATH 부분 확인


1
2
3
4
5
6
7
8
9
10
11
12
13
[kinew@localhost ~] $ cat .bash_profile
# .bash_profile
 
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
 
# User specific environment and startup programs
 
PATH=$PATH:$HOME/.local/bin:$HOME/bin
 
export PATH
cs




2. 리눅스 도움말


가. man : 리눅스에서 사용하는 명령어들의 매뉴얼 제공

· 형식 : man [섹션][옵션][명령어]


섹션

설명

1

 일반 명령어 관련 매뉴얼

2

 시스템 호출 관련 매뉴얼

3

 C 표준 라이블러리 함수 관련 매뉴얼

4

 장치 드라이버 또는 특수 파일에 대한 정보

5

 특정 파일들에 대한 정보

6

 게임과 화면보호기에 대한 정보

7

 리눅스 파일 표준, 프로토콜, 시그널 목록 정보

8

 시스템 관리 명령어, 데몬 정보

9

 커널 관리 정보


옵션

설명

-a

 찾고자 하는 명령어의 검색된 매뉴얼 페이지 모두 출력

-h

 사용법 출력

-f

 whatis 명령과 동일. 키워드와 동일한 man 페이지만 출력

-k

 apropos 명령과 동일. 키워드가 포함된 man 페이지 출력

-w

 찾고자 하는 문자의 매뉴얼 페이지가 있는 위치 출력


ex) 명령어 uname의 사용법 확인


man -a uname

 uname의 모든 man 페이지 섹션 표시

man 2 uname

 uname의 섹션 2의 man 페이지 표시

man uname -P more

 uname의 man 페이지를 more 명령을 사용하여 페이지 단위로 표시

man -f uname

 uname이 포함된 man 페이지 표시



나. info

1) 리눅스 명령어의 사용 방법, 옵션 등을 나타낸다.

2) man에 비해 제공되는 명령어 한정적

· 형식 : info [명령어]


다. whatis

1) 명령어에 대한 기능 간략하게 나타냄

2) 자세한 사용법, 설명은 man 또는 info로

3) 완전히 키워드가 일치해야만 해당 명령어의 기능을 확인할 수 있다.

4) whatis 데이터베이스에서 문자열만 검색한다.

· 형식 whatis [명령어]


ex) 명령어 ls 기능 확인

1
2
[kinew@localhost ~] $ whatis ls
ls (1)                - list directory contents
cs


라. manpath : man 페이지의 위치 경로

· 형식 : manpath [명령어]


ex) man 명령이 참조하는 매뉴얼 페이지의 경로를 표시

1
2
[kinew@localhost ~] $ manpath
/usr/local/share/man:/usr/share/man
cs


마. whereis : 찾고자 하는 명령어의 실행 파일 절대 경로, 소스코드, 설정 파일 및 매뉴얼 페이지 출력

· 형식 : whereis [옵션] [명령어]


옵션

설명

-b

 바이너리 파일만 찾음

-m

 지정된 매뉴얼 섹션에서만 찾음

-M

 매뉴얼 페이지 위치 제한

-u

 특정 파일 제외


바. apropos

1) man 페이지 설명에서 지정한 키워드를 포함하고 있는 명령어

2) whatis 데이터베이스에서 문자열을 포함한 것을 검색

3) whatis 데이터베이스가 만들어져 있어야 함

· 형식 : apropos [문자열]



3. 사용자 생성 명령어


가. useradd

1) 계정 생성 명령어 (adduser와 동일)

2) 계정자의 홈 디렉터리는 '/home/계정명'이다.

3) 생성한 계정자 정보는 파일 /etc/passwd, /etc/shadow, /etc/group에 저장된다.

· 형식 : useradd [옵션] [계정명]


옵션

설명

-s

 사용자의 로그인 기본 셸 지정

-d

 계정자의 홈 디렉터리 지정

-f

 패스워드가 만기된 후 계정이 영구말소될 때까지 기간 지정

-e

 · 사용자 계정 유효기간 설정

 · 일정 시간 동안 사용 가능한 임시 계정을 만들 때 사용

-c

 /etc/passwd에 새로운 사용자 설명 추가

-G

 계정자가 속한 그룹 외에 다른 그룹에 계정자 추가


ex) 계정 dammie 생성 + 계정자 dammie의 홈 디렉터리를 /DAMMIE로 지정

1
2
3
4
[root@localhost ~] $ useradd -/DAMMIE dammie
[root@locallhost ~] $ su - dammie
[dammie@localhost ~] $ pwd
/DAMMIE
cs


나. passwd

1) 생성된 계정자의 패스워드를 입력 및 변경

2) 패스워드는 /etc/shadow 파일 안에 기록됨

· 형식 : passwd [옵션] [계정명]


옵션

설명

-S

 · 계정 상태 표시

   - PS : 정상

   - NP : 패스워드 없음

   - LK : Lock 상태이거나 NP 상태

-d

 계정 패스워드 삭제

-l

 계정 lock 상태로 변경

-u

 계정 lock 상태 해제


ex) 계정자 dammie 상태 확인. 확인 후 패스워드가 지정되어 있지 않으면 패스워드 지정.

1
2
3
4
5
6
7
8
9
[root@localhost ~] $ passwd -S dammie
dammie LK 2019-01-24 0 99999 7 -1 (Password Locked.)
[root@localhost ~] $ passwd dammie
Changing password fo r user dammie.
New password:
Retype New password:
passwd: all authentication tokens updated successfully.
[root@localhost ~] $ passwd -S dammie
dammie PS 2019-01-24 0 99999 7 -1 (Password se t, SHA512 crypt.)
cs


다. su (switch user, substitute user)

· 현재 사용자 게정에서 로그아웃하지 않고 다른 사용자 계정으로 로그인하여 해당 사용자의 권한을 획득하는 명령어

· 형식 : su [옵션] [사용자] [셸 변수]


옵션

설명

-, -l, --login

 지정한 사용자의 환경변수를 적용하여 로그인

-s

 지정된 셸로 로그인

-c

 셸을 실행하지 않고 주어진 명령어 수행


ex1) 셸 환경변수를 가져오지 않고 관리자 root로 계정 변경


1
2
3
4
[kinew@localhost ~] $ su root
Password:
[root@localhost kinew] # pwd
/home/kinew
cs


ex2) 관리자 root의 셸 환경변수를 가져온다.


1
2
3
4
5
[kinew@localhost ~] $ su - root
Password:
Last login: Thu Jan 24 15:49:40 KST 2019 on tty1
[root@localhost ~] # pwd
/root
cs


ex3) 사용자 게정 변환 없이 root 권한으로 명령어 'ls /'를 수행한다.


1
2
3
4
5
[kinew@localhost ~] $ su -'ls /' - root
Password:
bin        boot    dev        etc        home    lib        lib64    media
mnt        opt        proc    root    run        sbin    srv        sys    
tmp        usr        var
cs



4. 사용자 관련 파일 


가. /etc/default/useradd : useradd로 사용자 계정을 추가할 때 사용되는 정보를 읽어오는 파일


1
2
3
4
5
6
7
8
9
[kinew@localhost ~] $ cat /etc/default/useradd
# useradd default file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
cs


옵션

설명

GROUP

 새로 생성되는 계정이 기본적으로 속할 그룹의 GID

HOME

 새로 생성되는 계정의 홈 디렉터리 위치

INACTIVE=-1

 · 새로 생성되는 계정의 패스워드 사용 기간이 만료 후 계정 비활성 일자 지정

 · 0이면 바로 사용 불가능, -1이면 기능을 사용하지 않음

EXPIRE

 · 새로 생성되는 계정의 패스워드 만료일

 · 형식 : YYYY-MM-DD

SHELL

 새로 생성되는 계정의 기본 셸

SKEL

 새로 생성되는 계정의 홈 디렉터리로 복사될 초기 환경설정 파일 디렉터리

CREATE_MAIL_SPOOL

 새로 생성되는 계정의 메일 저장 파일 여부


· /etc/default/useradd는 편집기 또는 명령어 'useradd -D'로 변경한다.


ex) 관리자의 gid는 500, 홈 디렉터리는 /home/example, 셸은 /bin/sh로 변경한다.


1
2
3
4
5
6
7
8
9
[root@localhost ~] # useradd -D -g 500 -b /home/example -s /bin/sh
[root@localhost ~] # useradd -D
GROUP=500
HOME=/home/example
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
cs


나. /etc/passwd : 사용자 정보 파일. 리눅스에 로그인할 때 사용.

· 형식 : [사용자 이름]:[암호화된 비밀번호]:[UID]:[GID]:[설명문]:[홈 디렉터리]:[로그인 셸]


다. /etc/shadow : 사용자의 패스워드 정보가 암호화되어 있는 파일.

· 형식 : [사용자 이름]:[암호화된 비밀번호]:[최근 비밀번호 변경일]:[비밀번호 재설정 대기일 수]:[비밀번호 유효기간]:[비밀번호 변경 경고 기간]:[비밀번호 유예기간]:[비밀번호 만료 이후 계정 사용 불가 기간]:[예약 세팅]


라. /etc/login.defs : 사용자 계정 설정과 관련된 기본값 정의

· 새로운 계정을 생성할 때 반드시 참조하는 파일


MAIL_DIR

 메일 디렉터리

PASS_MAX_DAYS

 패스워드 변경 없이 사용할 수 있는 최대일자

PASS_MIN_DAYS

 패스워드 변경 없이 사용할 수 있는 최소일자

PASS_MIN_LEN

 패스워드의 최소 바이트 수

PASS_WARN_AGE

 패스워드 만료 경고일

UID_MIN

 생성할 수 있는 UID 시작번호

UID_MAX

 생성할 수 있는 최대 UID 번호

GID_MIN

 새로 생성되는 그룹의 GID 시작번호

GID_MAX

 새로 생성되는 그룹의 최대 GID 번호

CREATE_HOME

 홈 디렉터리 생성 여부



5. 사용자 계정 관리


가. usermod

· /home에 위치한 사용자 정보 변경 명령어

· 형식 : usermod [옵션] [계정명]


옵션

설명

-u [uid]

 · 새 UID 지정

 · -o 옵션과 같이 사용하면 강제 설정

-g

 · 새 GID 지정

 · 사용자 그룹 지정 또는 변경

-G

 · 새 보조그룹 지정

 · 기존 그룹에 포함되어 있는 상태에서 새 그룹에 추가 지정

-d [홈 디렉터리]

 · 새 홈 디렉터리 지정

 · -m 옵션과 같이 사용하면 새로 생성 가능

-s [셸]

 새 셸 지정

-c [주석]

 새 주석 지정

-I [id]

 로그인 ID 변경 (새 계정명으로 변경)



나. userdel

· 기존 계정 정보 삭제 명령어

· 옵션 없이 userdel을 사용하면 디렉터리 /etc/passwd, /etc/shadow, /etc/group에서 해당 계정의 정보가 삭제된다.

· 형식 : userdel [옵션] [계정명]


옵션

설명

-r

 계정명의 /var/spool/mail의 메일 파일과 홈 디렉터리 내용 모두 삭제



다. chage
· 패스워드 만료 정보 변경 명령어
· 형식 : chage [옵션] [명령어]

옵션

설명

-l

 사용자 계정 정보 출력

-m

 설정 암호 최소일자

-M

 설정 암호 사용 가능 일자

-E

 암호 만기일

-W

 만기 전 변경 요구 경고 날짜 지정 (지정된 날짜에 경고 메시지 출력)



6. 그룹관리


가. /etc/group

· 사용자 그룹 정의 파일

· 모든 계정은 한 개 이상의 그룹에 포함되어 있다. → /etc/group을 수정하여 계정의 그룹에 대한 변경할 수 있다.

· 형식 : [그룹명]:[패스워드]:[GID]:[그룹에 속한 멤버]


나. /etc/gshadow

· 그룹의 암호를 md5로 암호화하여 저장하며, 그룹의 소유주, 구성원 설정이 가능하다.

· 형식 : [그룹명]:[그룹 암호 (!=부여되지 않음)]:[그룹 소유주]:[그룹 구성원]


다. groupadd

· 새 그룹 생성 명령어

· 형식 : groupadd [옵션] [그룹명]


옵션

설명

-g [gid]

 그룹에 GID 지정

-r

 시스템 그룹 생성 시 사용, 500번 이하 값 지정(남아있는 가장 높은 범위로 할당)



라. groupdel

· 그룹 삭제 명령어

· 그룹 안에 소속되어 있는 계정명이 있을 경우 삭제되지 않는다.

· 형식 : groupdel [그룹명]


마. groupmod

· 그룹 설정 변경 명령어


옵션

설명

-g [gid]

 · GID 변경

 · 옵션 -o와 같이 사용해서 중복 설정

-n [그룹명]

 새로운 그룹명을 변경할 때 사용



7. 사용자 조회 명령어


가. users

· 시스템에 로그인한 사용자 정보 출력 명령어

· 형식 : users [옵션]


옵션

설명

--version

 users 명령어 버전 정보 출력


나. who

· 현재 시스템에 접속해 있는 사용자 조회 명령어

1) 관리자, 일반 사용자 모두 사용 가능

2) 명령어 'who am i' 또는 'whoami'로 자신의 정보를 조회할 수 있다.

· 형식 : who [옵션]


옵션

설명

-b

 마지막 시스템 부팅 시간 출력

-p

 로그인한 사용자, 사용자 수 모두 출력

-r

 현재 시스템 실행 레벨 확인 가능


다. w

· 현재 접속 중인 사용자들의 정보를 나타내는 명령어

1) 확인 가능한 정보

· 서버의 현재 시간 정보

· 서버 부팅 후 시스템 작동 시간

· 서버 접속자의 총 수

· 접속자별 평균 부하율

· 접속자별 서버 접속 ㄱ정명

· TTY명

· 로그인 시간 정보 등

+) JCPU : TTY 필드의 장치명에서 사용되는 모든 프로세스의 CPU 사용 시간

+) PCPU : 해당 프로세스 결과값에서 WHAT 필드에 나타나는 프로세스명에서 사용하는 CPU 총 시간


라. id

· 사용자 계정의 UID, GID, 그룹 확인 명령어

· 형식 : id [옵션] [계졍명]


옵션

설명

-g

 사용자의 GID만 표시

-G

 사용자가 포함되어 있는 모든 그룹 정보 표시

-u

 사용자의 UID만 표시


마. groups

· 사용자 계정이 속한 그룹 목록 확인 명령어

· 형식 : groups [계정명]