echo hello world
⇾ hello world 출력
exit, Ctrl + D
⇾ shell 종료 명령어
gnome-session-quit
⇾ 로그아웃 명령어
shutdown -h now
⇾ 시스템 종료 명령어
cat /etc/passwd
⇾ user 정보를 보여줌
account:password:UID:GID:GECOS:home directory:longin shell
Ex) eunchong:x:1000:1000:KIMEUNCHONG,,,:/home/eunchong:/bin/bash
account : username
password : 암호화된 암호 (암호가 설정 되어 있으면 x, 설정 되어 있지 않으면 !)
UID : user ID, Login name
GID : group ID
GECOS : full user name
home directory : 현재 계정의 절대 경로
login shell : 해당 계정의 기본 쉘 (리눅스 기본 shell은 /bin/bash 임)
sudo cat /etc/shadow
⇾ passwd 보기
Account : Password : Last changed : MIN : MAX : WARNING : INACTIVE : EXPIRE : R
Ex) peterpan:$1$4cxEeSCx$JeWhRsuySxowaR8mf5sKT0:16205:
0:99999:7:::
Account : Login name
Password : 암호화된 암호
Last changed : 최근에 암호가 변경된 날짜(일 단위)
MIN : 최소 암호 사용기간 (empty or 0 ⇾ 최소 암호 사용기간 없음) ⇾ 최소 암호 사용기간이 지나기 전에는 암호 변경 불가
MAX : 최대 암호 사용기간 ⇾ 최대 암호 사용기간이 지나면 암호를 변경해야 함
WARING : 경고 기간, 아직까지 암호 사용 가능 (7 days later ⇾ INACTIVE)
INACTIVE : 암호 비활성화 기간, 아직까지 암호 사용 가능 (3 days later ⇾ EXPIRE)
EXPIRE : 암호 사용 불가, 로그인 할 수 없음
*UID*
사용자 ⇾ useraccount를 통제 접근 통제됨 (서로 다른 권한을 가짐)
컴퓨터 ⇾ 숫자 지향적인 기계 ⇾ 다른 유저가 같은 UID 사용 ⇾ 컴퓨터는 같은 유저로 인식함
보통 0~999
0 : root
1 : daemon
100 : nobody
cat /etc/group
⇾ 그룹 보기
*GID*
그룹 : 요구사항이 다른 사람들의 집합에 대해 보안을 관리할 수 있게 해줌 ⇾ 각 그룹에 맞는 권한 부여
users 들은 목적에 따라 grouping 되어지고 각 그룹에 부여된 권한을 사용
default group ⇾ passwd file에 저장됨 ⇾ cat /etc/passwd command를 통해 볼 수 있음 / 한 그룹만 저장 가능
other group ⇾ etc/group file에 저장됨 ⇾ cat /etc/group file command를 통해 볼 수 있음 / 여러 그룹 저장 가능
Group name: x : GID : Group member
ex)
dsm:x:1001:kbkim,mglee,yez
kbkim:x:1000:
Group name : 그룹 이름
x : 패스워드 (볼 수 없음 ⇾ 볼려면 sudo /etc/gshadow command 사용)
GID : group ID
Group member : 그룹 멤버 O ⇾ other group, 그룹 멤버 X ⇾ default group
cf)
group을 보는 command ⇾ cat /etc/group
user를 보는 command ⇾ cat /etc/passwd
passwd를 보는 command ⇾ sudo cat /etc/shadow (passwd는 암호화 되어 있음)
*su command*
| command | fuction |
|---|
| su username | user를 바꿈 (디렉터리는 바뀌지 않음 -> 명령어 사용전 디렉터리) |
| su - username | user를 바꿈 (디렉터리 위치가 해당 유저의 홈디렉터리로 변경 됨) |
| su -, su root | user를 root로 바꿈 |
whoami
⇾ 현재 유저를 보여줌
last
⇾ 로그인 기록을 보여줌
sudo 프로그램 명
⇾ 해당 프로그램에 root 권한 부여, sudo group안에 있는 user만이 sudo command 사용 가능
(sudo 명령어 사용시 자신의 패스워드를 입력하여 사용)
*sudoers*
sudo command를 사용할 수 있는 users들 ⇾ sudo group안에 있는 users들
sudo cat /etc/sudoers 를 통해 sudoers 목록 보기 가능
(sudo gpasswd -a username sudo를 통해 생성 가능)
(sudo gpasswd -d username sudo를 통해 제거 가능)
유저 관련 명령어
adduser ⇾ 패스워드를 user 생성시 설정 하게 됨
useradd ⇾ 패스워드를 자동적으로 설정해주지 않음 ⇾ sudo passwd username command를 통해 따로 설정해줘야 함
*useradd command*
| option | function |
|---|
| -u | 사용자 계정의 UID 지정 Ex) -u 1500 |
| -m | home directory Ex) -m |
| -g | default group Ex) -g neverland |
| -G | other group ⇾ supplementary group Ex) -G team |
| -p | 기본 password를 설정할 수 있음 (권장 되지 않음, 유출 가능성이 있음) |
| -d | home directory를 설정할 수 있음 Ex) -d /home/test |
| -s | shell Ex) -s /bin/bash |
| -o | 다수의 유저가 한 UID를 사용할 수 있음 Ex) -s 1500 |
| Ex) | sudo useradd -g team1 -G team2 -m -s /bin/bash t1 ⇾ default group으로 team1 other group으로 team2 shell은 /bin/bash로 user t1추가 |
ls -a /etc/skel
⇾ default 파일들을 포함하고 있음
*usermod command*
| option | function |
|---|
| -g groupname username | user의 default group을 해당 group으로 변경 (기존 default group들은 삭제 됨) Ex) usermod -g neverland peterpan |
| -G groupname username | user의 other group을 해당 group으로 변경 (기존 other group들은 삭제 됨) Ex) usermod -G neverland peterpan |
| -aG groupname username | user의 other group에 해당 group을 추가 Ex) usermod -aG neverland peterpan |
| -l newname currentname | 현재 이름을 새로운 이름으로 변경 Ex) usermod -l hook peterpan |
| -s /bin/bash username | 해당 user의 shell을 /bin/bash로 변경 Ex) usermod -s /bin/bash hook |
sudo chfn username
⇾ 해당 유저의 full name을 변경 (GECOS 영역이 변경 됨)
*userdel command*
| option | function |
|---|
| username | 해당 user를 삭제 Ex) userdel peterpan |
| -r username | 해당 user와 홈디렉토리의 삭제 Ex) userdel -r peterpan |
| -f username | 강제로 해당 user 삭제 Ex) userdel -f peterpan |
패스워드 관련 명령어
*passwd command*
| option | function |
|---|
| -n | 최소 패스워드 사용기간 설정 Ex) passwd -n |
| -x | 최대 패스워드 사용기간 설정 Ex) passwd -x |
| -w | 패스워드 waring 기간 설정 Ex) passwd -w |
| -i days | 패스워드 inactive period를 days로 변경 Ex) passwd -i days |
| username | 해당 유저의 패스워드 설정 Ex) passwd username |
*usermod command*
| option | function |
|---|
| -f days username | 해당 user의 inactive period를 days로 변경 Ex) usermod -f 10 peterpan |
| -e yyyy-mm-dd username | 해당 user의 expiration date를 yyyy-mm-dd로 설정 usermod -e 2022-12-4 peterpan |
그룹 관련 명령어
*groupadd command*
| option | function |
|---|
| groupname | 해당 그룹 생성 Ex) groupadd neverland |
| -g GID groupname | 해당 GID로 해당 그룹 생성 Ex) groupadd -g 2000 neverland |
*groupmod command*
| option | function |
|---|
| -n newname currentname | 그룹 이름을 현재 이름에서 새로운 이름으로 변경 Ex) groupmod -n attacker defender |
| -g GID groupname | 해당 그룹의 GID를 변경 Ex) groupmod -g 2000 neverland |
*groupdel command*
sudo groupdel groupname
⇾ 해당 그룹 삭제
id username
⇾ user의 group information을 볼 수 있음
groups
⇾ 로그인한 user가 속해 있는 group들을 보여줌
| grep string
cat 명령를 사용하여 파일을 읽을 때 해당 문자열이 포함된 줄만 보여줌
id
⇾ user의 id를 보여줌
cat /etc/gshadow
⇾ group들의 패스워드 보기
*gpasswd command*
| option | function |
|---|
| groupname | group의 password를 설정함 -> sudo cat /etc/gshadow를 통해 그룹 패스워드 보기 가능 Ex) sudo gpasswd team |
| -r groupname | group의 password를 삭제함 Ex) sudo gpasswd -r team |
| -a username groupname | group에 user를 추가해라 Ex) sudo gpasswd -a kim sudo |
| -d username groupname | group에서 user를 삭제해라 Ex) sudo gpasswd -d kim sudo |
newgrp groupname
⇾ 유저의 기본 그룹을 해당 그룹으로 변경 (변경하고자 하는 그룹의 패스워드를 입력해야 변경 가능)
Ex) newgrp class1 class2