티스토리 뷰
이번은 su 명령어에 대한 설명을 하겠습니다.
su 명령어는 기본적으로 사용자 전환에 사용됩니다.
su 명령어와 su - 명령어가 있는데 이 두개의 명령에 대한 차이점부터 말씀드리겠습니다.
su 계정명 : 해당 계정명만 사용하는 것입니다.
현재 root 계정에서 su seob 이라는 명령어를 내렸다면
권한은 root 권한을 가지며 seob 계정명만 사용됩니다.
su - 계정명 : 이 명령어는 해당 계정의 권한을 사용합니다.
root 계정에서 su - seob을 하면 seob 홈 폴더에 있는 .bash_profile 이나 .cshrc을 읽어옵니다.
기본적으로 su가 아닌 su-을 사용하시길 바랍니다.
또한 su - 라는 명령어에 설명을 덧붙이자면
이 명령어는 일반 사용자에서 root 로 넘어가는 것입니다.
굳이 su - root 를 사용하지 않아도 됩니다.
즉, su - 와 su - root는 동일합니다.
■ 일반 사용자 su 명령어 막기
which su 라는 명령어를 내리면 su 라는 명령어가 어느 폴더에 있는지 확인하실 수 있습니다.
기본적으로 /bin/su에 있습니다.
이 명령어를 상세히 보시면
[root@seob0 ~]# ls -l /bin/su
-rwsr-xr-x. 1 root root 34904 Dec 8 2011 /bin/su
-rwsr-xr-x라고 되어있습니다.
이것을 chmod 4750 /bin/su 명령어를 내리게 되면 일반 계정은 이 명령어를 사용할 수 없습니다.
또한 현재 /bin/su 그룹 권한이 root로 되어있는데 root 그룹에는 root만 포함되어있습니다.
즉, root 제외하고 아무도 사용할 수 없게 됩니다.
[seob@seob0 ~]$ su - root
-bash: /bin/su: Permission denied
이런식으로 권한이 없다고 나옵니다.
■ 특정 사용자만 su 명령어 사용하기
위에서는 모든 일반 사용자가 su 명령어를 사용하지 못하게 했습니다.
반면, 특정 사용자만 명령어를 사용하고 싶다면..? 어떻게 해야되는지 의문을 갖는 분들도 계십니다.
이 문제는 pam 보안에 관련이 되어있습니다.
먼저 pam.d 폴더에 su를 확인하겠습니다.
[root@seob0 ~]# cat /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session optional pam_xauth.so
현재 /etc/pam.d/su를 보시게 되면
#auth required pam_wheel.so use_uid
이라는 항목이 있습니다.
이것을 주석해제를 해주시길 바랍니다.
그리고 난뒤 다음 파일을 확인해주시길 바랍니다.
[root@seob0 ~]# head -11 /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp
mem:x:8:
kmem:x:9:
wheel:x:10:root
맨 아래 하단에
wheel:x:10:root 라고 존재합니다.
root 뒤에 원하시는 계정을 집어넣으시면 됩니다.
저 같은 경우는 seob 이라는 사용자 계정을 넣도록 하겠습니다.
[root@seob0 ~]# head -11 /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp
mem:x:8:
kmem:x:9:
wheel:x:10:root,seob
root 계정뒤에 바로 ,를 넣고 사용자명을 집어넣으면 됩니다.
그리고 /bin/su 사용자 권한을 확인해봅니다.
[root@seob0 ~]# ls -l /bin/su
-rwsr-x---. 1 root root 34904 Dec 8 2011 /bin/su
위에서 저희가 적용한 chmod 4750이 그대로 적용이 되어있네요.
현재 일반 사용자 계정은 사용할 수 없는 상태입니다.
이렇게 되면 wheel에 일반 사용자가 포함되더라도 일반 사용자가 아예 /bin/su 을 이용할 수 없기 때문에
chmod 4755 /bin/su으로 변경해줍니다.
그리고 /bin/su에 대한 그룹을 wheel로 변경해줍니다.
[root@seob0 ~]# chgrp wheel /bin/su
[root@seob0 ~]# ls -l /bin/su
-rwxr-x---. 1 root wheel 34904 Dec 8 2011 /bin/su
현재 /bin/su에 대한 그룹이 wheel로 변경되어있습니다.
이 말은 즉, 사용자인 root와 wheel에 속한 사용자만 읽기/실행 권한이 있는 것입니다.
곧바로 테스트를 해보도록 하겠습니다.
[root@seob0 ~]# su - seob
[seob@seob0 ~]$ su -
Password:
[root@seob0 ~]#
wheel 그룹에 속한 seob 계정으로 접속 한 뒤 su - 명령어로 root 계정에 접근하려니 접근이 되었습니다.
반면 wheel 그룹에 속하지 않는 계정으로 테스트 해보겠습니다.
[root@seob0 ~]# su - seob89
[seob89@seob0 ~]$ su -
Password:
su: incorrect password
wheel 그룹에 속하지 않는 seob89 계정으로 접속하여 su - 명령어를 사용하면 root의 맞는 패스워드를 입력해도
su: incorrect password 라는 에러가 발생하고 접속이 되지 않습니다.
이것으로 특정 사용자만 접속이 가능합니다.
■ 의문점. chmod 755가 아닌 왜 4755 인가?
기본적으로 우리가 사용하는 chmod 명령어는 글자 혹은 3개 숫자로 사용합니다.
이게 바로 아주 일반적이죠.
먼저 755와 4755 차이를 보여드리겠습니다.
[root@seob0 ~]# ls -l /bin/su
-rwxr-xr-x. 1 root wheel 34904 Dec 8 2011 /bin/su
chmod 755 /bin/su
[root@seob0 ~]# ls -l /bin/su
-rwsr-xr-x. 1 root wheel 34904 Dec 8 2011 /bin/su
chmod 4755 /bin/su
두개의 차이를 찾으셨나요 ?
1초안에 찾으시면 눈썰미가 좋으신것입니다.
현재 755 는 -rwxr-xr-x이고 4755는 -rwsr-xr-x 입니다.
x와 s의 차이죠.
이것을 설명하기전 먼저 다른 파일을 보여드리도록 하겠습니다.
[root@seob0 ~]# ls -l /etc/shadow
---------- 1 root root 1222 Apr 16 21:19 /etc/shadow
/etc/shadow의 권한은 아무것도 없습니다.
이말은 즉,
4755를 할 경우
일반 사용자가 su 명령어를 사용하고 패스워드를 입력할 때
일반 사용자는 아주 잠깐동안 root 권한을 얻고 shadow 파일의 내용을 확인하게 됩니다.
이때 shadow 파일은 암호화된 패스워드를 저장하는데 현재 입력한 암호와 shadow에 저장된 패스워드를 맞춰보는거죠.
만약, 755로 할 경우
root 권한을 얻지못하고 shadow 파일을 읽지 못합니다.
shadow 파일과 패스워드를 맞출 수 없기 때문에 Error가 발생하게 됩니다.
굳이 /bin/su 권한을 755를 해야한다면
/etc/shadow에 대한 권한도 755로 줘야합니다.
즉, 일반 사용자도 암호화된 파일을 읽을 수 있도록 말이죠.
하지만 그렇게 되면 보안상에 문제가 발생하기 때문에 꼭 ! 4755를 사용하도록 합시다.
'리눅스 > 기본' 카테고리의 다른 글
if: Expression Syntax. (0) | 2014.04.23 |
---|---|
Linux 설치 후 Ethernet이 설정 안되어있을 때 (0) | 2014.04.21 |
Centos6.2 커널 업데이트하기 (1) | 2014.04.15 |
Vmware에서 랜카드 추가 장착하기 (2) | 2014.04.14 |
리눅스 데몬의 종류 (0) | 2014.04.04 |