리눅스 : Multi-User System, 1대에 여러 명이 접속이 가능하다.
이와 같은 환경에서, 모든 사용자를 어떻게 관리하나?
$ more /etc/passwd
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false
_uucp:*:4:4:Unix to Unix Copy Protocol:/var/spool/uucp:/usr/sbin/uucico
_taskgated:*:13:13:Task Gate Daemon:/var/empty:/usr/bin/false
_networkd:*:24:24:Network Services:/var/networkd:/usr/bin/false
_installassistant:*:25:25:Install Assistant:/var/empty:/usr/bin/false
# 각 행의 의미를 알아보자.
adduser : 새로운 사용자 추가
$ adduser jm1
# user id 지정하면서 생성
$ adduser -uid 2 jm2
# group id를 지정하면서 생성
$ adduser -gid 3 jm3
passwd : 사용자의 비밀번호를 변경한다.
$ passwd jm1
usermod : 사용자의 속성을 변경한다.
# 기본 shell을 zsh로 변경한다.
$ usermod --shell /bin/zsh
# ubuntu그룹에 jm1을 추가한다.
$ usermod --groups ubuntu jm1
userdel : 사용자 삭제
$ userdel jm2
groups : 사용자가 소속된 그룹을 보여준다.
$ groups
$ groups jm1
groupadd : 새로운 그룹을 생성한다.
$ groupadd group1
$ groupadd -gid 2 group2
groupdel : 그룹을 삭제한다.
$ groupdel group2
확인하는 방법은 아래와 같다.
$ ls -l
-rwxr-xr-x 1 jm some 49760 2 24 10:18 1
-rw-r--r-- 1 jm some 471 3 12 20:34 1.cpp
# 위와 같이 확인할 수 있다.
각 부분은 어떤 의미를 나타낼까?
-: 여기는 어떤 종류의 파일인지 나타낸다.
d : 디렉토리
-: 일반적인 파일
l: 링크
b: 블록 디바이스 -> 하드디스크, 플로피디스크, cd/dvd
c: 문자 디바이스 -> 마우스, 키보드, 프린터 등의 입출력 장치
rwxr-xr-x : 3개씩 끊어서 인식하면 된다. 앞에서부터 3개씩 잘라낸 각각은 다음과 같다.
1 : 링크 수를 의미한다.
jm : file 소유자의 이름
some : file 소유그룹의 이름
49760 : 파일의 크기
2 24 10:18 : 2월 24일 10:18, 마지막 수정시간을 의미한다.
1 : 파일의 이름을 의미한다.
각각 r, w, x는 무엇을 나타낼까?
r,w,x 순서대로 표기되며, 각각 이진수로 표현이 가능하다.
해당 r,w,x가 User, Group, Other 순서로 들어가며, 각각 r,w,x 권한이 있는지 없는지를 나타낸다.
디렉토리에게 있어서 x?
Permission을 어떻게 바꿀까? -> chmod
chmod -> root 사용자, 해당 파일의 소유자만이 실행시킬 수 있다.
예시를 들어보자.
ex1) chmod 777 : rwxrwxrwx -> 모든 user(소유자), group, other에게 읽기, 쓰기, 실행 권한을 준다.
ex2) chmod700 : rwx------ -> user에게만 Permission을 부여한다.
Symbolic method로 실행해보자
ex1) chmod u+x : user에게 x권한을 준다.
ex2) chmod u-x : user에게 x권한을 제거한다.
출처 : https://koromoon.blogspot.com/2018/05/inode-symbolic-link-hard-link.html
출처 : https://hoyoung2.tistory.com/51
# 아무 파일이나 만들어보자.
$ vi file
# ln 명령어와 옵션을 사용하여 링크를 만들어보자 .
## 하드링크
$ ln file hardlink
## 맨 앞은, inode 번호인데, hardlink에서는 같다.
$ ls -il
660308 -rw-r--r-- 2 root root 10 5월 18 01:19 file
660308 -rw-r--r-- 2 root root 10 5월 18 01:19 hardlink
## 심볼릭 링크, -s 로 softlink를 만들어준다.
$ ln -s file softlink
## 맨 앞은, inode 번호인데, Softlink에서는 다르다. 또한, 원본파일을 지정한다는 의미로
$ ls -il
660308 -rw-r--r-- 2 root root 10 5월 18 01:19 file
660308 -rw-r--r-- 2 root root 10 5월 18 01:19 hardlink
660307 lrwxrwxrwx 1 root root 8 5월 18 01:24 softlink -> file