Cohe

리눅스 명령어 공부 3 본문

배포 배우기

리눅스 명령어 공부 3

코헤0121 2024. 7. 23. 17:15
728x90

vi(m) 편집기 추가 기능

화면 분할

명령어 기능
:sp or Ctrl+w, s 수평 분할 화면 처리
:vsp or Ctrl+w, V 수직 분할 화면 처리

!https://prod-files-secure.s3.us-west-2.amazonaws.com/65d47488-3ffd-440e-b655-cb7516b09d13/a60ea19e-b826-427d-9422-145e88208d7a/Untitled.png

창 이동

명령어 기능
Ctrl+w + 방향키 창 이동
Ctrl+w, h 왼쪽 창으로 이동
Ctrl+w, j 아래 창으로 이동
Ctrl+w, k 위쪽 창으로 이동
Ctrl+w, l 오른쪽 창으로 이동

창 닫기

명령어 기능
:exit 창 닫기

여러 파일을 작업하기

명령어 기능
vim file1 file2 file3 여러 파일을 동시에 열기
:ls 파일 정보 보기

파일 정보 표시

  • %a: 현재 작업 파일
  • #: 이전 작업 파일

!https://prod-files-secure.s3.us-west-2.amazonaws.com/65d47488-3ffd-440e-b655-cb7516b09d13/12e08b6e-bad6-41c4-ab5b-1e1c191e2b57/Untitled.png

파일 이동

명령어 기능
:n 다음 파일로 이동
:bn 다음 파일로 이동
:bp 이전 파일로 이동
:bf 동시에 연 파일 중 첫 번째 파일로 이동
:bl 마지막 파일로 이동
Ctrl+^ 현재 파일과 이전 파일을 토글

리눅스 사용자 관리 파일

사용자 정보 파일: /etc/passwd

필드 번호 필드명 설명
1 계정명 계정명 (예: user1)
2 패스워드 패스워드 필드 (x는 패스워드가 다른 곳에 저장됨)
3 UID 사용자 ID
4 GID 그룹 ID
5 코멘트 사용자에 대한 설명이나 별칭
6 홈 디렉터리 사용자 홈 디렉터리 경로
7 사용자 기본 쉘 (예: /bin/bash)

그룹 정보 파일: /etc/group

필드 번호 필드명 설명
1 그룹명 그룹명 (예: user1)
2 패스워드 그룹 패스워드 (x는 패스워드가 다른 곳에 저장됨)
3 GID 그룹 ID
4 그룹 구성원 그룹에 속한 사용자 목록

사용자 패스워드 및 계정 정책 파일: /etc/shadow

필드 번호 필드명 설명
1 계정명 계정명 (예: user1)
2 패스워드 패스워드 해시 값 (SHA-512 해시 사용)
3 패스워드 생성일 패스워드 최초 생성일 (1970년 1월 1일 기준, 일)
4 패스워드 최소 사용기간 패스워드 최소 사용 가능 일수
5 패스워드 만료 기간 패스워드 최대 사용 가능 일수
6 패스워드 만료 경고일 패스워드 만료 경고 시작 일수
7 비활성 기간 계정 비활성 상태 유지 일수
8 계정 만료일 계정 만료일
9 플래그 사용되지 않는 필드

그룹 패스워드 및 관리자 정보 파일: /etc/gshadow

필드 번호 필드명 설명
1 그룹명 그룹명 (예: user1)
2 패스워드 그룹 패스워드 해시 값
3 관리자 그룹 관리자
4 그룹 구성원 그룹에 속한 사용자 목록

사용자 생성 기본값 파일: /etc/default/useradd

설정 항목 설명
GROUP=100 기본 그룹 ID
HOME=/home 사용자 홈 디렉터리 경로
INACTIVE=-1 패스워드 사용 기간 만료 후 계정 비활성화 시점 (0: 즉시 사용 불가능, -1: 사용 안 함)
EXPIRE= 계정 만료일 (형식: YYYY-MM-DD)
SHELL=/bin/bash 기본 로그인 쉘
SKEL=/etc/skel 홈 디렉터리에 생성되는 환경 파일 경로
CREATE_MAIL_SPOOL=yes 메일 저장 파일 생성 여부

사용자 및 패스워드 설정 파일: /etc/login.defs

설정 항목 설명
MAIL_DIR 메일 파일 저장 위치 (/var/spool/mail)
PASS_MAX_DAYS 패스워드 최대 사용 일수 (99999)
PASS_MIN_DAYS 패스워드 최소 사용 일수 (0)
PASS_MIN_LEN 패스워드 최소 길이 (5)
PASS_WARN_AGE 패스워드 만료 경고 시작 일수 (7)
UID_MAX 최대 UID 값 (60000)
UID_MIN 최소 UID 값 (1000)
GID_MAX 최대 GID 값 (60000)
GID_MIN 최소 GID 값 (1000)
CREATE_HOME 계정 생성 시 홈 디렉터리 생성 여부 (yes)
UMASK 기본 퍼미션 설정 값 (077)
USERGROUPS_ENAB 사용자 그룹 활성화 여부 (yes)
SHA512_CRYPT_ENAB 비밀번호 암호화 방식 활성화 여부 (yes)

사용자 메일 파일 디렉터리: /var/spool/mail

사용자 메일함 파일이 생성되는 디렉터리

사용자 환경 파일 디렉터리: /etc/skel

사용자의 홈 디렉터리를 구성하는 환경 파일이 저장되는 디렉터리

사용자 홈 디렉터리 기본 위치: /home/

사용자 생성 시 홈 디렉터리가 생성되는 기본 위치

사용자 추가 명령어 (useradd) - 관리자 권한

형식

  • useradd [옵션] 계정명

옵션

옵션 설명
-u UID UID 값을 지정하여 계정을 생성할 때 사용하는 옵션
-g GID GID 값을 지정하여 계정을 생성할 때 사용하는 옵션
-c 사용자 계정에 대한 설명(Comment)을 지정하는 옵션
-d 홈 디렉터리를 지정하여 생성하는 옵션
-s 사용자가 사용할 쉘 종류를 지정하는 옵션 (/etc/shells 참고)
-e 사용자 계정 만료일을 설정하는 옵션 (YYYY-MM-DD 형식으로 지정)
-D useradd 기본 설정 정보를 확인 (/etc/default/useradd 파일 참조)
-m -k 홈 디렉터리를 생성할 때 사용할 스켈레톤 디렉터리를 지정하는 옵션

스켈레톤 디렉터리

스켈레톤 디렉터리란 홈 디렉터리를 생성할 때 사용할 기본 환경 파일을 포함하고 있는 디렉터리를 의미함. 기본적으로 /etc/skel 디렉터리를 사용하며, -k 옵션을 사용하여 다른 디렉터리를 지정할 수 있음.

  • 실습

   useradd -u 2000 -e 20240724 testuser2
   grep ^testuser2 /etc/passwd
   grep -n ^testuser2 /dev/null /etc/passwd
   grep -n ^testuser2 /dev/null /etc/passwd /etc/group /etc/shadow /etc/gshadow

사용자 정보 변경(usermod) usermod [옵션] 계정명

  • 대부분 useradd옵션과 동일
    • -l : 아이디[계정명]를 수정한 옵션

usermod -l testuser2000 testuser2 => testuser2 => testuser2000

  • 사용자 삭제 : userdel -r

사용자 관리 명령어

사용자 추가 명령어 (useradd) - 관리자 권한

형식

useradd [옵션] 계정명

옵션

옵션 설명
-u UID UID 값을 지정하여 계정을 생성할 때 사용하는 옵션
-g GID GID 값을 지정하여 계정을 생성할 때 사용하는 옵션
-c 사용자 계정에 대한 설명(Comment)을 지정하는 옵션
-d 홈 디렉터리를 지정하여 생성하는 옵션
-s 사용자가 사용할 쉘 종류를 지정하는 옵션 (/etc/shells 참고)
-e 사용자 계정 만료일을 설정하는 옵션 (YYYY-MM-DD 형식으로 지정)
-D useradd 기본 설정 정보를 확인 (/etc/default/useradd 파일 참조)
-m -k 홈 디렉터리를 생성할 때 사용할 스켈레톤 디렉터리를 지정하는 옵션

스켈레톤 디렉터리

스켈레톤 디렉터리란 홈 디렉터리를 생성할 때 사용할 기본 환경 파일을 포함하고 있는 디렉터리를 의미함. 기본적으로 /etc/skel 디렉터리를 사용하며, -k 옵션을 사용하여 다른 디렉터리를 지정할 수 있음.

사용자 정보 변경 (userdel)

형식

userdel [옵션] 계정명

옵션

옵션 설명
-r 계정과 연관된 파일, 디렉터리를 동시에 삭제

사용자 패스워드 설정 관리 (passwd)

형식

passwd [옵션] [사용자 계정]

옵션

옵션 설명
-S 계정의 패스워드 상태를 출력 (/etc/shadow)
-l 계정의 패스워드 잠금 설정 (Lock)
-u 계정의 패스워드 잠금 해제 (Unlock)
-d 계정의 패스워드 삭제
옵션이 없는 경우, 사용자 패스워드 설정 또는 변경  
사용자 계정을 사용하지 않는 현재 작업 중인 사용자가 대상  

허가권 (Permission)

종류

일반 허가권

권한 설명
r (read) 읽기
w (write) 쓰기 (수정)
x (execute) 실행

특수 허가권

권한 설명
s setUID, setGID 권한. setUID는 파일의 실행을 UID(소유자)의 권한으로, setGID는 GID(그룹)의 권한으로 실행
t sticky bit 권한. 공유 디렉터리에서 파일 삭제 권한을 소유자와 root에만 부여

허가권 적용

파일 (File)인 경우

권한 설명
r 파일 내용 읽기 권한
w 파일 내용 쓰기 및 수정 권한
x 파일 실행 권한

디렉터리 (Directory)인 경우

권한 설명
r 디렉터리 목록 읽기 권한 (ls 명령어 실행 권한)
w 디렉터리 내 파일/디렉터리 추가, 삭제, 변경 권한
x 디렉터리 내 파일/디렉터리에 접근 권한 (cd 명령어 실행 권한)

-rw-r--r--. 1 root root 11 Jul 23 10:04 test3
drwxr-xr-x. 2 root root 6 Jul 23 11:54 testDir

10개 자리중 첫번째 타입 : -, d, l, c, b ...
나머지 9자리는 권한으로 설정. 3자리씩 묶어서 표현
첫번째 3자리 : 사용자(소유자)
두번째 3자리 : 그룹
세번째 3자리 : other(이외-사용자와 그룹 이외)

8진수란? 한자리의 숫자가 0 ~ 7사이의 값으로 이뤄진 방식을 의미함.

  2진수   퍼미션

======================
0 : 000 ---
1 : 001 --x
2 : 010 -w-
3 : 011 -wx
4 : 100 r--
5 : 101 r-x
6 : 110 rw-
7 : 111 rwx

    • UMASK : 허가권에 대한 기본값을 설정하는 것이 UMASK값이다.
      파일 생성시 권한 666을 부여
      디렉터리 생성시 권한 777을 부여
      하는 경우에 UMASK값을 통해서 부여되는 권한에 대해서 설정 적용.

UMASK : 022

파일 생성 권한 부여 : 666

           110 110 110
umask   000 010 010
         -----------------
 110 100 100  => 644

디렉터리 생성 권한 부여 : 777

           111 111 111
umask   000 010 010
         -----------------
 111 101 101  => 755

====================================================


[환경 구성]

  1. root권한으로 실행(변경)
  2. 테스트를 위한 계정(testuser1)
  3. 허가권 테스트할 디렉터리 생성
    mkdir -p /Per_DIR/ptester
  4. 생성한 디렉터리로 이동 후 파일 생성
    cd /Per_DIR/ptester
    touch 1
    echo "A" > 1
  5. 생성한 파일을 복사하여 여러개 파일을 생성 ( 1 ~ 10번 파일을 복사 생성)
    cp 1 2
    cp 1 3
    ...
    cp 1 10
  6. /Per_DIR디렉터리 내에 있는 ptester디렉터리에 권한을 부여 (754 권한 부여)
    • chmod 754 /Per_DIR/ptester
  7. root 사용자와 ptester사용자로 터미널 접속.
    역할)
    root : 권한 설정(변경)
    testuser1: 권한 테스트

문제1) ptester디렉터리내에 읽기 권한만 있다면 파일 리스트를 볼 수 있을까? → 755

문제2) ptester디렉터리에 754권한인 경우, 해당 디렉터리로 이동가능 여부 확인. (이동은 cd를 이용해서 해당 디렉터리 이동) ⇒

문제3) testuser1 사용자가 ptester 디렉터리로 이동하려면 무슨 권한을 부여해야 할지 생각하고 권한 부여하여 접근 성공하세요.

문제4) ptester 디렉터리내에 파일의 내용이나 디렉터리 모든 정보를 보기 위해서 디렉터리 부여해야 할 허가권은?

문제5) ptester 디렉터리에 “1”파일에 쓰기를 원합니다. 이 때에 “1”파일에 주어야할 권한은?

소유권 : chown

: 파일이나 디렉터리에 대한 소유권 설정(유저와 그룹을 변경할 수 있음)

UID, GID 변경

[형식]
chown [소유자]:[소유그룹] [대상 파일/디렉터리]
** 해당 파일이나 디렉터리의 소유자 또는 그룹을 지정하여 변경하겠다는 의미.

ex) chown testuser1:root /Per_DIR

  • 아마존 aws가 CentOS 계열이자, Rocky 리눅스라고 알면 된다!

==========================================================
net-tools 패키지에 설치되는 명령어...

ifconfig, netstat .....

    • 이것이 리눅스다 (3판) -> Rocky 리눅스 **

======== 네트워크 주소 검색 명령

ifconfig : 네트워크 정보(NIC)를 출력

enX0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.31.9.66 netmask 255.255.240.0 broadcast 172.31.15.255
inet6 fe80::d7:9eff:fe86:13d3 prefixlen 64 scopeid 0x20
ether 02:d7:9e:86:13:d3 txqueuelen 1000 (Ethernet)
RX packets 203799 bytes 55982891 (53.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 171899 bytes 20428307 (19.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

<UP,BROADCAST,RUNNING,MULTICAST> : NIC 상태 정보 출력
inet : ipv4 주소
netmask : 서브넷 마스크로 네트워크 주소 영역을 표시함.
broadcast : 네트워크 내에 전체 통신을 위한 주소
inet6 : ipv6 주소
prefixlen : 네트워크 영역 비트를 표기하는 값.
ether : MAC주소

ip addr : 서버의 IP주소 정보를 출력


포트 - 위키원

  • 서비스 확인하는 명령어

netstat : 네트워크 통신 정보 확인 / Connection, Port, Protocol, IP addresses

===== 서비스 확인하는 명령어

  • netstat : 네트워크 통신 정보 확인 / Connection, Port, Protocol, IP addresses

[root@ip-172-31-9-66 ~]# netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2207/sshd: /usr/sbi
tcp 0 0 172.31.9.66:22 118.33.124.241:56303 ESTABLISHED 186933/sshd: ec2-us
tcp 0 284 172.31.9.66:22 118.33.124.241:50280 ESTABLISHED 182337/sshd: ec2-us
tcp6 0 0 :::22 :::* LISTEN 2207/sshd: /usr/sbi
udp 0 0 172.31.9.66:68 0.0.0.0:* 1943/systemd-networ
udp 0 0 127.0.0.1:323 0.0.0.0:* 2236/chronyd

udp6 0 0 fe80::d7:9eff:fe86::546 :::* 1943/systemd-networ
udp6 0 0 ::1:323 :::* 2236/chronyd

ss : 네트워크 상태를 확인하는데 사용.

원래는 netstat를 사용했는데, 최근에는 ss를 주로 사용합니다. 옵션으로 a, t, u, l, p, n 등이 있음.

ss -a : 모든 포트 확인
ss -t : TCP 포트 확인
ss -u : UDP 포트 확인
ss -l : LISTEN 상태 포트 확인
ss -p : 프로세스 표시
ss -n : 호스트, 포트, 사용자명을 숫자로 표시
위에 있는 옵션들을 병합하여 사용. ss -tln

프로세서 관리

프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말함. (위키백과)
즉, 컴퓨터에서 현재 실행되고 있는 프로그램들의 목록을 말함.

프로세스 관리란, 현재 실행되고 있는 프로세스 목록을 보고, 프로세스를 제거하는 것을 의미함.

  1. 실행중인 프로세스 확인 (ps-[process status]) : 프로세스 목록 보기
  • 사용하기
  • ps [옵션]
(옵션)
  -e   :  모든 프로세스 보기
  -f   :  full-format으로 출력하기
  -l   :  long-format으로 출력하기
  -u   :  사용자 이름과 시작 시간 출력하기
  -x   :  로그인된 사용자 및 시스템 프로세스 출력하기
  -a   :  다른 사용자 프로세스 출력하기
  1. 프로세스 목록 보는 명령어 : pstree

** 프로세스간의 관계를 트리 구조로 표현하여 보여줌.
(부모-자식관계 출력)
2. 실행중인 프로세스 확인 : top (프로세스 모니터링 프로그램)

  • 유닉스 계열 시스템에서 프로세스 목록을 CPU 사용률이 높은 것부터 보여주는 소프트웨어
  • 출력 내용
    1행 : 시스템의 가동시간과 평균 부하의 숫자를 출력
    2행 : 현재 실행중이 프로세스들의 상황
    3행 : CPU의 사용에 대한 상황
    4행 : 메모리의 사용에 대한 상황
    5행 : 스왑메모리의 사용에 대한 상황
  1. 프로세스 종료 : kill 명령어
  • ***kill 명령어
    : 특정 프로세스에 특정 시그널을 보낸다.
  • ** 시그날 리스트 보기
    kill -l(소문자 L)
  1. SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
  2. SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
  3. SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM(기본)
  4. SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
  5. SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
  6. SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
  7. SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
  8. SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
  9. SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
  10. SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
  11. SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
  12. SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
  13. SIGRTMAX-1 64) SIGRTMAX
  14. SIGKILL : 정상 종료로 중지가 불가능한 경우에 강제 종료.
  15. SIGTERM : 정상 종료(기본값)

=====================================
****lsof 명령어
: list open file 명령어로 프로세스에서 열려진 파일들을 보는 명령어

사용법
lsof [옵션] [파일/디렉터리]

(옵션)
-c : 특정한 명령어나 프로그램이 참조하고 있는 파일들의 목록을 출력
+d : 지정한 디렉터리나 또는 디렉터리 내에서 사용되고 있는 파일들에 대한 정보를 출력
허가되지 않은 디렉터리 내에서 작업하는 프로세스나 사용자 및 명령어를 검색하고자 할 때 유용
-F : 출력될 결과에서 특정한 필드를 출력할 수 있는 옵션으로 많은 정보들 중에 원하는 필드만 출력하여
빠른 정보를 출력할 수 있음. 기본값 -Fp 설정이 되어 있기 때문에 별도의 키를 사용하지 않는다면
PID정보만 출력한다.
-g : GPID(Group PID)를 가진 프로세스를 출력한다.
-i : 설정한 네트워크(Internet) 소켓에 대한 정보를 출력하며 프로토콜, 서비스, 호스트 및 IP에 대한 정보
출력한다.
-N : NFS서버가 구축된 환경에서 NFS로 연결되어 있는 파일들에 대한 정보를 출력한다.
-G : GPID에 해당되는 정보를 출력하며 여러 개를 출력하다면 "."으로 구분할 수 있다.
-l : 로그인 사용자이름 대신 UID로 출력한다.
-n : 호스트 이름 대신에 IP address를 출력한다.
-P : /etc/services에 등록되어 있는 이름 대신에 포트 번호를 출력한다.
-u : 사용자 ID 및 UID값으로 지정할 수 있으며, 다수의 사용자를 지정하기 위해서 콤마(,)를 사용할 수 있고,
특정한 사용자를 제외한 정보를 출력하기 위해서는 "^사용자"로 설정하여 제외시킬 수 있다.

'배포 배우기' 카테고리의 다른 글

리눅스 다운  (0) 2024.07.25
리눅스 소켓 연결하기 2  (2) 2024.07.24
리눅스 소켓 연결하기  (4) 2024.07.24
리눅스 명령어2  (5) 2024.07.23
리눅스 명령어 공부 1  (0) 2024.07.23