개인 공부/[자격증] 리눅스 마스터 2급

[PART1] 리눅스 일반 - Ch.03 기본 명령어

KimNang 2024. 11. 9. 23:54

01. 사용자 생성 및 계정 관리

사용자 관련 명령어
  1. useradd
    - 사용자 계정을 생성하는 명령어
    • 기본 형식
      [root@localhost ~]# useradd [옵션] [계정명]
    • 옵션
       
      • -c : 사용자 계정에 설명 추가
      • -d : 사용자 계정의 홈 디렉터리 지정
      • -e : 사용자 계정의 유효 기간 설정
      • -f : 패스워드가 만료된 후 계정의 만료 날짜 지정
      • -G : 사용자 계정의 새로운 그룹 추가
      • -s : 사용자 계정의 로그인 기본 셸 지정
  2. passwd
    - 사용자 계정의 패스워드 변경 및 관리하는 명령어
    - 생성된 패스워드의 정보는 암호화되어 '/etc/shadow' 파일에 저장됨
    1. 패스워드 변경
      • 기본형식
        [root@localhost ~]# passwd [계정명]
    2. 패스워드 관리
      • 기본 형식
        [root@localhost ~]# passwd [옵션] [계정명]
      • 옵션
        • -d : 사용자 계정의 패스워드 삭제
        • -l : 사용자 계정을 잠금(lock) - 해당 계정으로 로그인 불가
        • -S : 계정 상태 출력 (PS:정상, NP:패스워드가 설정 안됨, LK:잠금(lock)상태이거나 NP상태)
        • -u : 잠금(lock) 상태의 사용자 계정을 해제(unlock) - 해당 계정으로 로그인 가능
  3. su
    - 'Switch User(or Substitute User)'의 약어
    - 다른 사용자로 전환하는 명령어
    • 기본 형식
      [root@localhost ~]# su [옵션] [사용자] [셸 변수]
    • 옵션
      • -, -l, --login : 사용자의 환경변수를 적용하여 로그인
      • -c : 셸을 실행하지 않고 주어진 명령어 실행
      • -s : 지정된 셸로 로그인

 

사용자 관련 파일
  1. /etc/default/useradd 파일
    - 사용자 계정 생성 시 가장 먼저 참조하는 파일
    - 'vi'편집기 또는 'useradd -D' 명령어로 확인 및 변경 가능
    • 파일의 설정 값
      • GROUP : 기본적으로 소속될 그룹의 GID 지정
      • HOME : 홈 디렉터리 지정
      • INACTIVE : 패스워드 사용 기간이 만료된 후 계정이 사용 불가능하게 되는 날짜 지정
      • SHELL : 기본 셸 지정
      • SKEL : 홈 디렉터리에 복사할 파일들이 있는 디렉터리 경로
      • CREATE_MAIL_SPOOL : 새로 생성되는 사용자 계쩡의 메일함 생성 여부 지정
  2. /etc/login.defs 파일
    - 두 번째로 참조하는 파일
    - 기본값을 정의
    • 파일의 설정 값
      • MAIL_DIR : 메일 디렉터리 지정
      • PASS_MAX_DAYS : 패스워드 만료일
      • PASS_MIN_DAYS : 패스워드 변경 후 다시 변경할 수 있는 최소 일 수
      • PASS_WARN_AGE : 설정된 일 수가 남았을 때, 패스워드 만료 경고 메시지 보냄
      • UID_MIN : 사용자에게 할당할 수 있는 최소 UID 번호
      • UID_MAX : 사용자에게 할당할 수 있는 최대 UID 번호
      • CREATE_HOME : 홈 디렉터리 생성 여부
      • UMASK : 사용자 계정 생성 시 홈 디렉터리의 UMASK 값 설정
      • USERGROUPS_ENAB : 사용자가 없는 그룹을 삭제할 것인지 여부
      • ENCRYPT_METHOD : 암호화 방법
  3. /etc/skel 디렉터리
    - '/etc/default/useraadd' 파일에서 'SKEL'의 값은 '/etc/skel' 디렉터리를 의미
    - '/etc/skel' 디렉터리에 있는 파일들이 새롭게 생성되는 사용되는 사용자의 홈 디렉터리로 복사
    • 파일 설명
      • .bash_logout : 사용자가 로그아웃 직전에 실행하는 프로그램에 관한 배시의 지역적인 시스템 설정 파일
      • .bash_profile : 환경변수와 배시가 수행될때 실행되는 프로그램을 제어하는 지역적인 시스템 설정 파일
      • .bashrc : 별칭과 배시가 수행될 때 실행되는 함수를 제어하는 지역적인 시스템 설정 파일
  4. /etc/passwd 파일
    - 사용자 계정 정보를 저장하고 있는 파일로 로그인시 사용
    - 사용자 계정의 UID, GID, 홈 디렉터리 등을 저장하고 있는 파일
    - 7개의 필드로 구성, ':'(콜론)으로 구분
    • 파일 구조
      - 계정명 : 패스워드 : UID : GID : 설명 : 홈 디렉터리 : 로그인 셸 종류
      username : password : uid : gid : comment : homedirectory : shell
        ①            ②       ③     ④       ⑤            ⑥           ⑦
  5. /etc/shadow 파일
    - 사용자의 패스워드가 저장되어 있는 파일
    - 사용자 패스워드가 암호화되어 저장
    - 유효기간, 만료일 등을 저장하고 있는 파일
    - 9개의 필드로 구성, ':'(콜론)으로 구분
    • 파일 구조
      - 계정명 : 암호화된 패스워드 : 변경 후 지난 일 수 : 변경 최소 일 : 최대 유효기간 : 만료 경고일 : 만료 후 비활성화 기간 : 계정 만료일 : 예약
      username : password : lastchange : mindays : maxdays : warndays : inactive : expire : flag
사용자 계정 관리
  1. usermod
    - 사용자 계정 정보를 변경하는 명령어
    - 계정명, UID, GID, 홈 디렉터리 등을 변경하는 명령어
    • 기본 형식
      [root@localhost ~]# usermod [옵션] [설정값] [계정명]
    • 옵션
      -c 설명 변경
      -d 사용자 홈 디렉터리 변경
      -e 계정 만료일 변경
      -f 사용자 계정 유효일 지정
      -g GID 변경
      -G 지정한 그룹에 사용자 추가
      -s 로그인 시 사용할 기본 셸 지정
      -u UID 변경
  2. userdel
    - 사용자 계정 정보를 삭제하는 명령어
    - 옵션 지정 없이 해당 명령어를 실행하면 '/etc/passwd', '/etc/shadow', '/etc/group' 파일의 사용자 계정 정보가 삭제됨
    • 기본 형식
      [root@localhost ~]# userdel [옵션] [계정명]
    • 옵션
      • -r : passwd, shadow, group 파일 정보와 '/var/spool/mail/계정 파일'과 홈 디렉터리의 모든 내용을 삭제

 

사용자 정보 조회 명령어
  1. users
    - 시스템에 로그인한 사용자의 정보를 출력
    • 기본 형식
      [root@localhost ~]# users
  2. w
    - 시스템에 로그인한 사용자의 정보를 자세히 출력
    • 기본 형식
      [root@localhost ~]# w
  3. who
    - 시스템에 로그인한 사용자의 정보를 간단히 출력
    • 기본 형식
      [root@localhost ~]# who [옵션]
    • 옵션
      -a 모든 정보 출력
      -H 각 필드의 제목과 함께 출력
      -u 사용자의 Idle Time 확인
  4. whoami
    - 시스템에 로그인한 사용자를 출력
    • 기본 형식
      [root@localhost ~]# whoami
  5. id
    - 시스템에 로그인한 사용자의 UID, GID, GROUP 정보를 출력
    • 기본 형식
      [root@localhost ~]# id

02. 그룹 생성 및 그룹 관리

그룹 관리 명령어
  1. groupadd
    - 그룹 생성 시 사용
    • 기본 형식
      [root@localhost ~]# groupadd [옵션] [그룹명]
    • 옵션
      -g GID 지정
      -o -g 옵션과 같이 사용, GID 중복 허용
      -r 시스템 그룹 생성 시 사용, GID 499번 이하 값 지정
  2. groupdel
    - 그룹 삭제 시 사용
    • 기본 형식
      [root@localhost ~]# groupdel [그룹명]
  3. groupmod
    - 그룹 정보 변경 시 사용
    • 기본 형식
      [root@localhost ~]# groupmod [옵션] [그룹명]
    • 옵션
      -g GID 지정
      -n 그룹명 변경
그룹 관련 파일
  1. /etc/group 파일
    - 사용자 그룹 정보가 저장되어 있는 파일
    - 4개의 필드로 구성, 그룹명, GID, 소속된 사용자 등을 저장함
    1. 파일 구조
      groupname : password : gid : members
    2. 파일 설명
      groupname 그룹명
      password 패스워드
      gid GID
      members 소속된 사용자
  2. /etc/gpasswd 파일
    - 그룹의 패스워드가 암호화되어 저장되어 있는 파일
    - 4개의 필드로 구성되고, 그룹명, 패스워드 등을 저장함
    1. 파일 구조
      groupname : password : owner : members
    2. 파일 설명
      groupname 그룹명
      password 패스워드
      owner 소유주
      members 소속된 사용자
그룹 정보 조회 명령어
  1. groups
    - 현재 사용자가 속한 그룹 정보를 확인함
    • 기본 형식
      [root@localhost ~]# groups

 

03. 디렉터리 및 파일

디렉터리 관련 명령어
  1. mkdir
    - 디렉터리를 생성함
    • 기본 형식
      [root@localhost home]# mkdir [옵션] [디렉터리명]
    • 옵션
      -m 디렉터리 생성 시 권한 설정
      -p 하위 디렉터리를 한 번에 설정
      -v 디렉터리 생성 후 생성된 디렉터리 정보 출력
  2. rmdir
    - 디렉터리를 삭제시 사용
    - 빈 디렉터리만 가능하며, 해당 디렉터리에 파일이나 디렉터리가 존재하면 삭제할 수 없음
    • 기본 형식
      [root@localhost home]# rmdir [디렉터리명]
  3. cd
    - 디렉터리 이동 시 사용하는 명령어
    - 디렉터리는 절대 경로와 상대 경로로 지정 가능
    • 기본 형식
      [root@localhost ~]# cd [대상 디렉터리]
    • 옵션 (경로)
      ~ 현재 사용자의 홈 디렉터리로 이동
      . 현재 디렉터리
      .. 한 단계 상위 디렉터리로 이동
  4. pwd
    - 현재 작업 중인 디렉터리를 출력하는 명령어
    • 기본 형식
      [root@localhost /etc]# pwd [옵션]
    • 옵션 (경로)
      -L 심볼릭 링크 안에 있다면 그대로 심볼릭 링크의 경로를 표시 (Logical Location)
      -P 심볼릭 링크 안에 있다면 심볼릭 링크가 가리키는 원래 디렉터리의 경로를 표시 (Physical Location)
파일 관련 명령어
  1. ls
    - 디렉터리 안의 파일이나 디렉터리 목록을 출력하는 명령어
    • 기본 형식
      [root@localhost ~]# ls [옵션] [디렉터리명]
    • 옵션
      -a 숨김 파일을 포함한 모든 목록 출력
      -d 디렉터리 목록만 출력
      -F 파일이 디렉터리인 경우 /(슬러시), 실행 파일인 경우 *(별표), 소켓 파일인 경우 =(등호), 심볼릭 링크인 경우 @(골벵이)를 파일 뒤에 표시 후 출력
      -l 파일의 모드, 링크 수, 소유자, 크기, 최종 수정 시간 등을 상세히 출력
      -m 쉼표(,)로 구분하여 출력
      -r 파일이나 디렉터리명의 알파벳 역순으로 출력
      -R 하위 디렉터리 목록까지 순차적으로 출력
      -s 킬로바이트(Kbyte) 단위로 출력
      -t 최종 수정 시간을 기준으로 출력
  2. cp
    - 파일이나 디렉터리를 복사하는 명령어
    • 기본 형식
      [root@localhost ~]# cp [옵션] [원본 파일/디렉터리] [대상 디렉터리]
    • 옵션
      -b 원본과 동일한 파일명이 존재할 경우, 원본 파일의 복사본을 만듦
      -f 원본과 동일한 파일명이 존재할 경우, 덮어쓰기 여부를 묻지 않고 복사
      -i 원본과 동일한 파일명이 존재할 경우, 덮어쓰기 여부를 묻고 복사
      -p 원본과 동일한 모드, 소유자, 시간 정보를 유지하고 복사
      -P 원본이 디렉터리 경로와 함께 지정되었을 경우, 지정된 디렉터리 경로를 그대로 복사
      -r 하위 디렉터리까지 모두 복사
      -S 원본과 동일한 파일명이 존재할 경우, 백업파일을 생성하지만, 백업파일의 끝에 붙여질 접미사(확장자)를 원하는 이름으로 지정
      -u 원본과 동일한 파일명이 존재할 경우, 원본 파일이 대상 파일보다 최신 파일일 경우에만 복사
  3. mv
    - 파일이나 디렉터리 이동 시 사용하는 명령어
    - 파일이나 디렉터리 이름 변경 시 사용하는 명령어
    • 기본 형식
      [root@localhost ~]# mv [옵션] [원본 파일/디렉터리] [대상 파일/디렉터리]
    • 옵션
      -b 원본 파일과 동일한 이름의 파일이 이미 존재할 경우, 원본 파일의 복사본을 만듦
      -f 원본 파일과 동일한 이름의 파일이 이미 존재할 경우, 덮어쓰기 여부를 묻지 않고 이동
      -i 원본 파일과 동일한 이름의 파일이 이미 존재할 경우, 덮어쓰기 여부를 묻고 이동
      -u 원본 파일과 동일한 이름의 파일이 이미 존재할 경우, 원본 파일이 대상 파일보다 최신 파일인 경우에만 이동
      -v 파일 옮기는 과정 출력
  4. rm
    - 파일이나 디렉터리 삭제 시 사용하는 명령어
    • 기본 형식
      [root@localhost ~]# rm [옵션] [파일/디렉터리명]
    • 옵션
      -d 디렉터리 삭제 (디렉터리 안에 파일이나 디렉터리가 존재할 경우 삭제되지 않음)
      -f 삭제 여부를 묻지 않고 삭제
      -i 삭제 여부를 묻고 삭제
      -r 하위 디렉터리를 포함한 모든 파일 삭제
      -v 삭제 과정을 출력
  5. touch
    - 파일 크기가 0바이트인 빈 파일을 생성하는 명령어
    - 현재 시간으로 파일의 접근 시간, 수정 시간, 변경 시간 등의 타임 스탬프를 변경하는 명령어
    • 기본 형식
      [root@localhost ~]# touch [옵션] [설정값] [파일/디렉터리명]
    • 옵션
      -a 현재 시간으로 파일의 접근 시간, 변경 시간을 수정
      -c 기존에 파일이 없으면 파일이 생성되지 않음
      -d 지정한 시간으로 접근 시간, 수정 시간이 수정되고, 변경 시간은 현재 시간으로 수정
      -m 현재 시간으로 파일의 수정 시간, 변경 시간을 수정
      -r 지정한 파일의 접근 시간, 수정 시간으로 파일이 수정되고, 변경 시간은 현재시간으로 수정
      -t 지정한 시간으로 접근 시간, 수정 시간이 수정되고, 변경 시간은 현재 시간으로 수정
  6. file
    - 파일의 유형 및 속성 확인 시 사용하는 명령어
    • 기본 형식
      [root@localhost ~]# file [옵션] [파일/디렉터리명]
    • 옵션
      -b 지정한 파일명은 출력하지 않고, 파일의 유형만 출력
      -f 파일 목록에서 지정한 파일들에 대해서만 명령 실행
      -i MIME 타입 문자로 출력 (ascii text를 text/plain; charset=us-ascii 형태로 출력)
      -L 심볼릭 링크된 파일을 추적하여 원본 파일 정보 출력
      -z 압축된 파일의 내용 출력
  7. find
    - 주어진 조건에 맞게 파일이나 디렉터리를 검색하여 경로를 출력해 주는 명령어
    • 기본 형식
      [root@localhost ~]# find [경로] [옵션] [설정값1, 설정값2...]
    • 옵션
      -delete 검색된 파일이나 디렉터리 삭제
      -empty 크기가 0인 파일이나 빈 디렉터리 검색
      -exec 검색된 파일에 대하여 지정된 명령 실행
      -name 지정된 문자열 패턴을 기준으로 검색
      -print 검색 결과 출력, 검색 항목은 새로운 행으로 구분
      -size 파일 크기를 기준으로 검색
      -type 파일 유형을 기준으로 검색
      -atime 접근 시각을 기준으로 검색
      -ctime 속성 변경 시각을 기준으로 검색
      -mtime 데이터 수정 시각을 기준으로 검색
  8. locate
    - 파일의 위치를 검색하는 명령어
    - 미리 만들어 놓은 DB 파일에서 파일을 검색하기 때문에 빠른 검색이 가능
    - DB 파일을 업데이트하지 않으면 최근에 삭제된 파일도 검색됨
    - 문제 해결하기 위해 locate 명령어를 사용하기 전에 updatedb 명령을 실행하는 것을 권장함
    • 기본 형식
      [root@localhost ~]# locate [옵션] [파일명]
    • 옵션
      -e 검색에서 제외할 디렉터리 지정
      -n 지정한 개수만큼 검색
  9. whereis
    - 명령어의 바이너리(실행파일), 소스, 매뉴얼 파일의 위치를 검색하는 명령어
    • 기본 형식
      [root@localhost ~]# whereis [검색할 명령어]
  10. which
    - 명령어 실행 파일(또는 링크)의 위치를 검색하는 명령어
    • 기본 형식
      [root@localhost ~]# which [검색할 명령어]