이것이 리눅스다(8) - 필수 개념과 명령어(사용자와 그룹, 파일의 허가권 및 소유권, 링크)
사용자와 그룹
사용자
윈도우에서는 PC를 혼자 사용하기 때문에 사용자의 개념이 희미하다. 하지만 리눅스는 다중 사용자 시스템이기 때문에 여러 사용자가 있는 것이 흔하다.
root는 모든 작업을 할 수 있는 수퍼유저이다. 모든 사용자는 하나 이상의 그룹에 소속되어 있다. 사용자는 /etc/passwd
파일에 정의되어 있다. 기본적으로 아래와 같이 정의되어 있다.
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
...
centos:x:1000:1000:centos:/home/centos:/bin/bash
뜻을 살펴보면 사용자 이름:암호:사용자 ID:사용자가 소속된 그룹 ID:전체 이름:홈 디렉토리:기본 셸로 되어 있다. 참고로 암호가 x 처리되어 있는 것은 따로 관리되고 있기 때문이다.
비밀번호는 /etc/shadow
에 저장되어 있다. 여기도 비밀번호가 암호화되어 있기 때문에 직접 알 수는 없다.
그룹
그룹은 /etc/group
에 정의되어 있다.
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
...
centos:x:1000:
각 행의 의미는 그룹명:비밀번호:그룹 ID:그룹에 속한 사용자명이다. 잘 살펴보면 각 사용자가 속한 그룹은 사용자의 이름과 동일한데, 이는 리눅스가 사용자를 만들면 자동으로 사용자의 이름과 동일한 그룹으로 사용자를 포함시켜서 그런 것이다.
사용자와 그룹 관련 명령어
-
useradd
: 새로운 사용자를 추가.
–useradd -u
: ID 지정
–useradd -g
: 그룹 지정
–useradd -d
: 홈 디렉토리 지정
–useradd -s
: 셸 지정 -
passwd
: 사용자의 비밀번호를 지정하거나 변경. -
usermod
: 사용자의 속성을 변경 -
userdel
: 사용자를 삭제.
–userdel -r
: 사용자 안에 폴더까지 모두 삭제. -
chage
: 사용자의 암호를 주기적으로 변경하도록 설정. -
groups
: 현재 사용자가 속한 그룹을 보여줌. -
groupadd
: 새로운 그룹을 생성. -
groupmod
: 그룹의 속성을 변경.
사용자를 만들면 /etc/skel
의 내용을 그대로 복사해서 넣어준다. 그리고 그룹을 삭제하기 위해서는 그룹에 포함된 사용자를 모두 삭제하고 나서 지워야한다.
파일의 허가권 및 소유권
파일과 디렉토리는 소유와 허가권의 개념이 있다. 즉, 누가 이것을 소유하고 누가 접근할 수 있는지.
파일 유형
디렉토리일 경우에는 d, 일반적인 파일일 경우에는 -가 표시된다.
파일 허가권
3개씩 끊어서 읽음. r은 read, w은 write, x는 execute의 약자이다.
각각은 소유자, 그룹, 그 외 사용자에 대한 파일 접근권한을 나타내는데, 위의 표를 예로 들어보면, 소유자는 읽기와 쓰기 모두 가능하고, 그룹과 그 외 사용자는 읽기만 가능하다.
또한 숫자로도 표현이 가능하다. 만약 읽기만 가능하다면 100이어서 4, 읽기 쓰기 모두 가능하다면 110이어서 4+2=6이다. 모두 가능하다면 1+2+4=7이기 때문에 최대로 가능한 수는 7이다.
-
chmod
: 파일의 허가권 변경.
–chmod 777 <파일 이름>
는 소유자, 그룹, 그 외의 사용자 모두에게 모든 권한을 허용하는 명령어이다. 원하는 권한만큼 수를 계산해서 명령어를 실행하면 된다. ex.chmod 755 <파일 이름>
–chmod [u|g|o][+|-] <파일 이름>
: 소유권 주체의 이름을 직접 지정하여 사용할 수도 있다. ex.chmod ug+rx <파일 이름>
-
chown/chgrp
: 파일의 소유권을 바꾸는 명령어. 한꺼번에chown <바꿀 소유자>.<바꿀 그룹> <파일 이름>
으로 해도 되고,chown <바꿀 소유자> <파일 이름>
및chgrp <바꿀 소유자> <파일 이름>
처럼 따로 따로 진행해도 된다. 또한 이 명령어는 보안과 직결되어 있어 root 사용자만 쓸 수 있다.
※ su - <이동할 사용자>
: 다른 사용자로 디렉토리까지 이동한다. 다시 root 사용자로 돌아가려면 exit
를 사용하면 된다.
링크
파일의 링크에는 하드링크와 심볼릭 링크가 있다. 심볼릭 링크는 윈도우의 바로가기 개념과 비슷하지만 하드 링크는 윈도우에는 없어 개념이 헷갈릴 수 있다.
하드 링크는 같은 inode를 사용하는 하드 링크 파일이 생성되고, 심볼릭 링크는 새로운 inode를 만들고 데이터는 원본 파일을 연결한다. 둘의 가장 큰 차이는 원본 파일을 제거했을 때 나타난다. 원본 파일을 제거하면 하드 링크는 원래 데이터가 유지되는 반면에, 심볼릭 링크는 파일이 깨지게 된다.
ln <링크 대상 파일> <링크파일 이름>
: 하드 링크. 하드링크파일만 생성되며 같은 inode를 사용한다.-
ln -s <링크 대상 파일> <링크파일 이름>
- 심볼릭 링크. 새로운 inode를 생성하고 데이터는 원본 파일에 연결한다.
Leave a comment