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

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

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#

windows

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

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

產生緣由,普通用戶對一些特殊可執行文件的執行。ui

好比: 本身能夠修改本身的密碼,而不能修改其它用戶的密碼,但root用戶又能夠修改任何用戶的密碼。spa

這就能夠理解爲權限的特殊性。unix

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

案例:class

平時ls命令,只能看本身所創的文件或目錄,而沒法查看root目錄下的文件:test

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

相關文章
相關標籤/搜索