문제 설명-유저 설정


1
2
3
4
5
6
7
8
9
10
11
12
13
Create the following user, groups, and group memberships:
- a grouped named sysgrp with GID 1014
- a grouped named depri with GID 1015
- user natasha, sarah, harry with UID 1006, 1007, 1008
- natasha, sarah, harry's password should be set to redhat
- user natasha, harry belongs to sysgrp as a secondary group
- sarah doesn't belong to sysgrp, and doesn't have access to an interactive shell
 
(해석: 다음과 같은 유저, 그룹, 그룹 멤버십을 만들어라.
- sysgrp는 GID 1014를 가진다. depri는 GID 1015를 가진다.
- natasha, sarah, harry는 각각 UID 1006, 1007, 1008을 가지고, 비밀번호를 모두 redhat이다.
- natasha, harry는 sysgrp에 보조 그룹으로 속하고, sarah는 depri에 보조 그룹으로 속한다.
- sarah는 쉘 접근 권한이 없어야 한다.)
cs

출제율이 높은 문제입니다. 하지만 굉장히 단순한 문제입니다.

 

 

문제 풀이-유저 설정


일단 명령어만 쭉 적어보겠습니다.

1
2
3
4
5
[root@localhost ~]# groupadd sysgrp -g 1014
[root@localhost ~]# groupadd depri -g 1015
[root@localhost ~]# useradd natasha -G sysgrp -u 1006 -p redhat
[root@localhost ~]# useradd sarah -G depri -u 1007 -p redhat -s /sbin/nologin
[root@localhost ~]# useradd harry -G sysgrp -u 1008 -p redhat
cs

정말 짧죠? 저 문제를 압축하고 압축하면 5줄로 끝납니다. 뭐 저 정도야 문제랑 비교해보면 무슨 뜻인지 아시겠죠...

하지만 시험장에서는 항상 깜빡하고 저것 중 하나를 안 적는 경우가 생깁니다. 그래서 각각 어떻게 설정하는 지 알려드리겠습니다.

 

1
2
3
4
5
유저 그룹 설정: usermod -aG [그룹 이름]
유저 UID 설정: usermod -u [UID]
유저 쉘 설정: chsh -s [쉘 경로] [유저 이름]
그룹 GID 설정: groupmod -g [GID]
*쉘 경로에 /sbin/nologin을 입력하면 쉘 접근 권한을 막겠다는 뜻입니다*
cs

사실 usermod로 바뀐 거 외엔 다른 게 없습니다. 까먹어도 잘못된 명령을 치면 알아서 도움말을 띄워주니 보고 하시면 됩니다.

정말 쉬워요. 근데 다음에 할 ACL이 조금 어렵습니다.(물론 그것도 httpd에 비하면 쉬운 편입니다...)

 

 

문제 설명 - ACL


1
2
3
4
5
6
7
8
9
10
create a collaborative directory /redhat/sysgrp with the following characteristics;
- Group ownership of /redhat/sysgrp is sysgrp, and user ownership is natasha.
- The directory should be readable, writable and accessable to member of sysgrp
- The directory should be read only to a member of depri. 
- Any other users are not readable nor writable to the directory.
- Files created in /redhat/sysgrp automatically have group ownership set to the sysgrp
 
(해석: /redhat/sysgrp의 소유자는 natasha이고, 소유 그룹은 sysgrp이다.
sysgrp의 멤버는 읽기,쓰기가 가능해야 하고, depri의 멤버는 읽기만 가능해야 한다. 나머지는 권한이 없다.
이 디렉토리에서 생성되는 모든 파일의 소유 그룹은 sysgrp이 되도록 한다.)
cs

여러 명령어를 설명하려고 좀 문제를 꼬았습니다. 원래는 이거보다 단순하게 나온다고 하네요.

 

 

문제 풀이 - ACL


우선 chmod, chgrp, chown, setfacl 명령에 대해서 숙지가 필요합니다.

1
2
3
4
5
chown: 파일이나 디렉토리의 소유자를 변경합니다.
chgrp: 파일이나 디렉토리의 소유 그룹을 변경합니다.
chmod: 파일이나 디렉토리의 (소유 유저, 소유 그룹, 이외 유저) 소유권을 변경합니다.
setfacl: chmod와 비슷한 역할을 합니다.
getfacl: 파일이나 디렉토리의 소유 정보를 보여줍니다.
cs

 

여기서 왜 setfacl을 쓰냐고 물어보신다면, setfacl은 소유권을 가지고 있는 유저나 그룹이 아닌 이외의 유저나 그룹에 대해 권한을 지정할 수 있습니다.

이제부터 간단하게 ugo/rwx(User,Group,Others/Read,Write,eXcute) 라고 하겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@localhost ~]# mkdir -p /redhat/sysgrp
[root@localhost ~]# chown -R natasha /redhat/sysgrp
[root@localhost ~]# chgrp -R sysgrp /redhat/sysgrp
[root@localhost ~]# chmod -R 2660 /redhat/sysgrp
[root@localhost ~]# setfacl -Rm g:depri:r-- /redhat/sysgrp
[root@localhost ~]# getfacl /redhat/sysgrp
getfacl: Removing leading '/' from absolute path names
# file: redhat/sysgrp
# owner: natasha
# group: sysgrp
user::rw-
group::rw-
group:depri:r--
mask::rw-
other::---
[root@localhost ~]# touch /redhat/sysgrp/b
[root@localhost ~]# getfacl /redhat/sysgrp/b
getfacl: Removing leading '/' from absolute path names
# file: redhat/sysgrp/b
# owner: root
# group: sysgrp
user::rw-
group::r--
other::r--
cs

mkdir로 디렉토리를 생성하고, chown과 chgrp으로 소유권을 지정한 뒤, chmod와 setfacl로 권한을 지정했습니다.

mkdir의 -p는 상위 디렉토리가 없으면 알아서 생성하라는 뜻이고(여기서는 /redhat 폴더가 없으니 -p 옵션이 필요합니다.),

여기서 붙은 -R은 반복 시행하라는 건데, 디렉토리의 하위 파일까지 전체 적용하라는 뜻입니다. 하위 파일이 없지만 그래도 항상 붙이세요.

 

문제는 chmod인데, 2660의 의미가 무엇인지 모르시는 분들이 계실 겁니다.

한마디로 설명하자면 [ugo 각각의 rwx를 8 이하의 수로] 나타낸 겁니다.

r은 4, w는 2, o는 1로, 원하는 권한의 숫자를 다 더하면 원하는 수가 나옵니다. 여기서는 rw니 4+2=6이 되겠네요.

앞에 붙은 2는 setgid라는 건데, 그 디렉토리에서 생성되는 모든 파일의 소유 그룹을 이 디렉토리의 소유 그룹으로 자동 지정합니다.

참고로 setuid(생성되는 모든 파일 소유권을 소유자에게)는 4, setgid는 2입니다.

설명이 좀 어렵네요... 혹시 이해가 안 가시면 댓글 달아주세요.

 

setfacl은 -m [권한] [디렉토리 or 파일] 식으로 사용합니다.

여기서 권한의 표시는 [u/g/o]:[사용자 or 그룹]:[rwx]로 표시합니다.

예시를 들자면, u:natasha:rw-, g:wheel:rwx, o:--- 같은 식입니다.

 

설명하는 것도 힘드네요... 다음은 쉬운 걸로 하겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기