티스토리 뷰

반응형


이번은 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를 사용하도록 합시다.

반응형
댓글
공지사항
최근에 올라온 글