Operating System(OS)/리눅스 마스터 2급 이론 정리

리눅스마스터 2급 자격증 이론 내용 정리 / 02. 리눅스 기본 명령어 - 1. 사용자 생성 및 계정 관리

9rrrr-m 2024. 8. 4. 12:07
더보기

올해안에 리눅스 마스터 2급 따기를 목표로 '세종사이버대학교 컴퓨터공학과·AI공학과' 유튜브 채널의 컴퓨터·AI공학과 리눅스마스터2급 자격증 특강 강의를 듣고 내용을 정리한 것입니다.

 

* 오타나 내용 오류시 댓글 남겨주시면 감사하겠습니다!

** 코드 블록에 명령어는 적혀있으나, 모든 실행 결과를 함께 적지는 않았습니다.

 

02. 리눅스 기본 명령어

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

        (1) 기본 명령어
        (2) 사용자 생성 및 계정 관리

    2. 디렉터리 및 파일 관련 명령어
    3. 리다이렉션과 정규 표현식
    4. 기타 명령어


 

02. 리눅스 기본 명령어 - 1. 사용자 생성 및 계정관리

(1) 기본 명령어

▶ which  - 명령어 경로 확인

  • PATH 환경변수의 경로에 따라 사용자가 실행할 명령어의 위치 혹은 alias를 표시
  • which  [명령어]
[LinuxMaster]# which bash
/usr/bin/bash

[LinuxMaster]# which pwd
/usr/bin/pwd

 

▶ whereis  - 대상 명령어의 절대 경로, 소스 파일, 설정 파일, 메뉴얼 등 정보를 표시

  • whereis  <-옵션>  [명령어]
    ◦  옵션: -b (바이너리만 검색),  -m (지정한 메뉴얼 섹션만 검색),  -M (메뉴얼 페이지 위치 제한),  -u (특정 파일 제외)
[LinuxMaster]# whereis find
find: /usr/bin/find  /usr/share/man/man1p/find.1p.gz  /usr/share/man/man1/find.1.gz

 

alias  - 명령어의 별칭 만들기

  • 명령어에 별칭을 부여하여 자주 사용하는 명령을 편리하게 사용
  • alias  [별칭='명령']
[LinuxMaster]# alias showall='ls -al'
[LinuxMaster]# showall

 

unalias  - 명령어의 별칭 삭제하기

  • 만들어 놓은 별칭을 삭제
  • unalias  [별칭]
    ◦  unalias  -a  : 설정해 놓았던 별칭을 모두 삭제
[LinuxMaster]# unalias showall
[LinuxMaster]# showall
-bash: showall: command not found

 

PATH 환경 변수  - 명령어(프로그램)가 위치한 경로를 찾는 순서 지정

  • PATH 환경 변수에 지정된 디렉터리를 순서대로 탐색하여 명령어(프로그램)을 찾고 실행
  • 확인: echo $PATH
  • 설정: export  PATH=[설정값:설정값:···]
    ◦  ~/.bash_profile에 기본값 설정, 예) export  PATH=$PATH:/var/myfile
    ※ 기타 환경 변수의 확인 및 설정 방법도 동일함
[LinuxMaster]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[LinuxMaster]# export MYVAR=LinuxMaster
[LinuxMaster]# echo $MYVAR
LinuxMaster

 

▶ man  - 리눅스 명령어의 메뉴얼(manual) 확인

  • 리눅스에서 사용할 수 있는 명령어들의 메뉴얼을 확인
  • man  <섹션>  <-옵션>  [명령어]
    ◦  섹션: 1 (일반),  2 (시스템 호출),  3 (C 표준 함수),  4 (장치/특수 파일),  5 (특정한 파일),  6 (게임/화면보호기),  7 (리눅스 파일 표준, 프로토콜, 시그널 목록),  8 (시스템 관리 명령어, 데몬 정보),  9 (커널 관리 정보)
    ◦  옵션: -h (사용법 표시),  -a (모든 페이지 표시),  -w (검색 문자의 메뉴얼 페이지의 위치 표시),  -f (키워드 검색하여 페이지 표시)
[LinuxMaster]# man find

 

apropos  - 명령어 메뉴얼에서 지정한 키워드가 포함된 것을 검색

  • whatis 데이터베이스를 참조하여 지정한 문자열을 포함한 것을 검색하여 표시
  • apropos  [문자열]
[LinuxMaster]# apropos find

 

manpath  - man 명령이 참조하는 메뉴얼의 경로 표시

  • man 명령이 페이지를 찾기 위해 탐색하는 경로 정보를 표시
  • manpath
[LinuxMaster]# manpath
/usr/local/share/man:/usr/share/man/overrides:/usr/share/man

 

info  - 리눅스 명령어의 사용법, 옵션 등 표시

  • 리눅스 명령어의 사용법, 옵션 등을 표시. man 명령보다 제한적인 기능 제공
  • info  [명령어]
[LinuxMaster]# info find

 

whatis  - 명령어의 기능을 간략히 표시

  • whatis 데이터베이스에서 키워드를 검색하여 일치할 경우 명령어의 기능을 표시
  • whatis  [명령어]
[LinuxMaster]# whatis find

 

 

 

(2) 사용자 생성 및 계정 관리

useradd, adduser  - 사용자 계정 생성

  • 사용자 계정과 관련 정보를 생성
  • useradd  <-옵션>  [계정명]
    ◦  옵션: -s (로그인 셸 지정),  -d (홈 디렉터리 지정),  -f (패스워드 만료 후 계정 영구 정지까지의 기간),  -e (계정의 유효 기간, 임시계정 생성),  -c (/etc/passwd에 사용자 설명 추가),  -G (소속할 그룹 추가)
  • 기본 홈 디렉터리: /home/계정명
  • 계정 정보 파일: /etc/passwd,  /etc/shadow,  /etc/group에 정보 추가
[LinuxMaster]# useradd -d /CHRIS chris

 

passwd  - 사용자 패스워드 변경

  • /etc/shadow 파일에 패스워드 변경 및 저장
  • passwd  <-옵션>  [계정명]
    ◦  옵션: -S (상태표시),  -d (삭제),  -l (잠금),  -u (잠금해제)
  • 상태표시 정보: PS (정상),  NP (패스워드 없음),  LK (잠금 혹은 패스워드 없는 상태)
[LinuxMaster]# passwd -S chris
chris  LK  2023-01-08  0  99999  7  -1  (# 비밀번호 잠금)
[LinuxMaster]# passwd  chris
****
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[LinuxMaster]# passwd -S chris
chris  PS  2023-01-08  0  99999  7  -1  (# 비밀번호 설정, SHA512 암호화)

 

su  - 사용자 전환 (switch user)

  • 로그아웃 없이 다른 사용자의 계정으로 로그인, 다른 사용자의 권한을 획득
  • su  <-옵션>  [계정명]  <셸변수>
    ◦  옵션:  - 혹은  -l  혹은  -login (사용자 환경변수 적용),  -s (쉘 지정),  -c (계정 변환없이 지정한 명령어 실행)
[LinuxMaster]# su chris
[LinuxMaster]# pwd
/root
[LinuxMaster]# exit
exit
[LinuxMaster]# su - chris
[chris@118-27-119-212 ~]$ pwd
/CHRIS

 

사용자 설정 관련 환경 구성 파일

  • /etc/default/useradd: 사용자를 추가할 때 기본 설정 정보로 활용
    ◦  SKEL: 사용자 홈 디렉터리로 복사될 초기 환경 설정 파일이 저장된 디렉터리 지정
  • 텍스트 편집기(vi, nano 등) 혹은 'useradd  -D 옵션'으로 변경
[LinuxMaster]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
SHELL=/bin/bash
SKEL=/etc/skel
...
  • /etc/passwd: 사용자 계정 정보 저장
    ◦  파일 형식)  username : password : uid : gid : comment : home-directory : shell
    ◦  password: 패스워드 → pwconv 실행 (x로 표시, /etc/shadow에 패스워드 기록),  pwunconv로 비활성화
  • /etc/shadow: 사용자 패스워드 암호화 파일
    ◦  파일 형식)  username : password : lastchange : mindays : maxdays : warndays : inactive : expire : flag
    ◦  lastchange: 1970년 1월 1일 기준 최근 비밀번호 변경일
    ◦  mindays: 비밀번호 변경 후 재설정 가능한 최소 기간
    ◦  inactive: 비밀번호 만료 후 계정사용 불가능 까지의 유예 기간
    ◦  expire: 계정 사용 정지 날짜 (1970년 1월 1일 기준으로 이후의 날짜 수)
    ◦  flag: 기본 0으로 설정
  • /etc/login.defs: 사용자 계정 설정 시 기본값
    ◦  예) MAIL_DIR (메일 디렉터리),  PASS_MAX_DAYS (패스워드 변경 없이 사용할 수 있는 최대 일 수),  PASS_MIN_LEN (패스워드 최소 길이),  CREATE_HOME (홈 디렉터리 생성 여부) 등
[LinuxMaster]# cat /etc/login.defs

 

usermod  - 사용자 계정 정보 수정

  • 사용자 홈 디렉터리, 그룹, 유효기간, 셸 등 정보를 변경
  • usermod  <-옵션>  [계정명]
    ◦  옵션: -u (새로운 UID),  -g (새로운 GID),  -G (새로운 보조 그룹),  -d (새로운 홈 디렉터리),  -s (새로운 셸),  -c (새로운 주석),  -l (새로운 계정명)
[LinuxMaster]# usermod -h
Usage: Usermod [options] LOGIN

 

 userdel  - 사용자 계정 정보 삭제

  • /etc/passwd,  /etc/shadow,  /etc/group에서 사용자 정보 삭제
  • userdel  <-옵션>  [계정명]
    ◦  옵션: -r (사용자의 메일 파일과 홈 디렉터리 모두 삭제)
[LinuxMaster]# userdel -h
Usage: userdel [options] LOGIN

 

 change  - 패스워드 만료 정보 변경

  • change  <-옵션>  [계정명]
    ◦  옵션: -I (계정 정보 표시),  -m (최소 사용 일자),  -M (사용 가능 일자),  -E (만기일),  -W (만기 전 지정 날짜 부터 경고)
[LinuxMaster]# change -I chris
마지막으로 암호를 바꾼 날		: 1월 08, 2023
암호 만료			: 안함
암호 비활성화 기간		: 안함
계정 만료			: 안함
암호를 바꿀 수 있는 최소 날 수	: 0
암호를 바꿔야 하는 최대 날 수	: 99999
암호 만료 예고를 하는 날 수	: 7
...

 

groupadd  - 그룹을 추가하는 명령어

  • groupadd  <-옵션>  [그룹명]
    ◦  옵션: -g (GID 지정),  -r (시스템 그룹 시 500번 이하의 값 중 가능 높은 범위 할당)

 groupdel  - 그룹을 삭제하는 명령어

  • groupdel  [그룹명]

 groupmod  - 그룹 설정 변경

  • groupmod  <-옵션>  [그룹명]
    ◦  옵션: -g (GID 변경),  -n (새로운 그룹명 설정)

 

그룹 설정 관련 환경 구성 파일

  • /etc/group: 사용자가 소속된 그룹을 설정
    ◦  파일 형식)  groupname : password : gid : users
    ◦  users: 콤마(,)로 구분된 사용자 계정
  • /etc/gshadow: 그룹의 패스워드를 MD5로 암호화 하여 저장
    ◦  파일 형식)  groupname : password : owner : users
    ◦  password:  ! 이면 암호가 없는 상태
    ◦  users: 콤마(,)로 구분된 사용자 계정

 

 users  : 로그인한 사용자 정보 표시

  • users  <-옵션>
    ◦  옵션:  --version (명령어 버전 정보)
[LinuxMaster]# users
root

who  : 접속한 사용자 정보 표시

  • 계정명, 터미널 정보, 접속 시간, 접속 서버 등 표시
  • who  <옵션>
    ◦  옵션:  -b (마지막 부팅 시간),  -q (로그인 사용자, 사용자 수 표시),  -r (현재 실행 레벨 표시)
[LinuxMaster]# who -q
root
# users=1
[LinuxMaster]# who -r
	run-level 3 2024-08-04-11:40

 w  : 접속한 사용자 정보 표시

  • 서버 시간, 부팅 후 작동 시간, 접속자 수, 접속자별 평균 부하율, 접속자별 계정명, TTY 이름, 로그인 시간 등
  • w
    ◦  JCPU: TTY 장치명에서 사용되는 모든 프로세스의 CPU 사용 시간
    ◦  PCPU: WHAT에 표시된 프로세스의 CPU 사용 시간
[LinuxMaster]# w

id  : 접속한 사용자 정보 표시

  • uid, gid, group 정보 표시
  • id  <-옵션>  [계정명]
    ◦  옵션:  -u (UID만 표시),  -g (GID만 표시),  -G (사용자가 표시된 모든 그룹 표시)
[LinuxMaster]# id
uid=0(root) gid=0(root) groups=0(root)

who am i, whoami  : 접속해 있는 자신의 정보 표시

  • who am i 혹은 whoami
[LinuxMaster]# whoami
root

groups  : 사용자가 속한 그룹 목록 표시

  • groups  <계정명>
[LinuxMaster]# groups
root
[LinuxMaster]# groups chris
chris : chris
728x90