setuid, setgid, sticky bit 권한

Slides:



Advertisements
Similar presentations
Apr. 25, 2013 Laboratory of Systems Medicine BASIC LINUX COMMANDS.
Advertisements

SPARCS 10 이 가 영 기본 UNIX 명령어. 일단 로그인 ! Linux login 시 계정을 입력하거나 root 를 입력 Root -> # 일반 사용자 -> $ 패스워드 : echo 기능을 꺼서 볼 수 없다. 대소문자 구분 패스워드 처음 설정 시 : ~$ passwd.
2. 파일 시스템 파일 디렉터리와 경로명 파일 시스템의 구조 새로운 파일 생성 소유권과 허가 파일 유형과 일반화.
Consumer PC & AIO PC DMI Refresh 방법 설명 (UEFI DMI Ver)
Chapter 6. 리눅스 백도어 황 선 환.
시스템 보안 SetUID 구창민 조기웅.
컴퓨터 네트워크 실습.
윈도우7 체크 설치 매뉴얼
디렉토리 다루기 ㅎㅎ 유닉스 파일 시스템 현재 디렉토리 확인 : pwd 디렉토리 이동 : cd
리눅스 기본 명령어 및 Vi 명령어 정리 2015/1, 컴퓨터의 개념 및 실습.
Hostname 변경 및 Service open
[beginning] Linux & vi editor
레이스 컨디션.
컴퓨터 네트워크 실습.
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
Samba와 보안 PLUS 오태호.
리눅스 기본 명령어 기본 명령어 명령어 기능 사 용 예 date 날짜 및 시간을 확인하고 생성.
Root Filesystem Porting
Root Filesystem Porting
Linux Master 김희승 임승한 OneScore 임승한.
HW #4 파일과 디렉토리 1. 자신의 HOME 디렉토리 아래에 다음과 같은 구조의 디렉토리 및 파일을 생성하고, 이 구조를 다음 명령을 사용하여 파일로 저장한 후, 이를 프린트하여 제출한다. $ ls –lR linux_unix > hw4-1 $HOME linux_unix.
소프트웨어 분석과 설계 Struts2 & JBOSS 설치하기
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
Cross Compiler 설치.
사용자계정관리.
Cross Compiler를이용한 커널 컴파일 및 포팅
IPAD2(ios 5.0.1) 사용자 메뉴얼 Mobile Service Team.
Linux/UNIX Programming
㈜시스원이 제공하는 시스템 관리 통합 솔루션 SysmanagerOne Agent설치 안내서
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
HW #4 UNIX 파일과 디렉토리 1. 자신의 HOME 디렉토리 아래에 다음과 같은 구조의 디렉토리 및 파일을 생성하고, 이 구조를 다음 명령을 사용하여 파일로 저장한 후, 이를 프린트하여 제출한다. $ ls –lR linux_unix > hw4-1 $HOME linux_unix.
Linux/UNIX Programming
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
툴 설치 가이드 Formality SynopsysMentor.
Adobe 제품 다운로드 및 설치 방법 안내 Adobe Creative Cloud Adobe License 권한을 받으신 분
Linux/UNIX Programming
Nessus 4 설치 정보보호응용 조용준.
학기 C/C++ 프로그래밍 실습 1주차.
화면 갈무리 및 파일 권한 설정.
Root passwd 분실, bootblk 복구
운영체제 RaspberryPi Sejin Oh.
Itbank solaris Pm 4:00 class 김 정 훈
RHEL3 + oracle8i + DB생성.
PL/SQL 코드 생성 및 수행 1 여러가지 환경 DOS에서 sqlplus Windows에서의 sqlplusw
PMIS 서버 설정 환경설정 작성자 : 배경환.
Unix 방문(접속하여 로그인) 하기 수퍼 유저 되어 사용자 계정 만들기 Unix의 아파치 웹 서버에 홈페이지 등록하기
Linux/UNIX Programming
Linux/UNIX Programming
Kernel, Ramdisk, JFFS2 Porting
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
시스템 인터페이스 Lab#5 쉡 실습.
2장. 솔라리스10 설치. 2장. 솔라리스10 설치 Solaris 3. 솔라리스10 설치 후 설정하기 1. 텔넷 ( telnet ) 서비스 사용 SSH ( Secure Shell ) 서비스 사용 FTP ( File Transfer Protocol )서비스 사용 시스템.
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
Execution with Unnecessary Privileges
 파일 아카이브와 압축 명령 익히기.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
Linux 기본 사용법.
HW #2 (1/2) UNIX 파일과 디렉토리 1. 자신의 HOME 디렉토리 아래에 다음과 같은 구조의 디렉토리 및 파일을 생성하고, 이 구조를 다음과 같은 명령을 사용하여 파일로 저장한 후 메일로 제출할 것 $ ls –lR unix > hw2-1 $HOME unix.
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
Homework #3 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
4. 셸을 이용한 명령어 입력. Unix 시스템 쉘 간단한 셸 명령 명령 매개변수(Command arguments)
Git을 이용한 버전 관리 - Branch 실습
Homework #7 (1/3) 1. 다음 순서에 따라 수행하고, 그 과정의 화면을 캡쳐한다.
Docker Study 6~7.
Chapter 07. 사용자 관리 Solaris3. 사용자 암호 관리 및 소유권 관리
Linux/UNIX Programming
한국 휴렛팩커드/고객지원사업본부/IT 기술사업부 박기영
시스템 해킹과 보안 permission과 SetUID.
1. 실습 시간에 수행한 avd 생성 및 실행, adb shell 접속 및 명령어 수행 결과를 제출한다.
Presentation transcript:

setuid, setgid, sticky bit 권한

권한은 program을 실행한 사용자의 권한이 아닌 program 소유자의 권한을 그 외의 권한들 1. setuid 1). Setuid 권한 Setuid란? setuid 권한을 가진 file을 일반 user가 실행하게 되면 그 순간 잠시 root 권한을 빌려 오는 것이라 생각하면 편리하다. Program 실행 시 process가 가지는 권한은 program을 실행한 사용자의 권한이 아닌 program 소유자의 권한을 가지는 것을 setuid의 개념이라고 생각하면 된다. $ ls -l /bin/passwd -r-sr-sr-x   3 root     sys       101744 Jan  6  2000 /bin/passwd (passwd 명령어는 setuid와 setgid가 설정되어 있으므로 일반유저에서 파일소유자의 권한으로 실행이 가능하다.)

$ cat /etc/shadow (cat의 실행자는 일반유저이므로 파일을 읽을 수 없다.) 그 외의 권한들 1. setuid 2). Setuid 실행 예제 Setuid 예제 $ cat /etc/shadow  (cat의 실행자는 일반유저이므로 파일을 읽을 수 없다.) cat: cannot open /etc/shadow $ su - ; root로 사용자 이동 # ls -l /etc/shadow  (root 권한으로만 읽기가 가능하다.) -r--------   1 root     sys          339 Feb 18 18:41 /etc/shadow # ls -l /bin/cat  (파일소유자는 root이다.) -r-xr-xr-x   1 root     bin        10092 Jul 10  2000 /bin/cat # chmod 4455 /bin/cat # ls -l /bin/cat -r-Sr-xr-x   1 root     bin        10092 Jul 10  2000 /bin/cat (파일에 setuid권한이 있으나 실행 권한이 없을 경우는 소문자 s가 아니라 대문자 S 기호가 나타난다.)

# chmod 4555 /bin/cat (실행자의 권한이 아닌 파일소유자의 권한을 부여한다.) # ls -l /bin/cat 그 외의 권한들 1. setuid 2). Setuid 실행 예제 Setuid란? # chmod 4555 /bin/cat  (실행자의 권한이 아닌 파일소유자의 권한을 부여한다.) # ls -l /bin/cat -r-sr-xr-x   1 root     bin        10092 Jul 10  2000 /bin/cat # su ysw100 $ cat /etc/shadow (cat의 실행자가 아닌 파일소유자의 권한으로 읽는다.) root:L89niy4Uo6HtM:6445::::::

setuid는 실행 파일을 소유한 사용자의 권한을 가지지만, setgid는 실행 파일을 그 외의 권한들 2. setgid 1). Setgid 권한 Setgid란? setuid와 유사하다. setuid는 실행 파일을 소유한 사용자의 권한을 가지지만, setgid는 실행 파일을 소유한 그룹 소유주의 권한을 가진다. 즉 process가 명령어를 실행한 소유자가 속한 기본 그룹의 권한을 가지지 않고 명령어의 그룹 소유주 권한을 가지게 된다. setgid 권한을 명시할 때는 기호 방법만을 사용한다. setgid 권한이 명시된 directory 밑에 새로 생성되는 모든 하위 directory나 file도 setgid 권한을 가진다.

uid=107(blackbat) gid=2002(users) groups=2002(users) $ mkdir sgid 그 외의 권한들 2. setgid 2). Setgid 실행 예제 Setgid 예제 $ id -a uid=107(blackbat) gid=2002(users) groups=2002(users) $ mkdir sgid $ ls -ld sgid drwxr-xr-x   2 blackbat users        512 Feb 20 17:18 sgid $ cd sgid $ mkdir dir1 $ touch file1 $ su # id -a uid=0(root)gid=1(other)groups=1(other),0(root),2(bin),3(sys),4(adm),5(uucp),6(mail),7(tty),8(lp),9(nuucp),12(daemon) # chmod g+s sgid

drwxr-sr-x 3 blackbat users 512 Feb 20 17:20 sgid # mkdir dir2 그 외의 권한들 2. setgid 2). Setgid 실행 예제 Setgid 예제 # ls -ld sgid drwxr-sr-x   3 blackbat users        512 Feb 20 17:20 sgid # mkdir dir2 # touch file2 # ls -l total 4 drwxr-xr-x   2 blackbat users        512 Feb 20 17:20 dir1 drwxr-sr-x   2 root      users        512 Feb 20 17:21 dir2 -rw-r--r--   1 blackbat users          0 Feb 20 17:20 file1 -rw-r--r--   1 root     users          0 Feb 20 17:21 file2 (어떤 사용자든지 새로 파일이나 디렉토리를 만들어도 setgid 권한이 명시된 상위그룹과 동일한 그룹 소유자를 가진다.)

일반적으로 모든 사용자에게 변경 권한이 부여된 directory 이다. 그 외의 권한들 3. Sticky bit 1). Sticky bit란? Sticky bit 란? 일반적으로 모든 사용자에게 변경 권한이 부여된 directory 이다. system에 존재하는 어떠한 사용자라도 해당 directory 밑에 file이나 하위 directory 를 생성할 수 있고, 삭제가 가능하다. 하지만 삭제는 file이나 directory의 소유자나 root 사용자 또는 변경권한이 허락하는 경우에만 가능하다.) Sticky bit의 사용 목적의 대부분은 공용 directory로 사용하기 위한 것이다.  즉, sticky-bit로 설정된 directory는 모든 사용자가 write가능하며 write된 파일은 그 사용자의 소유가 된다. 물론 삭제할 수 있는 권한 또한 root와 해당 사용자만이 가능하다. # mkdir sticky # chmod 1777 sticky drwxrwxrwt   2 root     other        512 Feb 20 17:33 sticky

setuid, setgid, skicky bit로 권한을 변경할 때는 다음과 같이 변환한다. 그 외의 권한들 4. 권한변경 1). 권한 변경 방법 각각의 권한 변경 방법 setuid, setgid, skicky bit로 권한을 변경할 때는 다음과 같이 변환한다. sun02[/aaa]#touch test1 test2 test3 sun02[/aaa]#ls -l 총 0 -rw-r--r-- 1 root other 0 3월 19일 02:45 test1 -rw-r--r-- 1 root other 0 3월 19일 02:45 test2 -rw-r--r-- 1 root other 0 3월 19일 02:45 test3 sun02[/aaa]#chmod 4644 test1 ;test1 file에 setuid 권한 부여 sun02[/aaa]#chmod 2644 test2 ;test2 file에 setgid 권한 부여 sun02[/aaa]#chmod 1644 test3 ;test3 file에 sticky bit 권한 부여 -rwSr--r-- 1 root other 0 3월 19일 02:45 test1 -rw-r-lr-- 1 root other 0 3월 19일 02:45 test2 -rw-r--r-T 1 root other 0 3월 19일 02:45 test3

sun02[/]# find / -name host* -print ; / directory를 시작점으로 host로 시작하는 모든 file을 찾아서 화면에 출력해라. sun02[/]# find /var –size +1024k –print (리눅스 형식) ; /var directory를 시작점으로 1MB 이상 되는 file을 찾아서 화면에 출력해라. sun02[/]# find / -perm -4000 –print > sample1 ; / directory를 시작점으로 setuid가 걸린 file을 찾아서 sample1이라는 file에 저장해라. sun02[/] # find / -perm -2000 –print > sample2 ; / directory를 시작점으로 setgid가 걸린 file을 찾아서 sample2라는 file에 sun02[/] # find / -perm -1000 –print > sample3 ; / directory를 시작점으로 sticky bit가 걸린 file을 찾아서 sample3이라는 file에

sun02[/]# find / -name core –exec rm {} \; ; / directory를 시작점으로 core file을 찾아내어 모두 삭제한다. (core file을 삭제하는 전형적인 예문이므로 꼭 외워두도록 한다.) sun02[/]# find /etc –mtime -7 –print > modi1 ; /etc directory를 시작점으로 7일 동안 수정된 file을 찾아서 modi1 file에 저장. sun02[/]# find /etc –atime -3 –print > modi2 ; /etc directory를 시작점으로 3일 동안 access된 file을 찾아서 modi2 file에 저장. sun02[/]# find / –inum 6574 –print ; / directory를 시작점으로 inode number가 6574인 file을 찾아서 화면에 출력.

3. 권한이 있다면 실행시킨 사용자의 UID로 실행 4. setuid bit가 있는가를 확인 File 실행 순서 1. File이 실행되는 순서에 대해 1). File 실행 순서 File이 실행되는 우선순위와 절차 1. $PATH에서 찾음 2. 찾은 후에 실행 권한 check 3. 권한이 있다면 실행시킨 사용자의 UID로 실행 4. setuid bit가 있는가를 확인 5. setuid bit가 있다면 명령어 소유주의 UID로 실행