3.1 사용자 생성 및 계정 관리
3.1.1 사용자 관련 명령어
[root@localhost ~]# useradd [options] <accountName>
-c
--comment
사용자 계정에 설명 추가-d
--home-dir
사용자 계정의 홈디렉터리 설정-e
--expiredate
사용자 계정의 유효 기간 설정-f
--inactive
패스워드가 만료된 후 계정의 만료 날짜 지정-G
--groups
사용자가 속하게 될 그룹 지정-s
--shell
사용자 계정의 로그인 기본 셸 지정
[root@localhost ~]# passwd [options] <accountName>
-d
--delete
사용자 계정의 패스워드 삭제-l
--lock
사용자 계정을 잠금-S
--status
계정 상태 출력- PS: 정상
- NP: 패스워드 미설정
- LK: 잠금 상태 또는 NP 상태
-u
--unlock
잠금 상태의 사용자 계정을 해제
[root@localhost ~]# su [options] [-] [<user> [<argument>...]]
Switch User-
-l
--login
사용자의 환경변수를 적용하여 로그인-c
--command
셸을 실행하지 않고, 주어진 명령어 실행-s
--shell
지정된 셸로 로그인
3.1.2 사용자 관련 파일
- /etc/default/useradd: 👩사용자 계정 생성 시 가장 먼저 참조
- 👥GROUP: 새로 사용자 계정 생성 시 기본적으로 소속될 GID 지정
- 🏡HOME: 새로 사용자 계정 생성 시 홈 디렉터리 지정
- INACTIVE: 새로 사용자 생성 시 패스워드 사용 기간이 만료된 후 계정이 사용 불가능하게 되는 날짜 지정 (’0’이면 사용 불가능하며 ‘-1’이면 무한대)
- 📅EXPIRE: 새로 사용자 계정 생성 시 패스워드 만료 날짜 지정
- 🐚SHELL: 새로 사용자 계정 생성 시 기본 셸 지정
- SKEL: 새로 사용자 계정 생성 시 추가되는 홈 디렉터리에 복사할 파일들이 있는 디렉터리의 경로
- 📬CREATE_MAIL_SPOOL: 새로 생성되는 사용자 계정의 메일함 생성 여부 지정
- /etc/login.defs: 👨사용자 계정 생성 시 두 번째로 참조하는 파일로 기본값을 정의
- 💌MAIL_DIR: 메일 디렉터리 지정
- 🗝️PASS_MAX_DAYS: 패스워드 만료일
- 🔑PASS_MIN_DAYS: 패스워드 변경 후 다시 변경할 수 있는 최소 일 수
- 🔒PASS_MIN_LEN: 패스워드 최소 길이
- PASS_WARN_AGE: 설정된 일 수가 남았을 때, 패스워드 만료 경고 메시지를 보냄
- UID_MIN: 사용자에게 할당할 수 있는 최소 UID 번호
- UID_MAX: 사용자에게 할당할 수 있는 최대 UID 번호
- 🏠CREATE_HOME: 홈 디렉터리 생성 여부
- UMASK: 사용자 계정 생성 시 홈 디렉터리의 UMASK 값을 설정
- USERGROUPS_ENAB: ‘userdel’ 명령 시 사용자가 없는 그룹을 삭제할 것인지 여부
- ENCRYPT_METHOD: 암호화 방법
- /etc/skel: ‘/etc/default/useradd’ 파일에서 ‘SKEL’의 값은 ‘/etc/skel’ 디렉터리를 의미. ’useradd’ 명령을 사용하면 ‘/etc/skel’ 디렉터리에 있는 파일들이 새롭게 생성되는 사용자 홈 디렉터리에 복사됨
- .bash_logout: 사용자가 로그아웃하기 바로 직전에 실행하는 프로그램에 관한 배시의 지역적인 시스템 설정과 관련된 파일
- .bash_profile: 환경변수와 bash가 수행될 때 실행되는 프로그램을 제어하는 지역적인 시스템 설정과 관련된 파일
- .bashrc: 별칭(alias)과 bash가 수행될 때 실행되는 함수를 제어하는 지역적인 시스템 설정과 관련된 파일
- /etc/passwd: 사용자 계정 정보를 저장하고 있는 파일로 로그인 시 사용. 7개의 필드로 구성되어 있으며 ‘:’(colon)으로 구분
- username : password : uid : gid : comment : homedirectory : shell
- /etc/shadow: 사용자의 패스워드가 저장되어 있는 파일. 9개의 필드로 구성되어 있으며 ‘:’(colon)으로 구분
- username : password : lastchange : mindays : maxdays : warndays : inactive : expire : flag
3.1.3 사용자 계정 관리
[root@localhost ~]# usermod [options] [values] <accountName>
-c
--comment
설명 변경-d
--home-dir
👤사용자 홈디렉터리 변경-e
--expiredate
계정 만료일 변경-f
--inactive
사용자 계정 유효일 지정-g
--group
GID 변경-G
--groups
지정한 그룹에 사용자 추가-s
--shell
로그인 시 사용할 기분 셸 지정-u
--uid
UID 변경
[root@localhost ~]# usermod [options] <accountName>
-r
--remove
’/etc/passwd’, ‘/etc/shadow’, ‘/etc/group’ 파일의 정보와 ‘/var/spool/mail/계정 파일’과 홈디렉터리의 모든 내용을 삭제
3.1.4 사용자 정보 조회 명령어
[root@localhost ~]# users
💻시스템에 로그인한 사용자 정보 출력[root@localhost ~]# w
시스템에 로그인한 사용자 정보를 자세히 출력[root@localhost ~]# who [options] [file | arg1 arg2]
-a
--all
모든 정보 출력-H
--Heading
각 필드의 제목과 함께 출력-u
--users
사용자의 Idle Time🕜 확인
[root@localhost ~]# whoami
시스템에 로그인한 🧚🏿♀️사용자 정보 출력[root@localhost ~]# id
시스템에 로그인한 사용자의 uid, gid, group 정보 출력
3.2 그룹 생성 및 그룹 관리
3.2.1 그룹 관리 명령어
[root@localhost ~]# gruopadd [options] [groupName]
👥그룹을 생성-g
GID 지정-o
GID 중복을 허용-r
시스템 그룹 생성 시 사용
[root@localhost ~]# gruopdel [groupName]
👩👩👧👧그룹을 삭제[root@localhost ~]# gruopmod [options] [groupName]
👩👧👦그룹을 변경-g
GID 변경-n
그룹명 변경
3.2.2 그룹 관련 파일
- /etc/group: 👥사용자 그룹 정보가 저장된 파일
- groupName : password : gid : members
- /etc/gpasswd: 👥그룹의 패스워드가 암호화되어 저장되어 있는 파일
- groupName : password : owner : members
3.2.3 그룹 정보 조회 명령어
[root@localhost ~]# group
현재 사용자의 그룹 정보를 확인
3.3 디렉터리 및 파일
3.3.1 디렉터리 관련 명령어
[root@localhost ~]# mkdir [options] [directoryName]
디렉터리를 생성-m
디렉터리 권한 설정-p
하위 디렉터리를 한 번에 생성-v
디렉터리 생성 후 디렉터리 정보 출력
[root@localhost ~]# rmdir [directoryName]
디렉터리를 삭제[root@localhost ~]# cd [directory]
디렉터리 이동~
사용자 홈 디렉터리.
현재 디렉터리..
한 단계 상위 디렉터리
[root@localhost ~]# pwd [options]
현재 작업 중인 디렉터리를 출력-L
현재 작업 중인 디렉터리가 심볼릭 링크일 경우 심볼릭 링크의 경로를 표시-P
현재 작업 중인 디렉터리가 심볼릭 링크일 경우 원래 디렉터리의 경로를 표시
3.3.2 파일 관련 명령어
[root@localhost ~]# ls [options] [directoryName]
디렉터리 안의 파일 또는 디렉터리 목록을 출력-a
숨김 파일을 포함한 모든 목록을 출력-d
디렉터리 목록만 출력-F
파일이 디렉터리인 경우 /, 실행 파일인 경우 *, 소켓 파일인 경우 =, 심볼릭 링크인 경우 @를 파일 뒤에 표시하여 출력-l
파일의 모드, 링크 수, 소유자, 크기 등을 상세하게 출력-m
쉼표로 구분하여 출력-r
알파벳 역순으로 정렬하여 출력-R
하위 디렉터리 목록까지 순차적 출력-s
킬로바이트 단위로 정렬하여 출력-t
최종 수정 시간을 기준으로 정렬하여 출력
[root@localhost ~]# cp [options] [target] [target]
파일이나 디렉터리 복사-b
동일한 파일명이 존재할 경우 복사본 생성-f
동일한 파일명이 존재할 경우 덮어쓰기 여부 확인 없이 덮어씀-i
동일한 파일명이 존재할 경우 덮어쓰기 여부 확인 후 덮어씀-p
원본과 동일한 모드, 소유자, 시간 정보를 유지하여 복사-P
원본이 디렉터리 경로와 함께 지정되었을 경우 지정된 디렉터리 경로를 포함하여 복사-S
동일한 파일명이 존재할 경우 백업 파일의 확장자를 지정-u
동일한 파일명이 존재할 경우 원본 파일이 대상 파일보다 최신 파일일 경우에만 복사
[root@localhost ~]# mv [options] [source] [target]
파일이나 디렉터리 이동, 파일이나 디렉터리 이름 변경-b
동일한 파일명이 존재할 경우 복사본 생성-f
동일한 파일명이 존재할 경우 덮어쓰기 여부 확인 없이 덮어씀-i
동일한 파일명이 존재할 경우 덮어쓰기 여부 확인 후 덮어씀-u
동일한 파일명이 존재할 경우 원본 파일이 대상 파일보다 최신 파일일 경우에만 이동-v
과정을 출력
[root@localhost ~]# rm [options] [file/directory]
파일이나 디렉터리 삭제-d
디렉터리 삭제-f
삭제 여부 묻지 않고 삭제-i
삭제 여부 묻고 삭제-r
하위 디렉터리를 포함하여 모두 삭제-v
과정을 출력
[root@localhost ~]# touch [options] [value] [file/directory]
크기가 0Byte인 빈 파일을 생성, 현재 시간으로 파일의 타임 스탬프를 변경-a
현재 시간으로 파일의 접근 시간, 변경 시간 수정-c
기존에 파일이 없으면 파일이 생성되지 않음-d
지정한 시간으로 접근 시간, 수정 시간이 수정-m
현재 시간으로 파일의 수정 시간, 변경 시간 수정-r
지정한 파일의 접근 시간, 수정 시간으로 파일을 수정-t
지정한 시간으로 접근 시간, 수정 시간이 수정
[root@localhost ~]# file [options] [file/directory]
파일의 유형 및 속성 확인-b
파일명을 제외하고 유형만 출력-f
파일 목록에서 지정한 파일들에 대해서만 명령 실행-i
MIME 타입 문자로 출력-L
심볼릭 링크의 원본 파일을 추적하여 출력-z
압축 파일의 내용 출력
[root@localhost ~]# find [path] [options] [arg1, arg2 ...]
조건에 맞는 파일이나 디렉터리를 검색하여 경로 출력-delete
검색된 파일 또는 디렉터리 삭제-empty
크기가 0인 파일 또는 빈 디렉터리 검색-exec
검색된 파일에 대해 명령 실행-name
문자열 패턴을 기준으로 검색-print
검색 결과 출력, 검색 항목은 새로운 행으로 구분-size
파일 크기를 기준으로 검색-type
파일 유형을 기준으로 검색-atime
접근 시각을 기준으로 검색-ctime
속성 변경 시각을 기준으로 검색-mtime
데이터 수정 시각을 기준으로 검색
[root@localhost ~]# locate [options] [fileName]
파일의 위치를 출력-e
검색에서 제외할 디렉토리 지정-n
지정한 개수만큼 출력
[root@localhost ~]# whereis [keyword]
명령어 바이너리, 소스, 매뉴얼 파일 위치 검색[root@localhost ~]# which [keyword]
명령서 실행 파일의 위치 검색
3.3.3 파일 내용 출력 명령어
[root@localhost ~]# cat [options] [fileName]
파일의 내용 출력, 파일의 내용 합치기-b
화면 왼쪽에 행 번호 표시 (빈 행 제외)-e
제어 문자를 ‘^’ 형태로 출력, 각 행의 마지막에 ‘$’ 문자 추가-n
화면 왼쪽에 행 번호 표시 (빈 행 포함)-s
2개 이상의 연속되는 빈 행을 한 행으로 출력
[root@localhost ~]# head [options] [value] [fileName]
파일의 첫 행부터 지정한 만큼 출력-c
Kbyte 단위로 지정하여 출력-n
’n’ 행까지 출력-q
파일의 이름을 함께 출력하지 않음-v
파일의 이름을 함께 출력
[root@localhost ~]# tail [options] [value] [fileName]
파일의 마지막 행부터 지정한 만큼 출력-c
Kbyte 단위로 지정하여 출력-f
10줄을 실시간으로 출력-F
10줄을 실시간으로 출력, 특정 시간 이후 파일 변동이 있으면 새로운 파일을 출력-n
’n’ 행까지 출력-n +n
’+n’ 행 이후부터 출력--byte
byte 단위로 지정하여 출력
[root@localhost ~]# more [fileName]
파일의 내용을 화면 단위로 출력, 위에서 아래로만 이동 가능b
한 화면씩 이동n:/검색어
문자열을 검색q
종료v
현재 위치에서 vi 편집기 실행=
현재 위치 행 번호 출력- Enter 한 행씩 이동
- Space Bar 한 화면씩 이동
[root@localhost ~]# less [fileName]
파일의 내용을 화면 단위로 출력, 위 · 아래로 이동 가능-c
전체화면 갱신-i
대· 소문자 구분하여 검색-s
2개 이상의 연속되는 빈 행을 한 행으로 출력-x
수치를 지정해서 탭 간격 조정q
종료- 행 번호 지정된 행 다음부터 출력
- ↑ 한 행씩 위로 이동
- ↓ 한 행씩 아래로 이동
- Page Up 한 화면씩 위로 이동
- Page Down 한 화면씩 아래로 이동
- Enter 한 행씩 아래로 이동
- Space Bar 한 화면씩 아래로 이동
[root@localhost ~]# grep [string] [options] [fileName]
파일 안에서 지정한 패턴 또는 문자열을 검색하여 그 결과를 출력, 한 디렉터리 안에서 지정한 패턴 또는 문자열을 포함하는 파일을 출력 (grep
다중 패턴 검색 /egrep
정규 표현식 검색 /fgrep
단순 패턴 검색)-c
패턴이 일치하는 행의 수 출력-i
대· 소문자 구분하여 검색-I
패턴이 포함된 파일 이름 출력-n
행 번호 출력-v
지정한 패턴과 일치하지 않는 행만 출력-w
패턴이 전체 문자열과 일치하는 행만 출력
[root@localhost ~]# wc [options] [fileName]
파일 안의 행, 문자수를 출력-c
문자 개수 출력-I
행 개수 출력-w
단어 개수 출력
[root@localhost ~]# sort [options] [fileName]
명령어 수행 결과 또는 파일 내용을 정렬하여 출력-b
선행 공백 무시-c
정렬 여부 검사-f
대 · 소문자를 구분하지 않고 정렬-m
정렬된 파일 병합-n
숫자로 한정하여 정렬-o
저장할 파일명 지정-r
역순(내림차순)으로 정렬-R
해시값을-t
필드 구분자 지정-u
정렬 후 중복된 내용 제거
[root@localhost ~]# cut [options] [fileName]
파일에서 특정 필드를 출력-b
바이트 단위 지정-c
문자 단위 지정-d
필드 구분자로 DELIM 사용-f
지정한 필드만 출력-s
필드 구분자를 포함한 행만 출력
[root@localhost ~]# split [options] [fileName]
하나의 파일을 여러 개로 분할-a
바이트 단위 지정-b
문자 단위 지정-l
필드 구분자로 DELIM 사용--additional-suffix
확장자명 지정
3.3.4 파일 비교 명령어
[root@localhost ~]# diff [options] [fileName1] [fileName2]
두 개의 파일을 비교하여 다른 내용을 출력 (return 0: 차이 없음, 1: 차이 있음, 2: ERROR)-b
화면 왼쪽에 행 번호 표시 (빈 행 제외)-e
제어 문자를 ‘^’ 형태로 출력, 각 행의 마지막에 ‘$’ 문자 추가-n
화면 왼쪽에 행 번호 표시 (빈 행 포함)-s
2개 이상의 연속되는 빈 행을 한 행으로 출력-b
화면 왼쪽에 행 번호 표시 (빈 행 제외)-e
제어 문자를 ‘^’ 형태로 출력, 각 행의 마지막에 ‘$’ 문자 추가-n
화면 왼쪽에 행 번호 표시 (빈 행 포함)-s
2개 이상의 연속되는 빈 행을 한 행으로 출력
[root@localhost ~]# cmp [options] [fileName1] [fileName2]
두 개의 파일을 바이트 단위로 비교-b
두 파일을 비교하여 다른 바이트 수 출력-i
최초의 Skip 바이트를 무시-l
두 파일을 비교하여 다른 문자 개수를 출력-s
종료 코드만 출력 (return 0: 차이 없음, 1: 차이 있음, 2: ERROR)
[root@localhost ~]# comm [options] [fileName1] [fileName2]
두 파일을 행 단위로 비교-1
파일1에 있는 행은 출력하지 않음-2
파일2에 있는 행은 출력하지 않음-3
파일1과 파일2에 공통으로 있는 행은 출력하지 않음
3.3.5 리다이렉션과 파이프
[root@localhost ~]# cat [file1] > [file2]
리다이렉션 : 표준 입출력을 재지정하는 기능 (표준 입력 : 키보드 / 표준 출력 : 모니터)>
명령을 프린터나 파일로 출력 (파일이 있으면 오버라이드, 없으면 생성)>>
지정한 파일 존재 여부에 따라 추가 또는 새로운 파일 생성<
키보드가 아닌 지정한 파일에서 입력을 읽어 옴>&
명령의 출력을 다른 명령의 입력으로 보냄&<
명령의 입력을 읽고 다른 명령의 출력으로 보냄
[root@localhost ~]# [command1]|[command2]|[command3]
파이프 : 여려 개의 명령어를 연결, 프로세스와 프로세스간 통로 역할[root@localhost ~]# [command1];[command2];[command3]
세미콜론 : 하나의 라인에 여려 개의 명령어를 실행 (먼저 실행된 명령어가 실패하더라도 다음 명령어를 실행)
3.4 기타 명령
3.4.1 네트워크 관련 명령어
[root@localhost ~]# ping [options] [IP Address/Domain]
네트워크에 연결된 호스트와 호스트 간의 연결 상태를 확인-c
지정한 횟수 만큼 패킷 전송-d
소켓이 사용하는 SO_DEBUG 기능 사용-f
다량의 패킷을 전송-i
패킷 전송 사이 대기 시간 지정-l
패킷을 전송할 인터페이스 지정-n
호스트 이름을 찾지 않고 IP 주소만 찾음-r
패킷을 로컬 인터페이스에만 보냄
[root@localhost ~]# traceroute [options] [IP Address/Domain]
목적지 호스트까지 경로를 기록 및 출력, 장애 구간 파악 가능-m
홉 수 지정-n
호스트 이름 검색을 하지 않음-p
시작 포트 지정-q
패킷 수 지정-w
타임아웃 지정
[root@localhost ~]# nslookup [-type=record] [IP Address/Domain]
도메인 이름으로 IP 주소 조회 및 도메인 이름 조회a
IPv4 주소 지정aaaa
IPv6 주소 지정mx
메일서버 지정ns
네임서버 지정soa
도메인에 대한 선언 부분srv
특정 서비스에 대한 특정 도메인을 연결txt
도메인 이름을 문자열에 매칭ptr
역방향 질의로 IP 주소에 대한 도메인 응답cname
별칭 지정
[root@localhost ~]# dig [@server] [query-type] [query-class]
도메인 이름으로 IP 주소를 조회 및 IP 주소로 도메인 조회- 옵션(query-type)
@server
질의를 위한 DNS 서버를 지정 (default : ‘resolv.conf’에 있는 네임서버)domain
질의 대상 도메인 또는 호스트 이름type
Resource Record 타입
- 타입(type)
a
IP 주소 정보any
지정된 도메인의 모든 정보mx
메일서버 정보ns
네임서버 정보soa
도메인에 대한 선언 부분hinfo
호스트 정보txt
도메인 이름을 문자열에 매칭
- 옵션(query-type)
[root@localhost ~]# host [option] [domain/IPaddress] [DNS]
DNS 서버를 이용하여 도메인 이름에 대한 IP 주소를 획득-d
디버깅 모드-l
zone 이하 모든 정보 출력-r
반복 처리를 하지 않음-t
type을 지정하여 정보를 조회A
호스트 IP 주소NS
검색한 호스트의 네임 서버PTR
도메인 이름 포인터ANY
Type의 모든 정보
-w
DNS 서버의 응답을 기다림
[root@localhost ~]# hostname [option] [fileName]
호스트 이름 확인 및 변경-a
별칭 출력-d
도메인 이름 출력-f
FQDN 출력-F
지정한 파일에 호스트 이름 설정-i
호스트의 IP 주소 출력-s
짧은 형식의 호스트 이름 출력-y
NIS 도메인 이름 출력
3.4.2 기타 명령어
[root@localhost ~]# date [option] [MMDDhhmm[CC][YY][.ss]]
[root@localhost ~]# date [option] +FORMAT
시스템의 날짜 출력 및 변경[root@localhost ~]# rdate [option] [Time Server IP/domain]
원격지 타임 서버에서 시간 정보를 가져와 로컬 시스템과 동기화-4
IPv4 주소만 사용-6
IPv6 주소만 사용-o
지정한 포트로 연결-p
호스트 정보만 출력, 설정은 X-s
설정만 하고, 호스트 정보 출력은 X-u
UDP 사용-v
상세 정보 출
[root@localhost ~]# cal [option] [Year]
달력을 출력-i
율리우스력 출력-y
현재 연도 기준 모든 월 출력
[root@localhost ~]# time
프로그램의 실행 시간을 출력[root@localhost ~]# tty
현재 사용하고 있는 단말 장치의 경로와 파일명 출력[root@localhost ~]# clear
터미널 화면을 모두 지움[root@localhost ~]# wall
현재 로그인된 모든 사용자에게 터미널 메시지 전송[root@localhost ~]# write [userName] [ttyName]
지정한 사용자에게 메시지를 전송[root@localhost ~]# mesg [y|n]
수신 메시지 여부 확인 및 제어
PREVIOUS2. 리눅스의 설치
NEXT1. 요구사항 분석