linux set uid set gid stick bit   軟硬連接 stat find

  1. 首先來看一個,特殊的權限 set uid

root@nfyx:/home/nfyx/test/umask# which passwd
/usr/bin/passwd
root@nfyx:/home/nfyx/test/umask# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 5月  17 07:37 /usr/bin/passwd*
root@nfyx:/home/nfyx/test/umask#

這裏的s權限, 是什麼情況?

那麼,這裏要學習的就是set_uid

產生原因,普通用戶對一些特殊可執行文件的執行。

比如: 自己可以修改自己的密碼,而不能修改其它用戶的密碼,但root用戶又可以修改任何用戶的密碼。

這就可以理解爲權限的特殊性。

前提一般都是加在二進制文件上的(理解爲可執行文件),加在其它的文件或目錄,是沒什麼意義的!

案例:

平時ls命令,只能看自己所創的文件或目錄,而無法查看root目錄下的文件:

nfyx@nfyx:~/test/umask$ ls /root/
ls: 無法打開目錄'/root/': 權限不夠
nfyx@nfyx:~/test/umask$
 

明顯權限不夠:

nfyx@nfyx:~/test/umask$ su
密碼:
root@nfyx:/home/nfyx/test/umask# chmod u+s /bin/ls
root@nfyx:/home/nfyx/test/umask# ll /bin/ls
-rwsr-xr-x 1 root root 126584 3月   3  2017 /bin/ls*
root@nfyx:/home/nfyx/test/umask# su nfyx
nfyx@nfyx:~/test/umask$ ls /root/
Desktop
nfyx@nfyx:~/test/umask$
這裏很明顯可以,看到root 目錄下的文件了。

這裏的chmod u+s /bin/ls

是把/bin/lis 的user加一個supper 權限,即加一個超級用戶的權限。

要取消,就用

chmod u-s /bin/ls

root@nfyx:/home/nfyx/test/umask# chmod u-s /bin/ls
root@nfyx:/home/nfyx/test/umask# ll /bin/ls
-rwxr-xr-x 1 root root 126584 3月   3  2017 /bin/ls*
root@nfyx:/home/nfyx/test/umask#

這裏,就把 /bin/ls  裏面的s權限給取消了!

(還可以用  chmod  u=rws  /bin/ls 命令)

2 .  set gid 權限。

chmod g+s   /bin/ls

chmod g-s   /bin/ls

默認情況下,和set uid 所起的作用是一樣的。

特殊用法,就是在目錄改變用戶組之後,下面再新建的,文件或目錄都會和改變的用戶組一樣。

案例:

root@nfyx:/home/nfyx/test/setuid# chmod g+s setgid/
root@nfyx:/home/nfyx/test/setuid# ls -ld setgid/
drwxr-sr-x 2 root root 4096 10月 31 14:24 setgid/
root@nfyx:/home/nfyx/test/setuid# chown :nfyx setgid/
root@nfyx:/home/nfyx/test/setuid# ls -ld setgid/
drwxr-sr-x 2 root nfyx 4096 10月 31 14:24 setgid/
root@nfyx:/home/nfyx/test/setuid# mkdir setgid/aa
root@nfyx:/home/nfyx/test/setuid# ls -ld setgid/aa/
drwxr-sr-x 2 root nfyx 4096 10月 31 14:26 setgid/aa/
root@nfyx:/home/nfyx/test/setuid# touch setgid/aa.txt
root@nfyx:/home/nfyx/test/setuid# ls -l setgid/aa.txt
-rw-r--r-- 1 root nfyx    0 10月 31 14:26 aa.txt
root@nfyx:/home/nfyx/test/setuid#

也是就說,一旦group設置了gid  那麼,在改變目錄用戶組之後,在目錄下,所創建的所有新文件和目錄

都和已經改變的用戶組一樣!

若把gid  去掉,那麼,所建的目錄或文件,就屬於,創建者所在的組!

如:

root@nfyx:/home/nfyx/test/setuid# chmod g-s setgid/
root@nfyx:/home/nfyx/test/setuid# ll -d setgid/
drwxr-xr-x 3 root nfyx 4096 10月 31 14:26 setgid//
root@nfyx:/home/nfyx/test/setuid# mkdir setgid/bb
root@nfyx:/home/nfyx/test/setuid# touch setgid/bb.txt
root@nfyx:/home/nfyx/test/setuid# ll setgid/
總用量 16
drwxr-xr-x 4 root nfyx 4096 10月 31 14:36 ./
drwxr-xr-x 3 root root 4096 10月 31 14:24 ../
drwxr-sr-x 2 root nfyx 4096 10月 31 14:26 aa/
-rw-r--r-- 1 root nfyx    0 10月 31 14:26 aa.txt
drwxr-xr-x 2 root root 4096 10月 31 14:36 bb/
-rw-r--r-- 1 root root    0 10月 31 14:36 bb.txt
root@nfyx:/home/nfyx/test/setuid#


3.stick bit

 先看一個 文件權限,如:

root@nfyx:/home/nfyx/test/setuid# ll -d /tmp/
drwxrwxrwt 14 root root 16384 10月 31 14:17 /tmp//

這裏的權限有些不太一樣,

這裏的t 就是附加的防刪除權限

因爲,在/tmp目錄下,有很多臨時文件,大多權限都是777,爲了防止其它用戶,對其進行刪除,

就多了一個粘貼位,即防刪除權限,

一旦,文件或目錄的權限是rwxrwxrwt,那麼其它的用戶,可讀可寫修改,但是,就是不能將其進行刪除。

chmod +t  filename/dirname

chmod -t  filename/dirname

案例:

nfyx@nfyx:/$ ll -d /tmp/
drwxrwxrwt 14 root root 16384 10月 31 16:45 /tmp//
nfyx@nfyx:/$ rm -dR  /tmp/
rm: 無法刪除'/tmp/.Test-unix': 不允許的操作
rm: 無法刪除'/tmp/.ICE-unix': 不允許的操作
rm: 無法刪除'/tmp/.font-unix': 不允許的操作

按理說他有rwx權限,每一個用戶都要以刪的, 但是由於有一個粘貼位t,所以就無法刪除它裏面的文件.

3  軟連接 硬連接

a 軟連接

命令:ln  -s  souce  destians  (即 ln -s  源文件  目錄文件)

nfyx@nfyx:~/test/link$ ls
nfyx@nfyx:~/test/link$ mkdir link
nfyx@nfyx:~/test/link$ ls
link
nfyx@nfyx:~/test/link$ ln -s link/  softlink
nfyx@nfyx:~/test/link$ ll
drwxrwxr-x  2 nfyx nfyx 4096 10月 31 17:04 link/
lrwxrwxrwx  1 nfyx nfyx    5 10月 31 17:04 softlink -> link/
nfyx@nfyx:~/test/link$
這樣子,就做好了一個軟連接(這相當於windows 的快捷方式 )

提示:儘量使用絕對路徑做軟連接。

b 硬連接

   命令: ln soure destians (與軟連接不同的是,他們同用一個INODE號)

如:

nfyx@nfyx:~/test/link$ touch aa.txt
nfyx@nfyx:~/test/link$ ln aa.txt  bb.txt
nfyx@nfyx:~/test/link$ ll -i
總用量 12
1839330 drwxrwxr-x  3 nfyx nfyx 4096 10月 31 17:23 ./
1838567 drwxrwxr-x 11 nfyx nfyx 4096 10月 31 17:03 ../
1849098 -rw-rw-r--  2 nfyx nfyx    0 10月 31 17:22 aa.txt
1849098 -rw-rw-r--  2 nfyx nfyx    0 10月 31 17:22 bb.txt
1845100 drwxrwxr-x  2 nfyx nfyx 4096 10月 31 17:04 link/
1839835 lrwxrwxrwx  1 nfyx nfyx    5 10月 31 17:04 softlink -> link//
nfyx@nfyx:~/test/link$ ln -s aa.txt  cc.txt
nfyx@nfyx:~/test/link$ ll -i
總用量 12
1839330 drwxrwxr-x  3 nfyx nfyx 4096 10月 31 17:23 ./
1838567 drwxrwxr-x 11 nfyx nfyx 4096 10月 31 17:03 ../
1849098 -rw-rw-r--  2 nfyx nfyx    0 10月 31 17:22 aa.txt
1849098 -rw-rw-r--  2 nfyx nfyx    0 10月 31 17:22 bb.txt
1849788 lrwxrwxrwx  1 nfyx nfyx    6 10月 31 17:23 cc.txt -> aa.txt
1845100 drwxrwxr-x  2 nfyx nfyx 4096 10月 31 17:04 link/
1839835 lrwxrwxrwx  1 nfyx nfyx    5 10月 31 17:04 softlink -> link/

也就是這兩個文件用了同一個Inode號。

但是:(目錄不允許做硬連接)

nfyx@nfyx:~/test/link$ ln link/ linkdir
ln: link/: 不允許將硬鏈接指向目錄
nfyx@nfyx:~/test/link$

再次就是,硬連接,不能跨分區!因爲,每個分區都有自己獨立的Inode號(這樣子,就會衝突了)

硬連接裏面的,文件內容是相同的,

改一個文件的內容,其它硬連接文件的內容也會跟着改變。

硬連可以有很多個連接指向同一個文件,但是隻要,還有一個連接指向,那麼他的內容都仍然還在。

除非所有的文件都刪除,那麼,那個Inode號,纔會被刪除,這時,文件數據內容纔會被刪除。


stat  filename/ dirname

查看文件或目錄的,最完整的信息!


附加:(find 命令)

find  -name  、-type   、-ctime  、 -mtime.

 find  /etc/  -name "*.conf" (通過名字,模糊查找)

find -type d   "111"  (d找目錄)

find -type f   "cc.txt"  (f找文件)

find -type  f -mtime -1  -name "*.conf"  (小於1天的 +1 表示大於一天的)


find /etc/ -type f -mmin -60 -exec ls -lh {} \;  (找etc 下 的 文件 小於60分鐘的,並 挨個顯示出來)

find -inum  ###   (通過inode 號來查找相關的文件)

希望,大家能夠理解!

2017.10.31

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章