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