<setuid>

setuid 권한을 가진 file을 일반 사용자가 실행하게 되면 그 순간 잠시 root권한을 빌려오는 것이다. 프로그램 실행 시 process가 가지는 권한은 program을 실행한 사용자의 권한이 아닌 program 소유주의 권한을 가지는 것을 setuid이다.

 

권한이 없는 파일을 실행하거나 열었을때 나타나는 에러이다.



 

다음과 같이 setuid를 설정해준 후에 실행해보자.



파일에 setuid권한이 있으나 실행 권한이 없을 경우는 소문자 s가 아니라 대문자 S이다.

 

잘 나오고 있다.



 

<setgid>

process가 명령어를 실행한 소유자가 속한 기본 그룹의 권한을 가지지 않고 명령어의 그룹 소유주 권한을 가지게 된다. 이것은 setuid개념이 그룹으로 된 것이기 때문에 개념자체는 똑같아서 설명을 안하겠다.

 

<sticky bit>

공용 디렉토리를 사용할 때 sticky bit를 설정하여 사용한다. sticky bit가 설정되어 있는 directory 안의 내용은 해당 file의 소유주나 root만이 변경이 가능하여 공용 디렉토리라도 권한에 제약을 두어 다른 사용자들의 파일을 보호하기 위한 목적으로 만든것이다.

window에서 공유폴더를 생각하면된다. 공유폴더 안에 있는 파일들의 변경을 제한을 두기 위해 사용하는 것이다.

 

setuid동작 권한 과정



LIST

<Setuid?>

파일 실행 시 파일 소유자의 권한을 잠시 바꿔준다.뭐로? 루트의 권한으로한마디로 소유자의 권한 루트권한으로 잠시 빌려 실행하는 것이다.

4000 -> 소유자 권한 x(실행)자리에 s를 사용

2000 -> 그룹의 x(실행)자리에 s를 사용

1000 -> 그외의 그룹에 x자리에 t를 사용

 

-rwx------ 이 파일은 700의 권한을 가진 파일이다. 만약 나는 일반사용자인데, 잠시동안 이파일을 root권한으로 사용하고 싶다. 그럴땐 root가 잠깐 사용할 수 있도록 파일권한을 주는것인데 그것을 setuid라고 한다.

여기에 사용자에게 권한을 주면 rws------가 되어 4700의 권한을 가진다.

 

<실습>

useraddroot사용자만 사용할 수 있도록 설정되어 있다.

이것을 setuid를 사용해 잠시 일반사용자가 사용할 수 있게 변경하고, 일반사용자로 로그인해서 usradd명령어를 실행해보자.

 



 

fedorauseradd를 사용해 계정 생성을 하려고했지만 거부됨.

root로 로그인하여 setuid를 변경해보자.



 

변경 후, 다시 fedora로 로그인해서 test1를 생성하였더니 아무이상없이 잘 만들어졌다.

마지막으로 cat /etc/passwd를 사용해서 잘 만들어졌는데 확인 할 수있도록 한다.

원리는 fedora라는 사용자가 useradd를 사용했을 당시 권한이 root로 옮겨지는 것이다. 마치 자기 자신이 root로 둔갑되는 것과 같은것이다. root권한을 얻어 useradd를 사용하고, 명령어 사용이 끝났으면 root권한을 되돌려줘서 다시 자기자신은

fedora라는 유저로 생활하게 되는것이다.

 


<Setgid?>

따로 설명안하겠다. Setuid랑 똑같은 성질인데, 단지 그룹의 권한을 바꿔주는 것이라고 생각하면 된다.

LIST

'OS > Linux' 카테고리의 다른 글

리눅스 - FTP서버  (0) 2016.02.18
리눅스 - 환경변수  (0) 2016.02.17
리눅스 - /etc/fstab  (0) 2016.02.16
리눅스 - Quota(쿼터) (사용자별로 공간 할당하기)  (0) 2016.02.15
리눅스 - RAID (Redundant Array of Inexpensive Disks)  (0) 2016.02.15

+ Recent posts