# touch a.txt

# ls -l a.txt 

-rw-r--r-- 1 root root 0 Sep  5 11:06 a.txt


# chmod --help

chmod [OPTION]... MODE[,MODE]... FILE...

  :

-rw-r--r--  -> -rwxrw-r-x 

# chmod u+x,g+w,o+x  a.txt


-rwxrw-r-x  -> ---x-----x  

# chmod u-rw,g-rw,o-r a.txt


---x-----x  -> -r-xr-x-wx 

# chmod u+r,g+rx,o+w a.txt


-r-xr-x-wx  -> --w--w-r--

# chmod u=w,g=w,o=r a.txt

      or

# chmod ug=w,o=r a.txt


--w--w-r--  -> -r-xr-x--x

# chmod ug=rx,o=x a.txt

        or

# chmod ugo=rx,o-r a.txt

        or

# chmod a=rx,o-r a.txt

        or

# chmod a=x,ug+r a.txt


ugoa+-=rwx,


----------

# chmod a= a.txt


아래 권한들을 맞추기

# ls -l /etc/shadow (400)

-r-------- 1 root abc 1284 Sep  5 09:28 /etc/shadow


# ls -l /bin/bash (755)

-rwxr-xr-x 1 root root 735804 Jul 22  2011 /bin/bash


# ls -l /dev/sda1 (640)

brw-r----- 1 root disk 8, 1 Sep  4 09:44 /dev/sda1


# ls -ld /etc (755)

drwxr-xr-x 81 root root 4096 Sep  5 09:28 /etc



- 특수 권한

[root@localhost ~]# ls -l a.txt 

---------- 1 root root 0 Sep  5 11:06 a.txt

[root@localhost ~]# chmod ug+s,o+t a.txt 

[root@localhost ~]# ls -l a.txt 

---S--S--T 1 root root 0 Sep  5 11:06 a.txt

[root@localhost ~]# chmod u+x a.txt 

[root@localhost ~]# ls -l a.txt 

---s--S--T 1 root root 0 Sep  5 11:06 a.txt

[root@localhost ~]# chmod g+x a.txt 

[root@localhost ~]# ls -l a.txt 

---s--s--T 1 root root 0 Sep  5 11:06 a.txt

[root@localhost ~]# chmod o+x a.txt -v

mode of `a.txt' changed to 7111 (--s--s--t)



    rwsr-xr-x


권한을 변경할 수 있는가 ?

권한에 대한 의미를 파악할 수 있는가 ?

Set-uid, Set-gid, sticky bit 의 의미를 파악할 수 있는가 ?

r(읽기) 권한의 의미를 파악할 수 있는가 ?

w(쓰기) 권한의 의미를 파악할 수 있는가 ?

x(실행) 권한의 의미를 파악할 수 있는가 ?


find [디렉토리]... -옵션 값 ...


# find /bin -name bash

# find /bin -perm 755 

# find /bin -perm 4755 

# find /bin /usr/bin /usr/sbin -perm -4000 -ls



- set-uid 의 비밀

# grep ^user1 /etc/shadow

user1:$6$/8mkpuL.$x7FMVTxlCoSCx6.ktqDFEY1k ...

# su - user1

$ passwd

Changing password for user user1.

Changing password for user1

(current) UNIX password: 

New UNIX password: 

Retype new UNIX password: 

passwd: all authentication tokens updated successfully.

$ exit

# grep ^user1 /etc/shadow

user1:$6$DIE6HW8T$tkyiS7a0qm3TJ.4l41G28oL ...


# ls -l /etc/shadow

-r-------- 1 root root 1348 Sep  5 13:00 /etc/shadow


# ls -l /usr/bin/passwd 

-rwsr-xr-x 1 root root 23420 Aug 11  2010 /usr/bin/passwd



- sticky bit 디렉토리 연습

- sticky bit가 걸려있는 디렉토리는 자신이 만든 파일은 자신만이 지울 수 있다.

[root@localhost ~]# chmod o-t /tmp

[root@localhost ~]# ls -ld /tmp

drwxrwxrwx 5 root root 4096 Sep  5 11:26 /tmp

[root@localhost ~]# touch /tmp/root.txt

[root@localhost ~]# ls -l /tmp/root.txt 

-rw-r--r-- 1 root root 0 Sep  5 13:10 /tmp/root.txt


- 일반 유저 user1이 root 가 생성한 파일을 삭제할 수 있다.

[root@localhost ~]# su - user1

[user1@localhost ~]$ rm -fv /tmp/root.txt 

removed `/tmp/root.txt'

[user1@localhost ~]$ ls -l /tmp/root.txt

ls: /tmp/root.txt: No such file or directory

[user1@localhost ~]$ exit

logout


- 다시 원래의 권한으로 변경하고 파일을 다시 생성한다.

[root@localhost ~]# chmod o+t /tmp/

[root@localhost ~]# touch /tmp/root2.txt

[root@localhost ~]# ls -ld /tmp/ 

drwxrwxrwt 5 root root 4096 Sep  5 13:12 /tmp/

[root@localhost ~]# su - user1

[user1@localhost ~]$ ls -l /tmp/root2.txt

-rw-r--r-- 1 root root 0 Sep  5 13:12 /tmp/root2.txt


- sticky bit가 디렉토리에 걸려있음로 삭제가 안된다.

[user1@localhost ~]$ rm -fv /tmp/root2.txt 

rm: cannot remove `/tmp/root2.txt': Operation not permitted

[user1@localhost ~]$ exit



- 잘못된 디렉토리 때문에 파일을 일반유저가 수정할 수 있는 경우

[root@localhost ~]# touch /tmp/root2.txt

[root@localhost ~]# chmod 777 /tmp/

[root@localhost ~]# ls -ld /tmp/

drwxrwxrwx 5 root root 4096 Sep  5 13:31 /tmp/

[root@localhost ~]# ls -ld /tmp/root2.txt 

-rw-r--r-- 1 root root 3 Sep  5 13:31 /tmp/root2.txt

                      ~~~

[root@localhost ~]# su - user1

[user1@localhost ~]$ vi /tmp/root2.txt 

 ....


:w!


[user1@localhost ~]$ ll /tmp/root2.txt 

-rw-r--r-- 1 user1 user1 20 Sep  5 13:34 /tmp/root2.txt

                         ~~~


vi 에서 저장시 강제로 저장한다.   



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

[CentOS] 10-1. suidtest  (0) 2016.07.10
[CentOS] 9. 환경변수 테스트  (0) 2016.07.10
[CentOS] 7-2. 리눅스 퍼미션  (0) 2016.07.10
[CentOS] 중간 정리  (0) 2016.07.06
[CentOS] 7-1. 리눅스퍼미션  (0) 2016.07.02

+ Recent posts