[TOC]
218 特殊權(quán)限set_uid
[root@mylinux ~]# ls -l /usr/bin/passwd (查看更改密碼的命令)
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd (這里的-rwsr-xr-x權(quán)限里面有s權(quán)限)
[root@mylinux ~]# ls -l /etc/shadow (存放root密碼的位置)
----------. 1 root root 608 12月 15 11:20 /etc/shadow (存放root密碼的權(quán)限為---------豪筝,只有root自己是至高無上的權(quán)限痰滋,這里想讓普通用戶改密碼,但是又不想讓用戶寫)
特殊權(quán)限s讓普通用戶擁有該命令擁有者的暫時(shí)權(quán)限
passwd能讓普通用戶暫時(shí)擁有root的權(quán)限续崖,即s權(quán)限敲街。
set_uid可以讓普通用戶擁有該命令擁有者的暫時(shí)權(quán)限,例如:paswd就讓普通用戶擁有root的權(quán)限严望。
但是必須要文件是一個(gè)二進(jìn)制文件多艇,下面做一個(gè)演示
[root@mylinux ~]# su - wsl (切換到一個(gè)普通用戶)
[wsl@mylinux ~]$ whoami
wsl (已經(jīng)是普通用戶)
[wsl@mylinux ~]$ ls /root/ (我們發(fā)現(xiàn)查看root下面的文件已經(jīng)權(quán)限不夠)
ls: 無法打開目錄/root/: 權(quán)限不夠
用chmod u+s增加chmod u-s減少特殊權(quán)限
重現(xiàn)開啟一個(gè)窗口切換到root用戶下
[root@mylinux ~]# chmod u+s /usr/bin/ls (已經(jīng)切換到root用戶下,我們更改ls的權(quán)限像吻,u+s表示文件所有者加上s權(quán)限)
[root@mylinux ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls (這里我們看到已經(jīng)加上了s權(quán)限)
切換到wsl普通用戶下
[wsl@mylinux ~]$ ls /root/ (我們發(fā)現(xiàn)已經(jīng)可以查看了)
1 2.txt 2.txt~ 3 4.txt anaconda-ks.cfg frp_0.11.0_linux_amd64
[wsl@mylinux ~]$ ls -ld /root/
dr-xr-x---. 7 root root 275 12月 21 17:32 /root/ (我們發(fā)現(xiàn)other用戶的權(quán)限沒有變化)
這里我們加上了s權(quán)限峻黍,因?yàn)閘s所有者為root,我們相當(dāng)于對所有用戶對這個(gè)ls命令增加了其所有者root的暫時(shí)權(quán)限拨匆,這就是set_uid的權(quán)限
去掉權(quán)限就chmod u-s就可以了
[root@mylinux ~]# chmod u-s /usr/bin/ls (去掉s權(quán)限)
[root@mylinux ~]# chmod u=rws /usr/bin/ls (我們通過u=的模式來增加s權(quán)限)
[root@mylinux ~]# ls -l /usr/bin/ls (我們發(fā)現(xiàn)S權(quán)限為大寫姆涩,這里是因?yàn)樯倭藊權(quán)限)
-rwSr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
[root@mylinux ~]# chmod u+x /usr/bin/ls (這里我們加上x)
[root@mylinux ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls (s權(quán)限就變成了小寫)
目錄可以加上s權(quán)限,但是沒什么意義
219 特殊權(quán)限set_gid
chmod g+s賦予普通用戶該命令所屬組的暫時(shí)權(quán)限
賦予普通用戶該命令所屬組的暫時(shí)權(quán)限惭每,跟set_uid挺相像
[root@mylinux ~]# chmod g+s /usr/bin/ls
[root@mylinux ~]# !ls
ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls (我們發(fā)現(xiàn)所屬組權(quán)限里面有s權(quán)限骨饿,其余的痛set-uid一樣)
對目錄的更改,如果我們對目錄的group權(quán)限增加s權(quán)限台腥,再在其下面創(chuàng)建新的目錄將會(huì)保持其目錄所屬組宏赘,不管在什么用戶或者所屬組下去更改
我們發(fā)現(xiàn)在更改1所屬組并且對group權(quán)限添加s后,后面所創(chuàng)建的子目錄也變成了wsl的所屬組
[root@mylinux ~]# mkdir 1/
[root@mylinux ~]# chown :wsl 1/ (更改1目錄所屬組)
[root@mylinux ~]# chmod g+s 1/ (對1目錄group組增加s權(quán)限)
[root@mylinux ~]# mkdir ./1/2
[root@mylinux ~]# ls -ld 1/ 1/2/
drwxr-sr-x. 3 root wsl 15 12月 22 00:21 1/
drwxr-sr-x. 2 root wsl 6 12月 22 00:21 1/2/ (我們發(fā)現(xiàn)在更改1所屬組并且對group權(quán)限添加s后黎侈,后面所創(chuàng)建的子目錄也變成了wsl的所屬組)
[root@mylinux ~]# mkdir 2
[root@mylinux ~]# chown :wsl 2/
[root@mylinux ~]# mkdir 2/3/
[root@mylinux ~]# ls -ld 2/ 2/3/
drwxr-xr-x. 3 root wsl 15 12月 22 00:26 2/
drwxr-xr-x. 2 root root 6 12月 22 00:26 2/3/ (同樣的我們只更改目錄2的所屬組察署,再在其下面創(chuàng)建子目錄,卻子目錄卻沒有更改為wsl所屬組)
220 特殊權(quán)限stick_bit
防刪除位t權(quán)限
[root@mylinux ~]# ls -ld /tmp/
drwxrwxrwt. 11 root root 4096 12月 22 23:57 /tmp/ (我們發(fā)現(xiàn)有一個(gè)t權(quán)限峻汉,稱之為防刪除位)
子目錄下的文件和目錄所有用戶都可以創(chuàng)建和使用箕母,但是刪除權(quán)限只有文件或目錄所有者才具備。(root超級管理員除外)
所以稱之為防刪除位俱济。
221 軟鏈接文件
我們通過實(shí)例查看ls的路徑發(fā)現(xiàn)嘶是,在/tmp/目錄下的/bin/ls指向的是/usr/bin/ls,所以這里/tmp/bin/ls所存儲(chǔ)的就是一個(gè)絕對路徑蛛碌,我們可以看做是一個(gè)軟鏈接文件聂喇,其大小根據(jù)絕對路徑的長度來決定。類似快捷方式。
[root@mylinux tmp]# ls -l /bin
lrwxrwxrwx. 1 root root 7 12月 12 23:38 /bin -> usr/bin
[root@mylinux tmp]# ls -ld /usr/bin
dr-xr-xr-x. 2 root root 20480 12月 17 20:53 /usr/bin
[root@mylinux tmp]# /bin/ls
go-build209782900
systemd-private-73338a0c2b8f4ff2b37d3eb5f2d14506-chronyd.service-btN6NT
systemd-private-73338a0c2b8f4ff2b37d3eb5f2d14506-vgauthd.service-Cyqi28
systemd-private-73338a0c2b8f4ff2b37d3eb5f2d14506-vmtoolsd.service-nf6op1
[root@mylinux tmp]# /usr/bin/ls
go-build209782900
systemd-private-73338a0c2b8f4ff2b37d3eb5f2d14506-chronyd.service-btN6NT
systemd-private-73338a0c2b8f4ff2b37d3eb5f2d14506-vgauthd.service-Cyqi28
systemd-private-73338a0c2b8f4ff2b37d3eb5f2d14506-vmtoolsd.service-nf6op1
創(chuàng)建軟連接 ln -s
軟鏈接實(shí)例希太,需求想在某個(gè)地方找到另外一個(gè)地方的某個(gè)文件
[root@mylinux ~]# ls
1 1.txt 2 anaconda-ks.cfg frp_0.11.0_linux_amd64
[root@mylinux ~]# ln -s /root/1.txt /root/2/3/1.txt(創(chuàng)建軟連接)
[root@mylinux ~]# cat /root/1.txt /root/2/3/1.txt
q w e r t
q w e r t
[root@mylinux ~]# ls -ld /root/1.txt /root/2/3/1.txt
-rw-r--r--. 1 root root 10 12月 23 10:35 /root/1.txt
lrwxrwxrwx. 1 root root 11 12月 23 10:36 /root/2/3/1.txt -> /root/1.txt (這里我們看到/root/2/3/1.txt是/root/1.txt的軟鏈接文件克饶,且內(nèi)容相同,相當(dāng)于一個(gè)快捷鍵)
[root@mylinux ~]# ln -s 1.txt ./2.txt
[root@mylinux ~]# ls -l 1.txt 2.txt
-rw-r--r--. 1 root root 10 12月 23 10:35 1.txt
lrwxrwxrwx. 1 root root 5 12月 23 10:41 2.txt -> 1.txt (也可以用相對路徑做軟鏈接誊辉,但是盡量使用絕對路徑)
場景矾湃,將日志拷貝到另外的地方,在原位置留下軟鏈接堕澄,可以更改文件的存放位置邀跃。
222 硬鏈接文件
創(chuàng)建硬連接 ln
目錄不支持硬鏈接,只有文件才支持
[root@mylinux ~]# ls
1 1.txt 2 anaconda-ks.cfg frp_0.11.0_linux_amd64
[root@mylinux ~]# ln /root/1.txt /root/1/1.txt (創(chuàng)建贏鏈接)
[root@mylinux ~]# ls -l /root/1.txt /root/1/1.txt
-rw-r--r--. 2 root root 10 12月 23 10:35 /root/1/1.txt
-rw-r--r--. 2 root root 10 12月 23 10:35 /root/1.txt
[root@mylinux ~]# cat /root/1.txt /root/1/1.txt
q w e r t
q w e r t
[root@mylinux ~]# ls -i /root/1.txt /root/1/1.txt
33626909 /root/1/1.txt 33626909 /root/1.txt
(我們發(fā)現(xiàn)文件內(nèi)容相同蛙紫,連iknowd號都相同拍屑,但是不好找硬鏈接文件位置,兩個(gè)文件互為硬鏈接文件坑傅,都一樣)
硬鏈接的好處在于可以刪除任意一個(gè)僵驰,對另外一個(gè)不影響。
硬鏈接不能跨分區(qū)唁毒。