linux 學習--特殊權限,文本編輯
SUID:當對一個可執行的二進制文件作用了suid權限之後,任何人在執行該文件時臨時擁有其所屬人的權限。
SGID:當對一個可執行的二進制文件作用了sgid權限之後,任何人在執行該文件時臨時擁有其所屬組的權限。
當對於一個目錄作用了sgid權限之後,任何人在該目錄下創建的文件的所屬組與該目錄的所屬組相同。
(需要註意的是文件必須是可執行的二進制文件,而非shell等解釋型語言文件)
Sticky:當對於一個目錄作用了sticky權限之後,該目錄下的文件僅其文件的所屬人,或目錄的所屬人及root才能刪除。
chmod u+s 4xxx
chmod g+s 2xxx
chmod o+t 1xxx
即有suid又有sgid 6xxx
即有suid又有sticky 5xxx
即有sgid又有Sticky 3xxx
全有7xxx
權限位原本有x的,加上特殊權限後,顯示為小寫,原本無x,顯示為大寫。
實驗一:(1)在/app下創建wuguo文件,將權限改為400,所屬人,所屬組改為leibei。將/bin/cat拷貝到/app下並將所屬人所屬組改為劉備,設置權限SUID。
(2)用echo命令將hello輸入到wuguo中。
(3)運行/bin/cat wuguo 發現不成功,運行/app/lbcat /app/wuguo 成功
原因:運行/bin/cat wuguo時,受到wuguo文件權限的限制,執行不成功,當運行/app/lbcat /app/wuguo時執行這個文件後,臨時擁有了它的所屬人權限,執行成功。
實驗二:劉備關羽張飛三個用戶有一個共享目錄叫shuguo,要求三人的主組不一樣的情況下,三人在Shuguo目錄下所創建的文件,彼此之間可以讀取及修改。但不能刪除其他人創建的文件。
文件特定權限
chattr +a 不能刪除,不能改名,不能修改,可以追加
chattr +i 不能刪除,不能改名,不能修改,不能追加
lsattr 查看權限
二:ACL
1.傳統的Linux文件系統的權限控制是通過user、group、other與r(讀)、w(寫)、x(執行)的不同組合來實現的。隨著應用的發展,這些權限組合已不能適應現時復雜的文件系統權限控制要求。例如,我們可能需把一個文件的讀權限和寫權限分別賦予兩個不同的用戶或一個用戶和一個組這樣的組合。傳統的權限管理設置起來就力不從心了,為了解決這些問題,Linux開發出了一套新的文件系統權限管理方法,叫文件訪問控制列表(Access Control Lists,ACL)。
2.ACL的作用:實現權限的靈活管理,除了文件的所有者,所屬組還可以對更多的用戶進行權限設置。
3.centos6當中對新建分區開啟acl的過程
(1)創建分區
fdisk /dev/sda
n回車
回車
+2G回車
w回車
(2)同步分區表
partx -a /dev/sda
(3)創建文件系統
mkfs.ext4 /dev/sda6
(4)開啟acl支持
tune2fs -o acl /dev/sda6
(5)查看acl
tune2fs -l /dev/sda6 |grep option
註:centos7中的所有文件系統以及Centos6隨著操作系統安裝是劃分的文件系統均已默認開啟acl。
ACL生效順序:owner > acl user > group 與 acl group 誰的權限多,誰優先 > other
4.ACL的查看及設置
getfacl file |directory
setfacl -m u:wang:rwx file|directory
setfacl -Rm g:sales:rwX directory
setfacl -M file.acl file|directory
setfacl -m g:salesgroup:rw file| directory
setfacl -m d:u:wang:rx directory
setfacl -x u:wang file |directory
setfacl -X file.acl directory
setfacl -m m:r-x file |directory 設置上限閥值 或chmod g=r-x
setfacl -d -m u/g:username/groupname file |directory 設置默認權限
setfacl -k file |directory 清除默認權限
setfacl -b file |directory 清除acl屬性
註意: 一旦設置mask,原本的組權限便不能更改,而且原先顯示組權限的地方顯示mask,不在顯示組權限。
5.acl權限的備份及還原
getfacl file |directory > acl.txt
setfacl --restore acl.txt
練習:
1、在/testdir/dir裏創建的新文件自動屬於g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬於g1,g2,g3)不能訪問這個文件夾。
思路:在該目錄的組上設置特殊權限g+s,然後在該目錄上設置默認ACL,設置g2:rwx;g3:r-x。
2、備份/testdir/dir裏所有文件的ACL權限到/root/acl.txt中,清除/testdir/dir中所有ACL權限,最後還原ACL權限
getfacl /testdir/dir > /root/acl.txt
setfacl --restore /root/acl.txt
三:文本處理
1.cat
-E 顯示換行符$
-v 顯示^M
-T 顯示^I即tab
-A = -EvT
-n 輸出的結果前顯示行號
-b 輸出的結果前顯示行號,非空行不參與排列
-s 將連續的空行壓縮為一行
2.sort
-n 按數字排列
-r 倒序排列,默認升序
-t 指定分隔符
-k 指定哪一列
-f 忽略大小寫
-u 刪除重復行
3.head -n 10 /ect/fstab:輸出文件前10行
-c 10 文件名 按字節查看前10個字節
tail -n 10 /ect/fstab:輸出文件後10行
-c 10 文件名 :按字節查看後10個字節。
-f 文件名:動態顯示,可用來查看日誌。
cut
-d 指定分隔符(默認為tab)
-f 取第幾列
-c 安字符切割
--output-delimiter=STRING 指定輸出的分隔符
paste:合並兩個文件同一行號到一行。
-d 指定分隔符
-s 變成一行輸出
例: paste file1 file2 -d:
練習:(1)利用df,取出分區利用率的最大值,只要數字。
df |tr -s " " : |cut -d: -f5 |sort -n |tail -n 1 |cut -d% -f1
(2)列出當前系統中的所有用戶的uid
cat /etc/passwd|cut -d: -f1,3 --output-delimiter=的UID是
4.wc:統計工具
-l 只計數行數
-w 只計數單詞數
-c 字節
-m 字符
5.uniq
去除連續重復行,往往和sort配合使用,先排序,再去重
-c 顯示重復的次數
-d 僅顯示重復行
-u 僅顯示非重復行
實驗:通過查看httpd的訪問日誌/var/log/httpd/access_log來顯示出訪問網站最多的來源ip列表,顯示結果時顯示出訪問次數。
答案:cut -d" " -f1 access_log |sort |uniq -c |sort -nr
網站部署過程
[root@centos6 ~]# service httpd restart
[root@centos6 ~]# iptables -F
[root@centos6 ~]# cd /var/www/html/
[root@centos6 html]# vim index.html
6. diff
diff f1 f2 比較兩個文件的不同之處
diff -u f1 f2 > diff.log
rm -f f2
patch -b f1 diff.log
mv f1 f2
mv f1.orig f1
練習:
以數字方式顯示/etc/passwd文件的權限
stat -c %a /etc/passwd
stat /etc/passwd |head -4 |tail -1 |tr [:punct:] - |cut -d- -f3 |cut -c 2-4
linux 學習--特殊權限,文本編輯