成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文搞懂Linux權限體系

系統 Linux
隨著年齡的增加,我的經驗越來越豐富,而記憶力卻越來越差。為了應付繁重的日常事務,我不得不準備了長長的任務清單。

[[340471]]

本文轉載自微信公眾號「小姐姐味道」,作者小姐姐養的狗。轉載本文請聯系小姐姐味道公眾號。

隨著年齡的增加,我的經驗越來越豐富,而記憶力卻越來越差。為了應付繁重的日常事務,我不得不準備了長長的任務清單。每一條事項的背后,都在不斷的提醒我:無論生活中充滿什么驚喜,還是逃離不了它平庸的本質。

而我對時間,會更加的敏感。每次一次敲擊鍵盤,都會調動骨關節的扭動,留下一洗不可撤回的痕跡:windows的超級用戶,名字叫做Administrator。這個單詞太長了,我總也記不住。相對來說,linux的超級用戶叫做root,只有四個字母。它的耗能值,比前者要低的多。

 

我們在第三小節,剛接觸命令行的時候,就使用chmod命令,給普通文本文件,賦予了執行權限。本小節將看一下用戶權限和文件權限這兩個息息相關的概念,

1、添加用戶

到現在為止,我們的系統中,還孤零零的只有這一個用戶,是時候學學女媧,捏幾個小泥人了。

首先創建兩個用戶:張三(zhang3)、李四(li4)。

  1. [root@localhost ~]# useradd zhang3 

查看下面命令的三個輸出結果。

  1. # 系統中多了一個叫做zhang3的組,group文件保存了系統的組信息 
  2. [root@localhost ~]# tail -n1 /etc/group 
  3. zhang3:x:1000: 
  4.  
  5. # 系統中多了一個叫做zhang3的用戶,shadow文件保存了它們的密碼。很多安全滲透就是為了拿到它進行暴力破解 
  6. [root@localhost ~]# tail -n1 /etc/shadow 
  7. zhang3:!!:18207:0:99999:7::: 
  8.  
  9. # home目錄中,多了一個叫做zhang3的目錄 
  10. [root@localhost ~]# ll /home --full-time 
  11. total 0 
  12. drwx------. 2 zhang3 zhang3 83 2019-11-06 22:09:33.357165082 -0500 zhang3 

接下來,給我們剛剛建立的用戶,使用passwd設置一個密碼。密碼需要輸入兩次進行確認。如果想要更改密碼,可以使用chpasswd命令。

  1. [root@localhost ~]# passwd zhang3 
  2. Changing password for user zhang3. 
  3. New password
  4. BAD PASSWORD: The password is shorter than 8 characters 
  5. Retype new password
  6. passwd: all authentication tokens updated successfully. 

那么如何刪除一個現有的用戶呢?這是通過userdel命令實現的。加上參數f,會在其他用戶使用系統的時候,強制退出。

  1. userdel -f zhang3 

2、文件權限說明

從上面的命令執行結果中,我們發現了有兩件非常有意思的東西。添加用戶后,除了在密碼文件shadow中增加了一些內容,同時還在group文件中添加了信息。這涉及到用戶的兩個屬性:用戶名,組名。

一個用戶只有一個名稱代號,但是可以有多個組。下面命令創建一個密碼為123的用戶li4,并給它追加一個叫做zhang3的組。可以看到/etc/group文件中的信息變更。

  1. [root@localhost ~]# useradd  -G zhang3 -p 123 li4 
  2. [root@localhost ~]# tail -n 2 /etc/group 
  3. zhang3:x:1000:li4 
  4. li4:x:1001: 

好啦,接下來切換到我們的文件權限上面。為了進行下面命令的驗證,我們首先創建一個名字叫confirm777.sh的腳本文件。為了讓腳本對所有用戶可見,我們把它創建在/tmp目錄下。

  1. cat > /tmp/confirm777.sh <<EOF 
  2. echo $USER 
  3. id 
  4. EOF 

使用ll命令查看文件信息。

  1. [root@localhost ~]# ll /tmp/confirm777.sh --full-time 
  2. -rw-r--r--. 1 root root 13 2019-11-07 04:25:55.418254935 -0500 confirm777.sh 

 

從ll的命令可以看出,文件的所有者是root用戶,文件所屬的組,也是root組,它的權限是rw-r--r--。文件權限分為三部分。

  • 所有者權限,縮寫為u。文件的所有者所擁有的權限。也就是root用戶的權限,是rw-
  • 組用戶權限,縮寫為g。文件所屬組內所有用戶的權限。因為root組內只有root一個用戶,所以組用戶權限是r--。
  • 其他用戶權限,縮寫為o。其他不相關用戶的權限,比如我們剛創建的zhang3、li4用戶,對文件的權限就是r--。
  • 全部,縮寫為a,表示對上面三類用戶集體操作。

那rw-這些東西是什么意思呢?

  • r 表示可讀權限。read。
  • w 表示可寫權限。write。
  • x 表示可執行權限。execute。
  • - 權限占位符,表示沒有當前權限。

注意:一個用戶擁有文件的w權限,并不代表就可以刪除文件。w僅僅針對于文件內容來說的。

一個文件,有3類用戶,每類用戶,有3種權限。使用最簡單的小學乘法,我們能夠得出,一個文件的權限位,需要3x3=9個標志位表示。

我們的文件名稱,叫做confirm777.sh,這個名字是隨便起的么?當然不是,777在linux代表特殊的含義,它代表文件對所有用戶具有可讀、可寫、可執行的權限。可以想象,如果每個文件都有這樣的權限,系統將無安全可言。那這一串數字是怎么來的呢?可以看下面的對照表。

  • r 4 讀
  • w 2 寫
  • x 1 執行

對以上三個屬性進行任意組合,可以得到:

  • 4 r-- 4+0+0
  • 6 rw- 4+2+0
  • 5 r-x 4+0+1
  • 2 -w- 0+2+0
  • 3 -wx 0+2+1
  • 1 --x 0+0+1
  • 7 rwx 4+2+1

3、文件權限更改

下面介紹三個文件權限相關的命令。一般常用的,就是chown和chmod。

chown 更改文件的所有者。chgrp 更改文件的組。chmod 更改文件權限。

接下來,我們把confirm777.sh的所有者和組,修改成剛剛創建的用戶zhang3。

  1. cd /tmp 
  2. [root@localhost tmp]# chown zhang3:zhang3 confirm777.sh 
  3. [root@localhost tmp]# ll confirm777.sh 
  4. -rw-r--r--. 1 zhang3 zhang3 13 Nov  7 04:25 confirm777.sh 

給文件所有者增加執行權限。然后分別切換到zhang3,li4用戶執行一下。

通過su 命令,可以切換到其他用戶,一般使用su -進行環境變量的清理;而命令id,能夠看到當前正在執行的用戶信息。

  1. [root@localhost tmp]# chmod u+x confirm777.sh 
  2. [root@localhost tmp]# su li4 
  3. [li4@localhost tmp]$ ./confirm777.sh 
  4. bash: ./confirm777.sh: Permission denied 
  5. [li4@localhost tmp]$ exit 
  6. exit 
  7.  
  8. [root@localhost tmp]# su zhang3 
  9. [zhang3@localhost tmp]$ ./confirm777.sh 
  10. root 
  11. uid=1000(zhang3) gid=1000(zhang3) groups=1000(zhang3) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 

可以看到,文件所有者zhang3可以執行文件,但不相關的li4,提示沒有權限。接下來,我們驗證用戶組相關的權限位。

  1. # 去掉zhang3的執行權限 
  2. root@localhost tmp]# chmod u-x confirm777.sh 
  3. [root@localhost tmp]# ll confirm777.sh 
  4. -rw-r--r--. 1 zhang3 zhang3 13 Nov  7 04:25 confirm777.sh 
  5.  
  6. # 增加zhang3組的執行權限,由于li4在zhang3組里,它擁有權限 
  7. [root@localhost tmp]# chmod g+x confirm777.sh 
  8. [root@localhost tmp]# ll confirm777.sh 
  9. -rw-r-xr--. 1 zhang3 zhang3 13 Nov  7 04:25 confirm777.sh 
  10.  
  11. # 切換到zhang3進行執行 
  12. [root@localhost tmp]# su - zhang3 
  13. [zhang3@localhost tmp]$ ./confirm777.sh 
  14. bash: ./confirm777.sh: Permission denied 
  15. [zhang3@localhost tmp]$ exit 
  16. exit 
  17.  
  18. # 切換到li4進行執行 
  19. [root@localhost tmp]# su - li4 
  20. [li4@localhost tmp]$ ./confirm777.sh 
  21. root 
  22. uid=1001(li4) gid=1001(li4) groups=1001(li4),1000(zhang3) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 

從命令的執行結果可以看出。這次,li4能夠執行文件,相反的,zhang3卻不能。

我們使用chmod命令來修改文件權限,使用的是類似于a+x這樣的英文字母。拿第一個腳本來說,初始的權限是rw-r--r--,也就是644,在這種情況下,下面的兩個腳本等效。

  1. chmod u+x confirm777.sh 
  2. chmod 744 confirm777.sh 

可以看到,第二個命令,使用的是數字樣式的權限位,多了一步人腦轉換過程。這在日常的使用中,是非常不方便的。所以,使用符號法的表示方式,能夠更加直觀,非常推薦。

 

為了更直觀的表現這個過程,我專門制作了一張圖。

4、目錄權限

這里有一個非常有意思的地方。把文件設置成可執行,可以把普通文件變成腳本,目錄文件的可執行權限是什么鬼?有什么意義?對文件夾來說:

  • r 表示允許讀取目錄中的文件名,但不能進入該目錄
  • w 表示允許用戶修改目錄,可以創建、遷移、刪除、更名目錄下的文件
  • x 可以獲得目錄下文件的列表,以及進入目錄,執行cd命令

關于r和x的區別,可以看下面的命令結果,仔細感受一下它們的區別。一般的,幾乎所有的目錄,都擁有執行權限,不要隨意對其進行設置。

  1. [root@localhost tmp]# su - li4 
  2. [li4@localhost ~]$ cd /tmp 
  3.  
  4. [li4@localhost tmp]$ mkdir nox 
  5. [li4@localhost tmp]$ touch nox/{a,b,c,d} 
  6. [li4@localhost tmp]$ chmod a-x nox 
  7. [li4@localhost tmp]$ ls nox 
  8. ls: cannot access nox/a: Permission denied 
  9. ls: cannot access nox/b: Permission denied 
  10. ls: cannot access nox/c: Permission denied 
  11. ls: cannot access nox/d: Permission denied 
  12. a  b  c  d 
  13. [li4@localhost tmp]$ cat nox/a 
  14. cat: nox/a: Permission denied 
  15.  
  16. [li4@localhost tmp]$ chmod a+x nox 
  17. [li4@localhost tmp]$ chmod a-r nox 
  18. [li4@localhost tmp]$ ls nox 
  19. ls: cannot open directory nox: Permission denied 

5、sticky bit

接下來,我們介紹一個比較燒腦的粘貼位。

假如你要刪除一個文件,你可以沒有這個文件的寫權限,但是你必須要擁有這個文件上級目錄的寫權限。如何創建一個目錄,可以讓任何人些人文件,但是又不能刪除其他用戶的文件?這就是stick bit的作用。粘貼位一般只用于目錄上,對文件來說并沒有什么用處。粘貼位一般使用t表示。

我們可以看一個典型的目錄/tmp

  1. [root@localhost tmp]#  ls -dl /tmp 
  2. drwxrwxrwt. 9 root root 4096 Nov  7 06:27 /tmp 

 

可以看到,最后一位,顯示的是t,而不是x,意思是普通用戶不能刪除其他用戶的文件。所有用戶在/tmp目錄中,都可以隨意創建文件,但是卻刪除不了其他人的文件,即使文件的權限是777。

  1. [root@localhost tmp]# touch /tmp/stick 
  2. [root@localhost tmp]# chown li4:li4 /tmp/stick 
  3. [root@localhost tmp]# chmod 777 /tmp/stick 
  4. [root@localhost tmp]# su - zhang3 
  5. [zhang3@localhost ~]$ rm /tmp/stick 
  6. rm: cannot remove ‘/tmp/stick’: Operation not permitted 

6、小結

本小節創建了兩個用戶zhang3和li4,并拿它們測試了chown和chmod命令,最后介紹了粘貼位。linux比較安全的原因,就是因為有比較詳盡的權限劃分。但權限是枚雙刃劍,超權用戶一個命令就可以搞垮系統,許多隱藏的木馬,通過提權運行在不為人知的地方。

權限相關的幾個命令會經常被使用,下面舉幾個例子。

  1. # 設置/var/lib/mysql的用戶和組為mysql 
  2. chown -R mysql:mysql /var/lib/mysql 
  3.  
  4. # 設置目錄可讀可寫,能夠上傳文件 
  5. chmod  777 /var/www/uploads 
  6.  
  7. # 增加本目錄下所有sh的執行權限 
  8. chomd a+x *.sh 
  9.  
  10. # 變更file為可讀可寫可執行 
  11. chmod u=rwx,g=rwx,o=rwx file 

7、思考&擴展

1、下面這個命令,執行以后,會發生什么情況?警告:不要執行,哪怕把000改成其他數字。

  1. # R遍歷子目錄的意思 
  2. chmod -R 000 / 

2、有一天,我看到一個命令chmod u+s file,文中并沒有介紹s是什么意思,這是什么意思?

3、如何刪除一個用戶的組?

EndLinux系統的命令是十分枯燥的。本系列不知不覺已經持續了8個周。和預想的一樣,它并未取得廣泛的歡迎,從它和其他文章迥然的閱讀量就可以看出--標題就讓人失去了點擊的欲望。

技術類文章完全不同于扯淡型的天馬行空,耗費的精力也是巨大的,尤其對我一個對正確性有強迫癥的人來說。有時候,我會產生迷茫。不知道這依靠興趣支撐的輸出,能夠持續多久。

能夠翻到結尾,翻到這里的朋友,xjjdog非常感謝。還有幾篇就要結束了,加上以前關于Linux的一些文章,已經可以成為一個體系了。如果你跟蹤至此,至少已經可以在平常的工作中游刃有余了。

xjjdog接下來會找一些讓人歡迎的主題,而不是這么枯燥的知識點。畢竟,有的時候,人家畢竟還是個可愛的女孩紙嘛。

 

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高并發世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進一步交流。

 

責任編輯:武曉燕 來源: 小姐姐味道
相關推薦

2021-03-04 00:09:31

MySQL體系架構

2025-01-08 10:30:24

2024-04-12 12:19:08

語言模型AI

2022-03-24 08:51:48

Redis互聯網NoSQL

2022-04-12 09:05:30

Linux時鐘

2022-03-28 19:19:45

Linux時間子系統

2023-12-15 15:55:24

Linux線程同步

2024-11-05 14:00:56

2023-09-15 12:00:01

API應用程序接口

2023-09-08 08:20:46

ThreadLoca多線程工具

2021-03-22 10:05:59

netstat命令Linux

2022-08-15 15:39:23

JavaScript面向對象數據

2021-01-13 05:21:59

參數

2023-08-24 16:50:45

2021-06-30 08:45:02

內存管理面試

2019-11-19 08:00:00

神經網絡AI人工智能

2020-03-18 14:00:47

MySQL分區數據庫

2023-04-03 15:04:00

RPCPHP語言

2023-10-16 08:16:31

Bean接口類型

2022-06-07 10:13:22

前端沙箱對象
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品无码久久久久 | 99在线免费视频 | 国产99久久久国产精品 | 亚洲精品久久久一区二区三区 | 不用播放器看的av | 欧美精品久久久久久久久久 | 久久精品一区二区 | 国内久久精品 | 亚洲视频在线看 | 午夜精品久久久 | 影音先锋中文在线 | 色噜噜狠狠色综合中国 | 99久久精品免费看国产免费软件 | 日日天天| 久久99视频| 久久久久久久久91 | 成人免费在线视频 | 日韩精品在线观看网站 | 青草青草久热精品视频在线观看 | 精品视频成人 | 91天堂网| 国产日韩一区二区三免费高清 | 久久久久久久综合 | 91精品国产91久久久久久最新 | 伊人青青久久 | 一区二区三区精品在线视频 | 中文字幕亚洲一区二区三区 | www国产成人免费观看视频 | 久久久久国产一区二区三区四区 | 草草视频在线播放 | 亚洲精品国产电影 | 青草青草久热精品视频在线观看 | 国产97在线视频 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 浮生影院免费观看中文版 | 青青久久 | 亚洲国产欧美在线 | av激情影院| 欧美大片一区 | 国产精品激情在线 | 高清视频一区二区三区 |