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--groupGID 변경-G--groups지정한 그룹에 사용자 추가-s--shell로그인 시 사용할 기분 셸 지정-u--uidUID 변경
[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]👥그룹을 생성-gGID 지정-oGID 중복을 허용-r시스템 그룹 생성 시 사용
[root@localhost ~]# gruopdel [groupName]👩👩👧👧그룹을 삭제[root@localhost ~]# gruopmod [options] [groupName]👩👧👦그룹을 변경-gGID 변경-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파일 목록에서 지정한 파일들에 대해서만 명령 실행-iMIME 타입 문자로 출력-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화면 왼쪽에 행 번호 표시 (빈 행 포함)-s2개 이상의 연속되는 빈 행을 한 행으로 출력
[root@localhost ~]# head [options] [value] [fileName]파일의 첫 행부터 지정한 만큼 출력-cKbyte 단위로 지정하여 출력-n’n’ 행까지 출력-q파일의 이름을 함께 출력하지 않음-v파일의 이름을 함께 출력
[root@localhost ~]# tail [options] [value] [fileName]파일의 마지막 행부터 지정한 만큼 출력-cKbyte 단위로 지정하여 출력-f10줄을 실시간으로 출력-F10줄을 실시간으로 출력, 특정 시간 이후 파일 변동이 있으면 새로운 파일을 출력-n’n’ 행까지 출력-n +n’+n’ 행 이후부터 출력--bytebyte 단위로 지정하여 출력
[root@localhost ~]# more [fileName]파일의 내용을 화면 단위로 출력, 위에서 아래로만 이동 가능b한 화면씩 이동n:/검색어문자열을 검색q종료v현재 위치에서 vi 편집기 실행=현재 위치 행 번호 출력- Enter 한 행씩 이동
- Space Bar 한 화면씩 이동
[root@localhost ~]# less [fileName]파일의 내용을 화면 단위로 출력, 위 · 아래로 이동 가능-c전체화면 갱신-i대· 소문자 구분하여 검색-s2개 이상의 연속되는 빈 행을 한 행으로 출력-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화면 왼쪽에 행 번호 표시 (빈 행 포함)-s2개 이상의 연속되는 빈 행을 한 행으로 출력-b화면 왼쪽에 행 번호 표시 (빈 행 제외)-e제어 문자를 ‘^’ 형태로 출력, 각 행의 마지막에 ‘$’ 문자 추가-n화면 왼쪽에 행 번호 표시 (빈 행 포함)-s2개 이상의 연속되는 빈 행을 한 행으로 출력
[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 주소 조회 및 도메인 이름 조회aIPv4 주소 지정aaaaIPv6 주소 지정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질의 대상 도메인 또는 호스트 이름typeResource Record 타입
- 타입(type)
aIP 주소 정보any지정된 도메인의 모든 정보mx메일서버 정보ns네임서버 정보soa도메인에 대한 선언 부분hinfo호스트 정보txt도메인 이름을 문자열에 매칭
- 옵션(query-type)
[root@localhost ~]# host [option] [domain/IPaddress] [DNS]DNS 서버를 이용하여 도메인 이름에 대한 IP 주소를 획득-d디버깅 모드-lzone 이하 모든 정보 출력-r반복 처리를 하지 않음-ttype을 지정하여 정보를 조회A호스트 IP 주소NS검색한 호스트의 네임 서버PTR도메인 이름 포인터ANYType의 모든 정보
-wDNS 서버의 응답을 기다림
[root@localhost ~]# hostname [option] [fileName]호스트 이름 확인 및 변경-a별칭 출력-d도메인 이름 출력-fFQDN 출력-F지정한 파일에 호스트 이름 설정-i호스트의 IP 주소 출력-s짧은 형식의 호스트 이름 출력-yNIS 도메인 이름 출력
3.4.2 기타 명령어
[root@localhost ~]# date [option] [MMDDhhmm[CC][YY][.ss]][root@localhost ~]# date [option] +FORMAT시스템의 날짜 출력 및 변경[root@localhost ~]# rdate [option] [Time Server IP/domain]원격지 타임 서버에서 시간 정보를 가져와 로컬 시스템과 동기화-4IPv4 주소만 사용-6IPv6 주소만 사용-o지정한 포트로 연결-p호스트 정보만 출력, 설정은 X-s설정만 하고, 호스트 정보 출력은 X-uUDP 사용-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. 리눅스의 설치