오늘은 리눅스 기본 명령어의 첫번째 시간이며 사용자 생성 및 계정관리에 대한 명령어를 살펴보도록 하겠습니다.
리눅스 명령어 개요
~$ which
- 명령어 경로를 확인하는 명령어이다.
- 명령어 위치를 찾아주거나 alias를 보여주는 명령어이다.
- 사용자가 현재 위치에서 명령을 실행시켰을 때 어떤 명령이 실행되는지를 알고 확인할 수 있다.
- $PATH가 설정되어 있는 경로에서만 해당 명령어의 경로를 찾는다.
[형식]
~$ which 명령어
[예제]
~$ which pwd
/bin/pwd
~$ alias
- 자주 사용하는 명령어를 특정 문자로 입력해 두고 명령어 대신 해당 문자를 사용할 수 있게 하는 명령어이다.
[형식]
~$ alias 별명='명령어'
[예제]
~$ alias pl='pwd | ls -al'
~$ unalias
- alias 기능을 해제한다.
[형식]
~$ unalias 옵션 단축명령어
[예제]
~$ unalias pl
환경변수 PATH
- 실행 파일들의 디렉터리 위치를 저장한다.
- 현재 디렉터리와 상관없이 특정 명령어를 입력하면 PATH에 저장되어 있는 경로에서 해당 명령어를 찾아 실행한다.
- echo $PATH는 지정된 PATH값 확인할 수 있다.
[예제]
~$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/guest/.local/bin:/home/guest/bin
- 기존의 PATH에 새로운 경보를 추가하는 방법에는 명령어 PATH나 홈 디렉터리의 .bash_profile에 PATH를 추가한다.
- 기존 경로와 새 경로는 콜론(:)으로 구분한다.
[형식]
~$ export 변수명=$변수명:변수값
[예제]
~$ PATH=$PATH:/dev
~$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/guest/.local/bin:/home/guest/bin:/dev
[예제]
파일 .bash_profile에 PATH 부분을 확인한다.
## .bash_profile
## Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
## User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
리눅스 도움말
~$ man
- 리눅스에서 사용하는 명령어들의 메뉴얼을 제공한다.
[형식]
~$ man 섹션 옵션 명령어
[섹션]
- 일반 명령어 관련 매뉴얼
- 시스템 호출 관련 매뉴얼
- C 표준 라이블러리 함수 관련 매뉴얼
- 장치 드라이버 또는 특수 파일에 대한 정보
- 특정 파일들에 대한 정보
- 게임과 화면보호기에 대한 정보
- 리눅스 파일 표준, 프로토콜, 시그널 목록 정보
- 시스템 관리 명령어, 데몬 정보
- 커널 관리 정보
[옵션]
- -a : 찾고자 하는 명령어의 검색된 매뉴얼 페이지 모두 출력
- -h : 사용법 출력
- -f : whatis 명령과 동일. 키워드와 동일한 man 페이지만 출력
- -k : apropos 명령과 동일. 키워드가 포함된 man 페이지 출력
- -w : 찾고자 하는 문자의 매뉴얼 페이지가 있는 위치 출력
~$ info
- 리눅스 명령어의 사용 방법, 옵션 등을 나타낸다.
- man에 비해 제공되는 명령어 한정적이다.
[형식]
~$ info 명령어
~$ whatis
- 명령어에 대한 기능을 간략하게 나타낸다.
- 자세한 사용법과 설명은 man 또는 info로 확인해야 한다.
- 완전히 키워드가 일치해야만 해당 명령어의 기능을 확인할 수 있다.
- whatis 데이터베이스에서 문자열만 검색한다.
[형식]
~$ whatis 명령어
[예제]
~$ whatis ls
ls (1) - list directory contents
~$ manpath
- man 페이지의 위치 경로를 검색하여 표시해 주는 명령어이다.
[형식]
~$ manpath
[예제]
~$ manpath
/usr/local/share/man:/usr/share/man
~$ whereis
- 찾고자 하는 명령어의 실행 파일 절대 경로, 소스코드, 설정 파일 및 매뉴얼 페이지 출력하는 명령어이다.
[형식]
~$ whereis 옵션 명령어
[옵션]
- -b : 바이너리 파일만 찾음
- -m : 지정된 매뉴얼 섹션에서만 찾음
- -M : 매뉴얼 페이지 위치 제한
- -u : 특정 파일 제외
[예제]
~$ whereis shutdown
shutdown: /usr/sbin/shutdown /usr/share/man/man2/shutdown.2.gz
/usr/share/man/man3p/shutdown.3p.gz .usr/share/man/man8/shutdown.8.gz
~$ apropos
- man 페이지 설명에서 지정한 키워드를 포함하고 있는 명령어이다.
- whatis 데이터베이스에서 문자열을 포함한 것을 검색한다.
- whatis 데이터베이스가 만들어져 있어야 한다.
[형식]
~$ apropos 문자열
사용자 생성 명령어
~$ useradd
- 계정 생성 명령어로 adduser와 동일한 기능을 갖는다.
- 계정자의 홈 디렉터리는 '/home/계정명'이다.
- 생성한 계정자 정보는 파일 /etc/passwd, /etc/shadow, /etc/group에 저장된다.
[형식]
~$ useradd 옵션 계정명
[옵션]
- -s : 사용자의 로그인 기본 셸 지정
- -d : 계정자의 홈 디렉터리 지정
- -f : 패스워드가 만기된 후 계정이 영구말소될 때까지 기간 지정
- -e : 사용자 계정 유효기간 설정 및 일정 시간 동안 사용 가능한 임시 계정을 만들 때 사용
- -c : /etc/passwd에 새로운 사용자 설명 추가
- -G : 계정자가 속한 그룹 외에 다른 그룹에 계정자 추가
[예제]
계정 hyun을 생성한다. 계정자 hyun의 홈 디렉터리를 /HOUSE로 지정한다.
~$ useradd -d /HOUSE hyun
~$ su - hyun
~$ pwd
/HOUSE
~$ passwd
- 생성된 계정자의 패스워드를 입력 및 변경하는 명령어이다.
- 생성된 계정자의 패스워드는 /etc/shadow 파일 안에 기록된다.
[형식]
~$ passwd 옵션 계정명
[옵션]
- -S : 계정 상태 표시 (PS : 정상, NP : 패스워드 없음, LK : Lock 상태이거나 NP 상태)
- -d : 계정 패스워드 삭제
- -l : 계정 lock 상태로 변경
- -u : 계정 lock 상태 해제
[예제]
~$ passwd -S hyun
hyun LK 2023-01-26 0 99999 7 -1 (Password Locked.)
~$ passwd hyun
Changing password fo r user hyun.
New password:
Retype New password:
passwd: all authentication tokens updated successfully.
~$ passwd -S hyun
hyun PS 2023-01-26 0 99999 7 -1 (Password se t, SHA512 crypt.)
~$ su
- 현재 사용자 계정에서 로그아웃하지 않고 다른 사용자 계정으로 로그인하여 해당 사용자의 권한을 획득한다.
[형식]
~$ su 옵션 사용자 셸변수
[옵션]
- -, -l, --login : 지정한 사용자의 환경변수를 적용하여 로그인
- -s : 지정된 셸로 로그인
- -c : 셸을 실행하지 않고 주어진 명령어 수행
[예제]
셸 환경변수를 가져오지 않고 관리자 root로 계정을 변경한다.
~$ su root
Password:
[root@localhost hyun] # pwd
/home/hyun
[예제]
관리자 root의 셸 환경변수를 가져온다.
~$ su - root
Password:
[root@localhost ~] # pwd
/root
[예제]
사용자 계정 변환 없이 root 권한으로 명령어 ls를 수행한다.
~$ su -c 'ls' - root
Password:
bin boot dev etc home lib lib64 media
mnt opt proc root run sbin srv sys
tmp usr var
사용자 관련 파일
/etc/default/useradd
- useradd로 사용자 계정을 추가할 때 사용되는 정보를 읽어오는 파일
~$ cat /etc/default/useradd
## useradd default file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[옵션]
- GROUP : 새로 생성되는 계정이 기본적으로 속할 그룹의 GID
- HOME : 새로 생성되는 계정의 홈 디렉터리 위치
- INACTIVE : 생성 계정의 패스워드 사용 기간이 만료 후 계정 비활성 일자 (0 = 사용 불가능, -1= 기능 미사용)
- EXPIRE : 새로 생성되는 계정의 패스워드 만료일 (YYYY-MM-DD)
- SHELL : 새로 생성되는 계정의 기본 셸
- SKEL : 새로 생성되는 계정의 홈 디렉터리로 복사될 초기 환경설정 파일 디렉터리
- CREATE_MAIL_SPOOL : 새로 생성되는 계정의 메일 저장 파일 여부
[변경방법]
- /etc/default/useradd은 vi편집기 또는 명령어 "useradd -D"로 변경한다.
[변경옵션]
- -g : 그룹 변경
- -b : 홈 디렉터리 변경
- -f : INACTIVE 변경
- -e : 계정 종료일 변경
- -s : 셸 변경
[변경예제]
- 관리자의 gid는 500, 홈 디렉터리는 /home/example, 셸은 /bin/sh로 변경한다.
[root@localhost ~] # useradd -D -g 500 -b /home/example -s /bin/sh
[root@localhost ~] # useradd -D
GROUP=500
HOME=/home/example
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
/etc/passwd
- 계정자의 정보를 가지고 있는 파일로 리눅스에 로그인할 때 사용
[형식]
username:password:uid:gid:comment:homedirectory:shell
사용자 이름:암호화된 비밀번호:UID:GID:설명문:홈 디렉터리:로그인 셸
/etc/shadows
- 계정자의 페스워드 정보가 암호화되어 있는 파일
- 새로운 계정을 생성할 때 반드시 참조하는 파일
[형식]
username:password:lastchange:mindays:maxdays:warndays:inactive:expire:flag
사용자 이름:암호화된 비밀번호:최근 비밀번호 변경일:비밀번호 재설정 대기일 수:비밀번호 유효기간:
비밀번호 변경 경고 기간:비밀번호 유예기간:비밀번호 만료 이후 계정 사용 불가 기간:예약 세팅
/etc/login.defs
- 사용자 계정 설정과 관련된 기본값을 정의한 파
[용어]
- MAIL_DIR : 메일 디렉터리
- PASS_MAX_DAYS : 패스워드 변경 없이 사용할 수 있는 최대일자
- PASS_MIN_DAYS : 패스워드 설정 후 최소 사용기간
- PASS_MIN_LEN : 패스워드의 최소 바이트 수
- PASS_WARN_AGE : 패스워드 만료 경고일
- UID_MIN : 생성할 수 있는 UID 시작번호
- UID_MAX : 생성할 수 있는 최대 UID 번호
- GID_MIN : 새로 생성되는 그룹의 GID 시작번호
- GID_MAX : 새로 생성되는 그룹의 최대 GID 번호
- CREATE_HOME : 홈 디렉터리 생성 여부
사용자 계정 관리
~$ usermod
- /home에 위치한 사용자 정보 변경
[형식]
~$ usermod 옵션 계정명
[옵션]
- -u : 새 UID 지정 (-o포함 : 강제 설정)
- -g : 새 GID 지정
- -G : 새 보조그룹 지정
- -d : 새 홈 디렉터리 지정 (-m포함 : 새로 생성 가능)
- -s : 새 셸 지정
- -c : 새 주석 지정
- -I : 로그인 ID 변경
~$ userdel
- 기존 계정 정보를 삭제
[형식]
~$ userdel 옵션 계정명
[옵션]
- -r : 계정명의 /var/spool/mail의 메일 파일과 홈 디렉터리 내용 모두 삭제
~$ chage
- 패스워드의 만료 정보를 변경
[형식]
~$ chage 옵션 계정명
[옵션]
- -l : 사용자 계정 정보 출력
- -m : 설정 암호 최소일자
- -M : 설정 암호 사용 가능 일자
- -E : 암호 만기일
- -W : 만기 전 변경 요구 경고 날짜 지정 (지정된 날짜에 경고 메시지 출력)
그룹관리
/etc/group
- 사용자 그룹 정의 파일
[형식]
groupname:password:gid:members
그룹명:패스워드:GID:그룹에 속한 멤버
/etc/gshadows
- 그룹의 암호를 MD5로 암호화하여 저장하며, 그룹의 소유주, 구성원 설정이 가능
[형식]
ex) group2:!::
그룹명:그룹 암호(!=부여되지 않음):그룹 소유주:그룹 구성원
~$ groupadd
- 새로운 그룹 생성
[형식]
~$ groupadd 옵션 그룹명
[옵션]
- -g : 그룹에 gid
- -r : 시스템 그룹 생성 시 사용, 500번 이하 값 지정(남아있는 가장 높은 범위로 할당)
~$ groupdel
- 기존 그룹 삭제
[형식]
~$ groupdel 그룹명
~$ groupmod
- 그룹 설정 변경
[형식]
~$ groupmod 옵션 그룹명
[옵션]
- -g : gid 변경
- -n : 새로운 그룹명을 변경할 때 사용
사용자 조회 명령어
~$ users
- 사용자 정보 출력
[형식]
~$ users 옵션
[옵션]
- --version : users 명령어 버전 정보 출력
[예제]
~$ users
STLLIN
~$ who
- 현재 시스템에 접속해 있는 사용자 조회
- 관리자, 일반 사용자 모두 사용 가능
- 'who am i' 또는 'whoami'로 자신의 정보를 조회 가능
[형식]
~$ who 옵션
[옵션]
- -b : 마지막 시스템 부팅 시간 출력
- -q : 로그인한 사용자, 사용자 수 모두 출력
- -r : 현재 시스템 실행 레벨 확인 가능
~$ w
- 현재 접속 중인 사용자들이 정보 출력
[확인 가능한 정보]
- 서버의 현재 시간 정보
- 서버 부팅 후 시스템 작동 시간
- 서버 접속자의 총 수
- 접속자별 평균 부하율
- 접속자별 서버 접속 ㄱ정명
- TTY명
- 로그인 시간 정보 등
JCPU : TTY 필드의 장치명에서 사용되는 모든 프로세스의 CPU 사용 시간
PCPU : 해당 프로세스 결과값에서 WHAT 필드에 나타나는 프로세스명에서 사용하는 CPU 총 시간
~$ id
- 사용자 계정의 uid, gid, group을 확인
[형식]
~$ id 옵션 계정명
[옵션]
- -g : 사용자의 GID만 표시
- -G : 사용자가 포함되어 있는 모든 그룹 정보 표시
- -u : 사용자의 UID만 표시
~$ groups
- 사용자 계정이 속한 그룹 목록을 확인
[형식]
~$ groups 계정명
[예제]
~$ groups STLLIN
STLLIN
참고서 : 2023 이기적 리눅스마스터 2급 기본서
내용 : 64p ~ 85p
'Linux' 카테고리의 다른 글
리눅스 기본 명령어 Chapter 3 (2) | 2023.01.30 |
---|---|
리눅스의 부트 매니저 (0) | 2023.01.25 |
파티션이란? (0) | 2023.01.20 |
리눅스의 설치 (1) | 2023.01.18 |
리눅스 라이선스에 대해 (0) | 2023.01.17 |