bxm's IT Story
Linux 이론#6 - User와 Group 관련 명령어 / chmod (허가권,소유권) / Process(bg, fg, kill) 본문
Linux 이론#6 - User와 Group 관련 명령어 / chmod (허가권,소유권) / Process(bg, fg, kill)
bxmsta9ram 2021. 6. 24. 14:50<복습 & 과제>
/etc/passwd : 사용자 계정 정보
/etc/shadow : 사용자 계정 정보가 암호화 되어 있는 것.
과제2]
1. user2 사용자 생성시 홈 디렉토리를 /home/myuser2로 하라.
2. 기본 그룹을 mygroup2, 보조그룹을 Luckyguys로 해서 만드시오.
- groupadd mygroup2
- groupadd Luckyguys
- mkdir /home/myuser2
- useradd -d /home/myuser2 -g mygroup2 -G Luckyguys user2
## 확인!
- id user2
- vi /etc/login.defs : 해당 계정의 패스워드 유효기간, // 계정 생성시 자동으로 할당되는 UID/GID 범위
- vi /etc/default/useradd : /etc/passwd 파일에 생성되는 대부분의 기본값이 정의되어 있는 곳.
- cd /etc/skel : 사용자 홈 디렉토리 생성시 복사될 기본 정보 파일들의 위치. 기본 skel 디렉토리, 사용자에게 공지할 내용이 있다면 /etc/skel 디렉토리에 내용을 포함시킬 수 있다.
- ls : 아무것도 안보임.(당연)
- ls -a : 숨은 파일들을 찾아내었다!
- ls -al
- useradd -D 를 치면 아래와 같이 나온다. 옆에는 선생님이 써주신 역할!
GROUP=100 | 기본 소속 그룹 GID |
HOME=/home | 기본 홈 디렉토리 생성 경로 |
INACTIVE=-1 | 패스워드 종료일 이후 유효기간 |
EXPIRE= | 계정 만료기간 ex) useradd -D -e 2017-05-01 |
SHELL=/bin/bash | 기본 쉘 |
SKEL=/etc/skel | 홈 디렉토리 생성시 참조할 기본 skel 디렉토리 |
CREATE_MAIL_SPOOL=yes | 사용자 생성시 메일함 파일 생성 여부 |
- usermod -D : 사용자 계정 수정. useradd와 사용 형식 동일 ex1) usermod -c test user1 ex2) usermod -d /kedu/user1 user1 ex3) usermod -g mygroup1 user1
useradd user9
tail -1 /etc/passwd ## 지금 홈 디렉토리가 /home/user9로 되어있다. 이것을 옮겨보자.
## 옮길 디렉토리 만들어주기
mkdir -p /kedu/user9
## 홈 디렉토리 옮기기
usermod -d /kedu/user9 user9
tail -1 /etc/passwd
## 문제는 디렉토리만 바꾸는게 전부가 아니라, skel 파일도 옮겨야함.
cd /home/user9
ls -al
pwd
cp -r ./.* /kedu/user9
## 숨긴파일은 .으로 시작하므로, .*(.으로 시작하는 모든 것) /kedu/user9로 그것들을 전부 복사하자.
useradd user8
tail -1 /etc/passwd
usermod -d /kedu/user8 user8
mv /home/user8/kedu
tail -1 /etc/passwd
기본적으로 home 말고, kedu 안으로 기본값을 설정하려면 어떻게 하면 될까?
vi /etc/default/useradd
## 그렇다면 그룹을 바꾸고 싶을 때는? ==> -g 옵션을 주면 된다.
usermod -g mygroup user 11
하... 좀 졸았습니다..
<과제 3>
user1의 주 그룹과 부 그룹을 각각 mygroup/user1 group으로 변경하세요.
- groupadd mygroup
- groupadd user1group
- usermod -g mygroup -G user1group user1
- usermod -D : 사용자 계정 삭제 - userdel [계정명] : 계정만 삭제 ## 흔적이 남아있음. - userdel -r [계정명] : 계정, 흔적 모두 삭제 ## 흔적 없는 깨끗한 삭제 (directory), 홈 디렉토리까지 모두 삭제
userdel -r user로 전부 삭제해보기
- id [계정명] : 해당 계정의 상세 정보 (uid, gid 등)
/etc/group : 시스템에 현재 존재하는 group들 vi /etc/group groups : 현재 사용자가 소속된 그룹을 보여줌 groups [사용자명] : 해당 사용자가 소속된 그룹을 보여줌.
- groupadd : 그룹 생성
ex) groupadd -g 2001 mygroup ## 그룹 번호를 지정하여 생성
- groupmod : 그룹 수정
ex) groupmod -n newgroup mygroup ## mygroup을 newgroup으로 이름 변경
grep newgroup /etc/group ## 바뀌었는지 확인법!
- groupdel : 그룹삭제
ex) groupdel newgroup
grep newgroup /etc/group
## 사용자의 권한 변경 ##
## 허가권 ##
- 자료(파일 및 디렉토리)의 허가권 형식
d r w x r w x r w x
------- ------ -------
Owner Group Other
r = 4 : read = 읽기
w = 2 : write = 쓰기
x = 1 : excute (x가 파일에 있다면 실행, 디렉토리에 있다면 접근 가능)
==> 디렉토리는 접근이 되어야만 안에 있는 파일을 읽거나 쓸 수 있다.
파일 : 실행 여부와 관련 => 읽기 (-rw-r--r--), 실행(-rwxr-xr-x)
디렉토리 : 접근 여부와 관련
문서는 Other에 r권한이 있어야만 접근 가능하고, 디렉토리는 Other에 x 권한이 있어야 접근 가능하다.
외부 사용자가 로컬 Device에 접근시 UID 권한만 가질 수 있다. 또한 UID에 'x'가 없으면 외부에서 접근이 안된다.
요컨대 3xx 7xx만 ftp 업로드가 가능하다.
- chmod (CHang MODification)
ex) chmod [permission] [변경할 파일 / 디렉토리명]
cd /temp
ls -l
## 그렇다면 a라는 파일에 그룹의 쓰기 권한을 주려면 어떻게 하면 될까?
- chmod
ex) chmod g+w a
ex) chmod g+x a
ex) chmod g-wx a
ex) chmod g+wx, o+wx a
그렇다면 10진수로 권한을 줄 때는 어떻게 줄까?
chmod 755 a
## 소유권 ##
- chown
chown [사용자] [파일명] : 파일의 소유자를 바꿈
chown [.사용자] [파일명] : 파일 그룹의 소유자를 바꿈
chown [사용자:사용자] [파일명] : 아래까지 총 3가지의 명령어는 파일의 소유자와 그룹의 소유자를 모두 바꿈
chown [사용자.사용자] [파일명]
chown [사용자.] [파일명]
ex1) chown kedu group2.cfg
ex2) chown kedu:kedu inittab
ex3) chown kedu:root login.defs
ex4) chown kedu. login.defs
## 특수 권한 ##
유닉스 운영체제는 기본적으로 파일의 소유자가 아니면, 해당 디렉토리 내의 파일을 지우거나 수정하지 못하도록
umask를 설정한다. 하지만 딱 2군데 모든 사용자 계정이 파일을 만들고 수정, 삭제할 수 있는 디렉토리가 존재한다.
바로 /tmp와 /var/tmp 이다. 이 2개의 디렉토리는 퍼미션이 기본적으로 777로 설정되어 있어, 누구나 임의의 파일을
생성하고 수정하고 삭제할 수 있다. 말 그대로 모든 사용자 계정이 사용하는 공용 디렉토리이다.
1) 일반 사용자(Other)가 SetUID 권한이 설정되어 있는 실행파일을 실행할 경우, 그 파일의 소유자 권한을 가지게 된다.
2) 해당 권한이 설정되어 있는 디렉토리의 모든 유저는 파일을 생성하고 삭제하는 것이 자유롭지만 삭제 시에는
소유권자 혹은 슈퍼 유저만 지울 수 있다.
- r w x(setUserID) r w s(setGroupID) r w x : SetGid --- 2xxx번대 2777
- r w x r w x r w t : Stick bit --- 1xxx번대 1777
ex) chmod 0755 /usr/bin/passwd ## 사용자 비밀번호 변경 불가
==> 다시 4755로 원상복구 해놓는다.
- Umask [mode]
파일이나 디렉토리 생성시 관리자 또는 사용자에 따라 각기 다른 허가권 기본값을 적용할 수 있다.
새로운 파일이나 허가권 지정 명령어로 일반 파일인 경우 666, 디렉토리인 경우 777에서 Umask 값을 뺀
값을 기본 허가권으로 조정한다.
ex) umask가 0022인 경우 : 파일 666-022 = 644 / 디렉토리 777-022 = 755
## 현재 test1(파일), test(디렉토리)를 만들었다. 그런데 파일인 경우 666, 디렉토리인 경우 777이 기본값이다.
## 그런데 umask 값을 조회해보니 0022 이므로, 666-0022 = 644(rw-r--r--) // 777-0022 = 755(rwxr-xr-x)가 된다.
## Process ##
- 각각의 프로세스마다 고유번호의 프로세스 ID (PID)를 하나씩 증가시키면서 부여한다.
- 더 이상 할당할 PID가 없으면, 사용되지 않는 가장 낮은 숫자로 다시 할당한다.
- 파일의 소유권과 유사한 방식으로 동작한다.
- 프로세스를 실행하는 사용자의 UID가 프로세스의 실제 UID로 할당된다.
- 가장 최근에 한 명령이 가장 큰 번호를 부여받는다.
- (+)는 1단계 전, (-)는 2단계 전의 프로세스이다. 그리고 앞에 [번호]로 부여받은 것이 JOB 번호이다.
man cat & : 백그라운드로 man cat을 실행해라.
- Job : 터미널 단말기별로 본 작업 단위
- Kill : 현재 진행중이거나 멈춘 프로세스들을 강제로 죽여버림.
- fg %[Job 번호] : 백그라운드로 진행중인 것들을 포그라운드로 끌어냄. (포그라운드로 끌어온 것을 일시정지 하려면
Cntl + z 누르면 된다.
ex) man cat & // less --help & // man less & // vi & 를 다시 백그라운드로 넣어보자.
## fg 명령어를 통해 백그라운드에서 있던 것을 포그라운드로 불러낸 것을 확인할 수 있다.
## 그리고 가장 최근에 한 것이 +, 2단계 전에 했던 것이 - 이므로 fg +나 fg - 명령어를 통해서도 불러올 수 있다.
## 그리고 가장 최근에 시행한 프로세스가 + 마크가 붙게 된다.
kill 명령어를 통해서 전부 죽여보기.
man cat 명령어를 통해서 (&붙이지 말고!!) 포그라운드로 진입
'서버 > Linux' 카테고리의 다른 글
Linux #7 - Root password 복구(Grub)와 SELinux 보안 (0) | 2021.07.01 |
---|---|
Linux #6 - 리눅스 압축 도구 (0) | 2021.06.25 |
Linux 이론#5 - Shell, 기타 명령어 (0) | 2021.06.23 |
Linux 이론#4 - Mount, Snapshot(복원지점), vi, cat (0) | 2021.06.22 |
Linux 이론#3 - 하드디스크 Mount (0) | 2021.06.21 |