
※레드햇 계열인 Rocky Linux를 기준으로 정리했습니다.
•
관련 파일 위치를 모를 땐 find
# 루트 경로부터 이하 중에서 파일 이름 찾기
sudo find / -name "파일 이름"•
매뉴얼은 man
man useradd
# configuration 파일도 매뉴얼이 있음
man sshd.conf•
명령어가 생각이 안 날 땐 compgen -c
# 가능한 명령어를 모두 출력
compgen -c
# 그중에서 pv가 들어있는 명령어 목록 출력
compgen -c | grep pvcreate a new user or update default new user information
새로운 유저를 생성하거나 새로운 유저에게 할당되는 기본값을 업데이트하기 위해 사용합니다.
•
useradd [옵션] [User] : 유저 생성
•
useradd -D : 새로운 유저에게 할당되는 기본값 출력
•
useradd -D [옵션] : 기본값 업데이트
-D 옵션 없이 사용하면 useradd 명령어는 새로운 유저 계정을 만듭니다. 이 때, 명시한 옵션이 있다면 해당 값을 사용하고, 없으면 시스템의 기본값을 사용합니다. 옵션에 따라 useradd 명령어는 시스템 파일을 업데이트하고 새로운 유저의 홈 디렉토리와 초기값을 복사할 수 있습니다.
기본적으로 그룹이 함께 생성됩니다.
레드햇 계열에서 adduser 명령어는 useradd 명령어에 대한 링크 파일이므로 같은 명령어입니다. 반면 데비안 계열에서는 adduser라는 별도의 명령어가 존재해 계정 생성 시 비밀번호와 사용자의 기타 정보를 받습니다.
•
—badname : 표준에서 허용하지 않는 이름을 허용
•
-b, —base-dir : 기본 홈 디렉토리의 베이스 경로 지정. 여러 사용자를 일정한 경로 기준으로 만들고 싶을 때 사용. -d 옵션보다 우선순위가 낮아 -d 옵션이 명시되어 있다면 -b 옵션은 무시됨
•
-c, —comment : 사용자 계정에 대한 설명을 추가. 보통 사용자의 풀네임이나 역할, 부서 등을 넣는 용도로 사용. 이 정보는 /etc/passwd 파일의 5번째 필드(GECOS)에 저장됨
•
-d, —home-dir : 홈 디렉토리를 직접 지정. 기본값은 /home/사용자이름 이지만 이 옵션으로 원하는 경로를 설정할 수 있음
•
-D, —defaults : 기본값 관련 옵션
•
-e, —expiredate : 계정 만료일을 지정. 지정된 날짜 이후로는 로그인이 불가능
•
-f, —inactive : 비밀번호 만료 후 비활성 상태까지의 유예 기간 (일 수)를 지정. 0으로 설정하면 만료 즉시 비활성화됨
•
-g, —gid : 기본 그룹 ID(GID)를 지정. 그룹은 /etc/group 에 미리 생성되어 있어야 함
•
-G, —groups : 추가적인 보조 그룹들을 쉼표로 구분해 지정
•
-k, —skel : 스켈레톤 디렉토리를 지정. 스켈레톤 디렉토리는 사용자 홈 디렉토리를 만들 때, 초기 파일들과 디렉토리 구조를 복사해오는 원본 경로임. 이 옵션은 -m 옵션과 함께 사용될 때만 유효함. 따로 지정하지 않으면 기본값은 /etc/default/useradd 파일의 SKEL 값이 사용되며 이 설정값이 없다면 /etc/skel 이 기본 경로
•
-K, —key : /etc/login.defs 에 존재하는 UID_MIN, UID_MAX, UMASK, PASS_MAX_DAYS와 같은 기본 설정을 오버라이드하기 위해 사용
•
-m, —create-home : 홈 디렉토리를 자동으로 생성. /home/사용자이름 이나 -d 옵션으로 지정한 경로에 디렉토리를 생성함
•
-M, —no-create-home : 홈 디렉토리를 생성하지 않음
•
-p, —password : 암호화된 형식의 패스워드를 지정. 보통 openssl passwd 등을 이용해 미리 암호화한 값을 입력해야 함
•
-r, —system : 시스템 계정을 생성. 일반 계정보다 낮은 UID가 부여됨
•
-s, —shell : 유저가 사용할 기본 로그인 셸을 지정. /bin/bash , /bin/sh , /usr/sbin/nologin 등의 옵션을 지정할 수 있음
•
-u, —uid : 사용자 ID(UID)를 지정. 지정하지 않으면 시스템에서 자동으로 할당됨
•
-Z, —selinux-user : SELinux 보안 컨텍스트를 설정
modify a user account
유저 계정을 수정합니다.
•
usermod [옵션] [User] : 유저 수정
옵션으로 명시된 변경사항을 시스템 계정 파일에 반영합니다.
•
-a, —append : 현재 사용자가 속한 그룹은 유지한 채, 새로운 그룹을 추가로 부여할 때 사용. 반드시 -G 옵션과 함께 사용해야 함. -G 옵션만 단독으로 사용하면 기존 보조 그룹이 모두 사라지고 새 그룹으로 덮어쓰기 됨
•
-b, —badname : 표준에서 허용하지 않는 이름을 허용
•
-c, —comment : 사용자의 설명을 변경. /etc/passwd 의 GECOS 필드에 반영됨
•
-d, —home : 홈 디렉토리 경로를 변경
•
-e, —expiredate : 계정 만료일을 변경
•
-f, —inactive : 비밀번호 만료 후 비활성까지 유예기간(일 수)를 설정
•
-g, —gid : 기본 그룹을 변경. 그룹은 이미 존재해야 함
•
-G, —groups : 보조 그룹 목록을 설정함. -a 옵션 없이 단독으로 사용하면 기존 그룹은 덮어쓰기 됨
•
-l, —login : 사용자의 이름을 변경
•
-L, —lock : 사용자의 비밀번호를 잠금 (로그인 비활성화). /etc/shadow 에 !가 추가됨
•
-m, —move-home : -d 옵션과 함께 사용하면, 기존 홈 디렉토리의 내용을 새 디렉토리로 이동시킴
•
-p, —password : 암호화된 비밀번호를 직접 변경. openssl passwd 등을 통해 암호화된 비밀번호를 직접 생성해야 함
•
-s, —shell : 로그인 셸을 변경
•
-u, —uid : UID를 변경
•
-U, —unlock : 잠긴 계정의 비밀번호를 잠금 해제함
delete a user account and related files
유저 계정과 관계된 파일들을 삭제합니다.
•
userdel [옵션] [User] : 유저 삭제
시스템 계정 파일을 수정해 사용자 이름을 참조하는 모든 항목을 삭제합니다.
•
-f, —force : 강제 삭제. 사용자가 로그인 중이더라도 삭제하며, NIS , LDAP 사용자의 경우에도 강제로 삭제가 가능. 또한 홈 디렉토리나 메일 스풀 제거에 실패 시에도 에러 없이 강제로 삭제
•
-r, —remove : 홈 디렉토리와 메일 스풀도 함께 삭제
create a new group
새로운 그룹을 만듭니다.
•
groupadd [옵션] [Group] : 그룹 추가
시스템 기본값과 명시된 옵션값을 이용해 새로운 그룹을 만듭니다.
•
-f, —force : 그룹이 이미 존재하면 에러를 무시하거나, -g와 함께 쓰면 GID가 다른 경우에만 그룹을 생성
•
-g, —gid : 새 그룹의 GID를 수동으로 지정
•
-K, —key : login.defs의 설정을 일시적으로 덮어쓰기
•
-r, —system : 시스템 그룹을 생성할 때 사용. 일반적으로 GID < 1000
•
-U, —users [user1, user2, …] : 그룹의 멤버로 추가할 유저 이름의 리스트
modify a group definition on the system
시스템의 그룹 정의를 수정합니다.
•
groupmod [옵션] [Group] : 그룹 정의 수정
그룹 데이터베이스의 항목을 수정함으로써 특정 그룹의 정의를 수정합니다.
•
-a, —append : -U 옵션과 함께 사용 시, 기존 그룹 구성원 목록에 사용자를 추가
•
-g, —gid [gid] : 그룹의 GID를 변경
•
-n, —new-name : 그룹의 이름을 바꿈
•
-U, —users : 해당 그룹에 사용자들을 멤버로 지정. -a 옵션 없이 단독으로 사용 시 기존 멤버들을 덮어쓰므로 주의
delete a group
그룹을 삭제합니다.
•
groupdel [옵션] [Group] : 그룹 정의 수정
그룹이 참조하고 있는 모든 항목을 삭제해 시스템 계정 파일을 수정합니다. 어떤 사용자의 기본 그룹으로 설정되어 있는 그룹은 삭제할 수 없습니다.
또한 그룹을 삭제해도 파일의 소유권은 남습니다.
•
Noop
update user’s authentication tokens
유저의 인증 토큰을 업데이트합니다.
•
passwd [옵션] [Username] : 비밀번호 설정 혹은 변경
사용자 계정의 비밀번호를 설정하거나 변경하는 명령어입니다. 시스템 보안 정책에 따라 비밀번호 만료일 설정, 계정 잠금/해제, 강제 초기화 등도 할 수 있습니다.
•
-l, —lock : 계정을 잠금 상태로 만듭니다. 비밀번호 앞에 ! 추가됨
•
-u, —unlock : 잠금된 계정을 잠금 해제함
•
-d, —delete : 비밀번호를 제거. 비밀번호 없이 로그인이 허용되므로 주의
•
-e, —expire : 즉시 만료 처리. 다음 로그인 시 반드시 새 비밀번호를 설정하도록 강제
•
-i, —inactive [Days] : 비밀번호 만료 후 계정이 비활성화되기까지 유예 기간 설정
•
-n, —minimum [Days] : 비밀번호 최소 사용 기간 설정 (변경 불가 기간)
•
-x, —maximum [Days] : 비밀번호 최대 사용 기간 설정 (만료까지 허용 일 수)
•
-w, —warning [Days] : 비밀번호 만료 전에 경고 메시지를 출력할 시작 시점 설정
•
-S, —status : 현재 사용자 비밀번호 상태를 간단히 출력
print real and effective user and group IDs
RUID 혹은 EUID, GID를 출력합니다.
•
id [옵션] : 정보 출력
특정 유저의 UID, GID를 출력하거나, 대상 없이 사용할 경우 현재 유저의 정보를 출력합니다.
일반적인 경우 RUID = EUID이므로 id 명령어를 사용하면 구분없이 실행됩니다. 좀 더 정확히 말하면 실행 당시의 EUID를 기준으로 출력합니다.
•
-u, —user : EUID만 출력
•
-g, —group : EGID만 출력
•
-G, —groups : 모든 GID를 출력
•
-n, —name : 숫자 대신 이름으로 출력. -ugG 와 함께 사용
•
-r, —real : EUID, EGID 대신 RUID, RGID 출력. sudo 등으로 실행해 Real User와 Effective User가 다를 경우 효과적임
change user password expiry information
사용자의 비밀번호 만료 정책을 설정하거나 조회합니다.
•
chage [옵션] [Username] : 실행
비밀번호 최소/최대 사용일, 비밀번호 경고 기간, 비밀번호 비활성 기간, 계정 만료일 등을 설정할 수 있습니다.
•
-l, —list : 사용자 계정의 현재 비밀번호 만료 정책을 읽기 전용으로 출력
•
-m, —mindays : 비밀번호 변경 최소 사용일수 설정
•
-M, —maxdays : 비밀번호 최대 사용일수 설정
•
-W, —warndays : 만료 전에 경고 메시지를 보여줄 기간 설정
•
-I, —inactive : 만료 후 비밀번호 미변경 시 계정을 비활성화할 유예 기간
•
-E, —expiredate : 계정의 만료일 설정
•
-d, —lastday : 마지막으로 비밀번호를 변경한 날짜 수동 설정
show who is logged on
현재 시스템에 로그인한 사용자 목록과 관련 정보를 간단히 출력합니다.
•
who [옵션]
-
•
-a, —all : 모든 정보 출력. -b, -d, -l, -p, -r, -t, -T, -u 포함
•
-b, —boot : 시스템이 마지막으로 부팅된 시간 표시
•
-d, —dead : 데드 프로세스 출력
•
-H, —heading : 헤더를 포함해 출력
•
-q, —count : 로그인한 사용자 이름과 총 인원 수만 간단히 출력
•
-r, —runlevel : 현재 런레벨 표시
•
-m : 현재 터미널에서 로그인한 사용자만 표시 who -m = who am i
list directory contents
디렉토리의 컨텐츠를 리스트로 보여줍니다.
•
ls [옵션]
파일 (기본적으로 현재 디렉토리)에 대한 정보를 나열합니다. -cftuvSUX나 —sort 옵션이 없다면 일반적으로 알파벳순으로 정렬됩니다.
•
-a, —all : .으로 시작하는 항목들을 무시하지 않고 출력
•
-A, —almost-all : . , .. 는 나열하지 않음
•
-l : 권한, 소유자, 크기, 수정시간 등 상세 정보를 출력 (long format)
•
-h, —human-readable : -l 옵션과 함께 사용 시, 파일 크기를 KB/MB 단위로 보기 좋게 출력
•
-t : 시간 기준 정렬
•
-r, —reverse : 정렬 순서를 반대로 표시
•
-S : 파일 크기 순으로 정렬
•
-R, —recursive : 하위 디렉토리까지 재귀적으로 목록 출력
•
-d, —directory : 디렉토리 이름 자체만 출력
list contents of directories in a tree-like format
디렉토리의 컨텐츠를 트리 형태로 나열합니다.
•
tree [옵션]
디렉토리 구조를 트리 형태로 시각적으로 출력해 줍니다. 또한 LS_COLORS 환경변수가 설정되어 있고, Output이 TTY로 출력된다면 컬러로 출력됩니다. 또, Listing, File, Sorting, Graphics, XML/JSON/HTML, Input, Misc 등 다양한 옵션이 존재합니다.
•
-a, —all : . 로 시작하는 숨김 파일을 포함해 출력
•
-d : 디렉토리만 출력
•
-L [Level] : 최대 디렉토리 깊이 제한
•
-f : 전체 경로로 출력
•
-i : 트리 구조의 가치 표시를 생략하고 출력
•
-s : 각 파일의 크기(Byte)를 출력
•
-h : -s 옵션과 함께 사용하면 크기를 사람이 읽기 쉽게 KB, MB 단위로 출력
•
-p : 파일 권한을 함께 출력
•
-u, -g : 소유자, 그룹 이름을 함께 출력
•
—du : 각 디렉토리의 총 용량을 계산해 출력
copy files and directories
파일과 디렉토리를 복사한다.
•
cp [옵션] [Source] [Dest] : Source를 Dest로 복사
•
cp [옵션] [Source1, Source2, Source3, …] [Directory] : 여러 개의 Source를 Directory로 복사
•
cp [옵션] -t [Directory] [Source1, Source2, Source3, …] : 여러 개의 Source를 Directory로 복사
원본 파일을 복사하거나 여러 개의 원본 파일을 디렉토리로 복사합니다.
•
-r, -R, —recursive : 디렉토리를 재귀적으로 복사해 하위 폴더까지 전체 복사
•
-i, —interactive : 덮어쓰기 전에 사용자에게 확인 요청
•
-f, —force : 존재하는 파일을 덮어쓰기하며 강제로 복사
•
-u, —update : 기존 파일보다 새로울 때만 덮어쓰기
move (rename) files
파일을 이동하거나 이름을 변경합니다.
•
mv [옵션] [Source] [Dest] : Source를 Dest로 복사
•
mv [옵션] [Source1, Source2, Source3, …] [Directory] : 여러 개의 Source를 Directory로 복사
•
mv [옵션] -t [Directory] [Source1, Source2, Source3, …] : 여러 개의 Source를 Directory로 복사
파일 또는 디렉토리를 이동하거나 이름을 변경합니다. 원본이 여러 개일 경우 대상은 디렉토리여야 하며, 원본이 한 개일 경우, 대상은 파일명 또는 디렉토리가 될 수 있습니다.
•
-i, —interactive : 대상이 존재할 경우 덮어쓰기 전에 사용자에게 확인 요청
•
-f, —force : 강제로 덮어쓰기
remove files or directories
파일이나 디렉토리를 삭제합니다.
•
mv [옵션] [File] : File을 삭제
파일 또는 디렉토리를 삭제하는 기본 명령어입니다. 삭제된 파일은 바로 사라지며 복구가 어려우므로 옵션 사용에 주의가 필요합니다.
•
-r, -R, —recurisve : 디렉토리와 그 내부 파일까지 재귀적으로 삭제
•
-f, —force : 존재하지 않는 파일이어도 에러 없이 무시, 덮어쓰기 확인도 생략
search for files in a directory hierarchy
디렉토리 계층에서 파일을 찾습니다.
•
find [경로] [검색조건] [실행할 명령] : 파일을 찾고 실행하기
파일이나 디렉토리를 조건에 따라 검색하고 실행시킬 수 있습니다. 파일 이름뿐만 아니라 파일 크기, 시간, 권한, 소유자 등 다양한 조건으로 검색할 수 있으며, 찾은 파일에 대해 삭제, 복사, 실행 등의 후처리도 가능합니다.
1.
파일명/패턴 검색
- ◦-name [pattern] : 이름이 정확히 일치하는 파일 검색 (와일드카드도 가능)
- ◦-iname : 대소문자 구분 없이 이름 검색
- ◦-type : 파일 유형을 지정해 검색 (f : 파일, d : 디렉토리, l : 심볼릭 링크)
- ◦-path [path pattern] : 전체 경로를 기준으로 패턴 검색
- ◦-regex : 정규표현식으로 파일 경로 검색
2.
시간 기준 검색
- ◦-mtime +n : 마지막으로 수정한 지 n일 초과된 파일
- ◦-mtime -n : 마지막으로 수정한 지 n일 이내의 파일
- ◦-atime : 마지막으로 접근한 시간 기준 검색
- ◦-ctime : 상태 변경 시간 기준 검색
- ◦-newer [File] : File보다 더 최근에 수정된 파일 찾기
3.
크기 기준 검색
- ◦-size +nM : nMB보다 큰 파일
- ◦-size -nM : nMB보다 작은 파일
- ◦-empty : 비어있는 파일 또는 디렉토리 검색
4.
소유자/권한 기준
- ◦-user [username] : 해당 사용자 소유의 파일 검색
- ◦-group [groupname] : 해당 그룹 소유의 파일 검색
- ◦-perm [mode] : 권한이 일치하는 파일 검색
5.
논리 연산자
- ◦-a : AND (default)
- ◦-o : OR
- ◦!, -not : NOT
- ◦() : 조건 그룹화, \(, \)로 이스케이프 필요함
6.
명령 실행
- ◦-print : 찾은 파일 경로를 출력 (default)
- ◦-exec [명령] {} \; : 파일마다 명령을 실행
- ◦-ok [명령] {} \; : -exec 옵션과 같지만 실행 전 확인 요청
- ◦-delete : 파일 삭제
# /(최상위 루트 경로)부터 하위 모든 경로에서 "파일이름" 찾기
find / -name "파일이름"find files by name
이름으로 파일을 검색합니다.
•
locate [옵션] [검색어] : 파일을 검색
파일 시스템 전체를 직접 탐색하는 find 명령어와는 달리, 미리 생성된 인덱스를 검색해 매우 빠르게 파일을 찾습니다. 기본적으로 /var/lib/mlocate/mlocate.db 데이터베이스를 사용합니다. 정기적으로 시스템에서 자동으로 업데이트되지만 sudo updatedb 명령어를 사용해 직접 최신화할 수 있습니다.
•
-i, —ignore-care : 대소문자 구분 없이 검색
•
-c, —count : 검색 결과의 총 개수만 출력
•
-l, —limit [Limit] : Limit개의 결과까지만 출력
•
-e, —existing : 실제 존재하는 파일만 출력. DB에는 존재하지만 삭제된 파일을 제외함
•
—regex : 정규표현식 기반 검색
display file or file system status
파일이나 파일시스템 상태를 보여줍니다.
•
stat [옵션] [FILE] : 파일 상태를 출력
파일 또는 디렉토리의 상세 정보를 확인할 수 있습니다.
determine file type
파일 헤더를 기준으로 종류를 알려줍니다.
•
file [옵션] [파일명] : 종류 출력
확장자와 무관하게 파일 헤더를 기준으로 판별해 파일의 실제 내용을 분석해 Type을 알려줍니다.
change file mode bits
파일 모드 비트를 수정합니다.
•
chmod [옵션] [권한] 파일명 : 파일의 권한을 바꾸기
change mode의 줄임말로 파일이나 디렉토리의 읽기, 쓰기, 실행 권한을 사용자/그룹/기타 대상 별로 설정합니다. 지정 방식으로는 두 가지가 있습니다. 숫자 방식(Octal), 기호 방식 (Symbolic).
숫자 방식
•
chmod 755 filename
기호 방식
•
chmod u+x filename
•
-R, —recurisve : 디렉토리에 대해 재귀적으로 하위까지 변경
change file owner and group
파일의 소유자 또는 소유 그룹을 변경할 수 있습니다.
•
chown [옵션] [소유자][: 그룹] 파일명 : 소유 권한 바꾸기
change owner의 약자로, 파일이나 디렉토리의 소유자 또는 소유 그룹을 바꿀 수 있습니다.
•
-R, —recurisve : 디렉토리와 그 내부의 모든 항목에 대해 변경
change group ownership
파일이나 디렉토리의 그룹 소유자를 변경합니다.
•
chgrp [옵션] 그룹이름 파일명 : 파일을 소유하는 그룹 바꾸기
change group의 약자로 파일이나 디렉토리의 그룹 소유자를 변경합니다.
•
-R, —recurisve : 디렉토리와 그 내부의 모든 항목에 대해 변경
The user file-creation mask is set to mode.
유저 파일 생성 마스크를 mode로 설정합니다.
•
umask [mode] : 마스크값 설정
사용자가 새 파일이나 디렉토리를 만들 때, 어떤 권한을 제한할지 설정하는 마스크값입니다. 즉, 기본 권한에서 제외할 권한을 지정합니다. 기본적으로 리눅스의 기본 권한은 파일은 666, 디렉토리는 777입니다. 만약 umask값이 022로 설정되어 있다면, 새로운 파일을 생성했을 때 644, 디렉토리는 755로 생성됩니다.
umask명령어는 현재 세션에만 적용되며, 영구적으로 적용하기 위해서는 ~/.bashrc 혹은 ~/.profile 에 umask 값을 바꿔주어야 합니다.
echo "umask 022" >> ~/.bashrclist file attributes on a Linux second extended file system
파일이나 디렉토리에 설정된 파일 속성을 표시합니다
•
lsattr [옵션] [파일 혹은 디렉토리]: 속성 보여주기
파일이나 디렉토리에 설정된 파일 속성을 표시합니다. 파일 시스템의 낮은 수준의 속성을 볼 수 있습니다.
•
a : append only. 파일에 데이터를 추가만 가능. 주로 로그 파일 보호에 사용
•
i : immutable. 파일을 읽기만 가능
•
d : dump 명령 시 백업 제외 대상
•
e : 파일이 extends 기반 구조로 저장됨 (ext4 전용)
•
s : 파일 삭제 시 내용을 0으로 덮어쓰기
•
u : 파일 삭제 후 언마운트 전까지 복구 가능
•
-R : 재귀적으로 하위 디렉토리까지 표시
•
-d : 디렉토리 자체의 속성만 표시
•
-a : 숨김 파일 포함
change file attributes on a Linux file system
리눅스 파일 시스템에서 파일 속성을 변경합니다.
•
chattr [옵션] [+/-/=속성] 파일명: 파일의 속성 바꾸기
파일 시스템 수준에서의 속성을 설정/해제할 수 있습니다. chmod, chown과는 달리 파일 내용 자체를 보호하거나 삭제 방지 등의 보안 목적으로 사용됩니다. 주로 ext2, ext3, ext4 파일 시스템에서 사용됩니다.
•
-R : 재귀적으로 하위 디렉토리까지 적용
get file access control lists
ACL(Access Control List)를 확인합니다.
•
getfacl [옵션] FILE : FILE의 ACL을 확인
파일의 ACL을 확인합니다.
# file: file1
# owner: churnobyl
# group: churnobyl
user::rwx
group::rwx
other::rwx•
-R : 재귀적으로 디렉토리 전체 ACL 확인
•
-n : 이름 대신 숫자로 UID, GID 출력
•
-a : 숨김파일을 포함해 출력
set fill access control lists
ACL(Access Control List)를 수정합니다.
•
setfacl [옵션] [{-m | -x} ACL 설정식] FILE/Directory : FILE/Directory의 ACL을 수정
파일이나 디렉토리에 대해 추가적인 사용자/그룹 권한을 부여할 수 있게 해줍니다.
기존 chmod 명령어는 소유자, 그룹, 기타 3단계 권한만 설정 가능하지만, setfacl 은 여러 사용자나 그룹별로 세부 권한을 개별적으로 설정할 수 있습니다.
•
-m, —modify : 수정
•
-x, —remove : 삭제
[d[efault]:][u|g]:[이름]:[rwx]일반 ACL과 d: 의 차이점
•
일반 ACL은 해당 파일이나 디렉토리 자체에만 적용되며 상속 효과는 없습니다.
•
default ACL은 디렉토리에 적용 시, 새로 생성되는 하위 항목에 적용됩니다. 즉, 해당 디렉토리 하위에 새로운 파일/디렉토리 생성 시 ACL 조건이 상속됩니다.
•
-b, —remove-all : 추가적인 ACL 항목을 전부 제거합니다.
report a snapshot of the current processes
현재 프로세스들의 스냅샷을 출력합니다.
•
ps [옵션] : 프로세스 정보 출력
Process Status의 약자로 현재 실행 중인 프로세스의 목록을 출력합니다. 백그라운드에서 실행 중인 프로그램, 시스템 데몬, 사용자 앱 등을 포함해 PID, CPU/메모리 사용량, 실행 결로 등의 정보를 확인할 수 있습니다.
•
-e, -A : 모든 프로세스 출력
•
-f : 풀 포맷 (UID, PID, PPID 등 추가적인 정보 포함)
•
-F : -f 보다 더 상세한 포맷
•
-o [열] : 원하는 열만 출력
•
-O, —sort [format] : 원하는 열로 정렬
•
ps -ef : 모든 프로세스를 전체 형식으로 출력
•
ps axjf : 트리 구조로 출력
•
ps -o pid, cmd, %cpu, %mem : 원하는 열만 출력
display Linux processes
리눅스 프로세스들을 보여줍니다.
•
top [옵션] : 프로세스 정보 출력
리눅스에서 실행 중인 프로세스들을 실시간으로 보여줍니다. CPU/메모리 사용량, 실행 시간, 프로세스 상태 등을 동적으로 갱신해줍니다. 시스템 관리자가 리소스 점검, 과부하 탐지, 프로세스 종료 등을 빠르게 하기 위한 도구입니다.
loop up for processes based on name and other attributes
이름과 속성 기반으로 프로세스를 찾습니다.
•
pgrep [옵션] 패턴 : 패턴으로 프로세스 PID 검색
현재 실행 중인 프로세스 목록 중에서 특정 이름이나 패턴을 가진 프로세스의 PID를 찾습니다.
•
-l : PID와 함께 프로세스 이름을 표시
•
-u username : 해당 사용자의 프로세스만 검색
•
-f : 전체 명령줄 기준 검색
•
-x : 정확히 일치하는 이름만 검색
•
-n processname : 가장 최근에 실행된 processname
•
-o processname : 가장 오래된 processname
kill - terminate a process / killall - kill processes by name / pkill - signal for processes based on name and other attributes
•
kill : 프로세스를 종료합니다.
•
killall : 이름으로 프로세스들을 종료합니다.
•
pkill : 이름과 속성을 기반으로 프로세스들에 시그널을 보냅니다.
•
kill [옵션] PID : PID를 직접 지정해 종료 시그널
•
killall [옵션] 프로세스이름 : 프로세스 이름으로 종료. 동일 이름의 여러 프로세스가 있을 경우 전부 종료됨
•
pkill [옵션] 패턴 : pgrep 과 유사하게 프로세스 이름 혹은 패턴으로 검색 후 해당 프로세스에 시그널
•
kill : 프로세스 ID (PID)를 직접 지정해 종료 시그널을 보냅니다. 기본적으로 SIGTERM (15) 시그널을 보내고, 필요하면 SIGKILL (9)도 사용할 수 있습니다.
kill 1234 # PID 1234에 SIGTERM (기본)
kill -9 1234 # PID 1234에 SIGKILL (강제 종료)
kill -SIGSTOP 1234 # 일시 정지•
killall : 프로세스 이름으로 종료합니다. 동일 이름의 프로세스가 있을 경우 전부 종료합니다.
killall firefox # firefox 관련 프로세스 전부 종료
killall -9 python3 # python3 프로세스 전부 강제 종료•
pkill : 이름이나 패턴으로 프로세스를 종료합니다.
pkill nginx # nginx 이름이 포함된 프로세스를 종료합니다.
pkill -9 python # SIGKILL 강제 종료
pkill -u aaa nginx # aaa 사용자의 nginx 프로세스만 종료
pkill -f "python3 app.py" # 전체 명령줄 기준으로 종료nice - run a program with modified scheduling priority / renice - alter priority of running processes
•
nice : 프로세스를 특정 우선 순위로 새로 실행합니다.
•
renice : 이미 실행 중인 프로세스의 우선순위를 변경합니다.
•
nice [-n 값] 명령어 : 값 을 더하거나 빼서 명령어 실행
•
renice [-n] 값 -p PID : PID의 우선순위를 값 으로 덮어씀
•
nice : 프로세스를 특정 우선순위로 새롭게 실행합니다. 기존 프로세스의 nice 값은 보통 0이며 명령어를 사용해 값을 적어넣을 경우 상대적으로 +/-가 됩니다. 기본적으로 일반 사용자는 0 ~ 19의 양수만 설정할 수 있으며, -20 ~ -1의 음수값은 root만 허용됩니다.
•
nice 명령어를 단독으로 사용 시 실행 시 nice 값을 알 수 있습니다.
# ps 명령어의 nice값을 -5해서 실행
sudo nice -n -5 ps -o pid,ni,comm
PID NI COMMAND
3187 0 sudo
3189 -5 ps•
renice : 이미 실행 중인 프로세스의 우선순위를 실시간으로 변경합니다. 따라서 CPU 리소스 제어에 유용합니다.
ps -o pid,ni,comm
PID NI COMMAND
3121 0 python
# python의 nice값을 5로 변경
renice 5 -p 3121
121 (process ID) old priority 0, new priority 5
ps -o pid,ni,comm
PID NI COMMAND
3121 5 python•
jobs : 현재 셸에서 실행 중인 작업 목록을 조회합니다.
jobs
[1]+ Stopped python•
fg : 백그라운드 또는 정지 중인 작업을 포그라운드로 가져옵니다.
fg %1
# 포그라운드로 복귀됨
python
>>> •
bg : 일시 정지된 작업을 백그라운드에서 계속 실행합니다.
bg %2Control the systemd system and service manager
시스템과 서비스 매니저를 관리합니다.
•
systemctl [옵션] 명령어 : 서비스를 관리합니다.
systemd(시스템 및 서비스 관리자)의 주요 명령어입니다. 리눅스에서 서비스를 시작, 중지, 상태 확인, 자동 실행을 설정할 수 있습니다. systemd 기반 시스템에서는 service , chkconfig 를 대체합니다.
•
start : 서비스를 시작
•
stop : 서비스를 중지
•
restart : 서비스를 재시작
•
reload : 프로세스를 재실행하지 않고 설정을 다시 불러오기
•
status : 서비스의 상태(실행 여부, 로그 등) 확인
•
enable : 부팅 시 자동 실행 설정
•
disable : 부팅 시 자동 실행 해제
•
is-active : 현재 실행 중인지 여부
•
is-enabled : 부팅 시 자동 실행 여부
df - report file system disk space usage / du - estimate file space usage
•
df : 전체 파일시스템의 마운트된 디스크의 공간 사용 현황을 보여줍니다.
•
du : 지정한 경로에 있는 파일/디렉토리의 실제 용량을 추정합니다.
•
df [옵션] : 전체 파일시스템에 마운트 되어 있는 디스크 확인
•
du [옵션] [파일] : 파일의 실제 용량 추정
•
df : disk free의 약자로 전체 파일시스템의 마운트된 디스크의 공간 사용 현황을 보여줍니다.
•
du : disk usage의 약자로 지정한 경로에 있는 파일/디렉토리의 실제 용량을 계산합니다.
•
-h, —human-readable : 사람이 읽기 쉬운 KB, MB 단위로 표시
•
(df) -T, —print-type : 파일 시스템의 종류 표시
•
(df) —total : 전체 합계 출력
•
(du) -c : 전체 합계 출력
lsblk - list block devices / blkid - locate/print block device attributes
•
lsblk : 블록 장치 구조를 나열합니다.
•
blkid : 각 디스크/파티션의 UUID, 파일 시스템 타입, LABEL 등 고유 정보 출력
•
lsblk [옵션] [디바이스] :
•
du [옵션] [파일] : 파일의 실제 용량 추정
•
df : disk free의 약자로 전체 파일시스템의 마운트된 디스크의 공간 사용 현황을 보여줍니다.
•
du : disk usage의 약자로 지정한 경로에 있는 파일/디렉토리의 실제 용량을 계산합니다.
•
-h, —human-readable : 사람이 읽기 쉬운 KB, MB 단위로 표시
•
(df) -T, —print-type : 파일 시스템의 종류 표시
•
(df) —total : 전체 합계 출력
•
(du) -c : 전체 합계 출력
•
리눅스 커널의 netfilter 프레임워크를 기반으로 동작하는 전통적인 방화벽 관리 도구
•
모든 규칙을 명령어로 직접 입력하거나 스크립트에 저장해야 하며, 구성이 저장되지 않으면 재부팅 후 사라짐
# 22번 포트 허용
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 80번 포트 차단
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
# 현재 규칙 확인
sudo iptables -L
# 현재 설정되어 있는 iptables의 규칙을 firewall.sh 파일로 저장
sudo iptables-save > firewall.sh
# 현재 설정되어 있는 iptables의 규칙을 전부 제거
sudo iptables -F
# firewall.sh 파일에 저장되어 있는 규칙을 불러와서 반영
sudo iptables-restore < firewall.sh
# 적용된 규칙 확인
sudo iptables -L•
no hang up
•
터미널 세션이 종료되어도 프로세스가 종료되지 않도록 보호하는 명령어
nohup 명령어 [옵션] &•
Apache HTTP Server는 오픈소스 웹 서버 소프트웨어
•
정적/동적 웹 페이지 제공, 가상 호스트, 리버스 프록시, SSL, 로그 관리 등 다양한 웹 기능 지원
# 설치
sudo dnf install httpd
# 실행
sudo systemctl start httpd•
/etc/httpd/ : 설정 파일 경로
•
/var/www/html/ : 기본 웹 루트 디렉토리
•
/etc/httpd/conf/httpd.conf : 메인 설정 파일
•
/var/log/httpd/ : 아파치 로그 디렉토리
•
ServerRoot : 서버 설정, 에러, 로그 파일이 존재하는 디렉토리 최상단 경로
•
DocumentRoot : 웹 페이지 루트 디렉토리 경로
•
Listen : 서버가 대기할 포트 (기본 : 80)
•
ServerName : 서버의 호스트 이름
•
ServerAdmin : 서버 관리자 이메일 주소
•
DirectoryIndex : 기본 파일 지정 (index.html 등)
•
DefaultType : 기본 MIME 타입 설정
•
ErrorLog / CustomLog : 로그 파일 경로 지정
•
<Directory> : 디렉토리 별 접근 권한 설정
•
리눅스/유닉스에서 윈도우 파일 공유 프로토콜(SMB/CIFS)을 구현한 오픈소스 소프트웨어
•
리눅스와 윈도우 간의 파일 공유가 주 목적
•
윈도우 클라이언트가 윈도우 서버처럼 리눅스 공유 폴더에 접근
•
프린터 공유
•
윈도우 네트워크 탐색에서 리눅스 서버가 보이게 함
sudo dnf install samba samba-client samba-common•
smbclient : 서버에 있는 리소스에 접속하기 위한 클라이언트
# 삼바 서버로 사용 중인 IP주소의 공유 디렉터리를 확인
smbclient -L [IP주소]
# 공유 디렉터리에 접근
smbclient //192.168.5.13/data or \\\\192.168.5.13\\data;
•
testparm : smb.conf의 정합성 체크
testparm•
리눅스와 유닉스 시스템에서 오래전부터 사용되어온 대표적인 메일 전송 에이전트(MTA : Mail Transfer Agent)
•
이메일을 다른 서버로 전송(SMTP)하거나 로컬 사용자에게 배달하는 역할
•
SMTP(Simple Mail Transfer Protocol)를 기반으로 동작
•
/etc/mail/sendmail.mc : 메인 설정 파일 (매크로 기반)
•
/etc/mail/sendmail.cf : 실제 설정 파일 (컴파일된 형태)
•
/etc/mail/access : 메일 릴레이/접속 제어 설정
•
/etc/aliases : 메일 주소 별칭 설정
•
/var/spool/mqueue/ : 메일 큐 저장소
•
/usr/sbin/sendmail : 실행파일
•
/etc/mail/virtusertable : 가상 이메일 주소를 실제 로컬 사용자나 외부 주소로 매핑
# 설치
# sendmail - 메일 서버
# sendmail-cf - 설정 파일 생성에 필요한 매크로 처리 도구
sudo dnf install sendmail sendmail-cf -y# 접속 제어 설정
sudo vi /etc/mail/access
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
# 127.0.0.1에서 연결을 시도하는 모든 호스트 허용
Connect:127.0.0.1 OK
# 발신자 이메일 주소 aaa@bbb.com인 경우 모든 이메일을 거부 후 메시지 전송
From:aaa@bbb.com REJECT
# 목적지 주소가 ccc.com 도메인일 경우 중계를 허용
To:ccc.com RELAY
# 편집한 설정파일로부터 해시맵 파일 생성
sudo makemap hash /etc/mail/access < /etc/mail/access•
REJECT : 연결 거부
•
DISCARD : 메일 수신은 되지만 처리하지 않음
•
OK : 허용
•
RELAY : 릴레이 허용 (중계 허용)
•
도메인 기반 가상 사용자 이메일 주소를 실제 사용자나 외부 이메일로 연결해주는 매핑 테이블
GNU make utility to maintain groups of programs
프로그램 그룹을 유지관리하기 위한 유틸리티
•
make [옵션] [타겟] : 타겟을 make
소스 코드 컴파일 자동화에 가장 널리 사용되는 빌드 도구입니다. 주로 C, C++, Java 등의 프로젝트에서 복잡한 빌드 과정을 자동화하고 변경된 파일만 컴파일해 효율적으로 개발을 지원합니다. Makefile 이라는 파일을 읽어서 컴파일 명령을 자동으로 실행합니다.

# 커널 소스코드 다운로드 및 압축 해제
wget https://git.kernel.org/torvalds/t/linux-4.17-rc2.tar.gz
tar xvzf linux-4.17-rc2.tar.gz
cd linux-4.17-rc2
# 커널 환경 설정 전 기존 오브젝트 파일, config파일, 다양한 백업 파일 전부 초기화
make mrproper
# 원하는 커널 기능 활성화
make menuconfig
# 1MB 이상의 커널 컴파일해 커널 이미지를 생성
make bzimage
# 커널에서 사용할 모듈을 컴파일하고 설치
make modules
sudo make install
sudo make modules_install
# 시스템 재부팅
sudo reboot nowtransfer a URL
URL을 전송합니다.
•
curl [옵션/URL] : URL을 전송
서버로 데이터를 전송하거나 서버로부터 데이터를 받습니다. 지원하는 프로토콜로는 DICT, FILE, FTP, FTPS, HTTP, HTTPS, IMAP, LDAP, POP3 등등이 있습니다.
•
-o, —output [파일] : 아웃풋을 표준출력이 아니라 [파일]로 생성
•
-O, —remote-name : 아웃풋을 로컬파일로 받음
•
-X, —request [GET/POST/PUT/…] : HTTP 서버와 통신할 때 사용할 요청 메소드를 설정
•
-H, —header [문자열] : 헤더를 설정
•
-d, —data [데이터] : 데이터를 설정
# 파일 다운로드
curl -O https://example.com/file.zip
# POST 요청
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/dataThe non-interactive network downloader
상호작용 없는 네트워크 다운로더
•
wget [옵션] [URL] : URL로부터 다운로드
다운로드 전용 도구로 파일 저장, 재귀 다운로드, 오프라인 미러링에 강합니다. HTTP, HTTPS, FTP 프로토콜을 지원합니다.
•
-O, —output-document [파일명] : 다운로드한 내용을 파일명으로 저장
•
-r : 재귀 다운로드
•
-np : 상위 디렉토리로 이동 금지(재귀 다운로드와 함께 사용)
•
SSH는 네트워크를 통한 암호화된 원격 접속을 가능하게 해주는 프로토콜
•
SSH 서버는 리눅스 머신에 설치되어 있으며, 클라이언트가 접속하면 인증 후 터미널 세션을 제공합니다.
•
기본 포트 : 22
•
/usr/sbin/sshd : 실행 파일
•
/etc/ssh/sshd_config : 설정 파일
sudo systemctl start sshd# 환경 설정 열기
sudo vi /etc/ssh/sshd_config
# 항목 수정
#PermitRootLogin prohibit-password
PermitRootLogin yes # 완전 허용
PermitRootLogin no # 차단
PermitRootLogin prohibit-password # 패스워드 로그인만 차단•
웹 프록시 서버
•
HTTP, HTTPS, FTP 트래픽을 중계하거나 캐싱해 네트워크 성능을 향상시키고 접근 제어를 구현하는 데 사용
Loading comments...
0
0
관련 포스트
프로세스 관리
프로세스는 부모 프로세스에 의해 생성되며, fork()와 exec() 시스템 콜을 통해 관리된다. 종료 시 exit() 시스템 콜로 종료되고, 부모는 wait()를 통해 자식의 데이터를 받는다.
2024.12.18
· Updated 2024.12.31







