1-9:学习shell之权限
文章目錄
- 前言:
- 一:所有者,組成員和其他人
- 二:讀取,寫入和執行
- (1)chmod-更改文件權限
- A:八進制數字表示法
- B:符號表示法
- (2)umask-設置默認權限
- 三:更改身份
- (1)su-以其他用戶和組ID的身份運行shell
- (2)sudo-提升權限執行命令
- (3)chown-更改文件所有者和所屬群組
前言:
Linux不止是多任務操作系統,更關鍵的他還是多用戶操作系統,這意味著同一時間內可以有多個用戶使用同一臺計算機
如果計算機連接到一個網絡或者互聯網中,遠程用戶可以通過ssh(云服務器就是這樣)登錄并操作這臺計算機。
用戶一多,就有很多出現一些錯亂,比如說一個用戶訪問到了另一個用戶的文件,所以用戶管理就顯得格外重要
本章設計命令如下
- id:顯示用戶身份標識
- chmod:修改權限
- umask:設置默認權限(粘滯位)
- su:以另一個身份運行shell
- sudo:以另一個用戶的身份運行命令
- chown:更改文件所有者
- chgrp:更改文件所屬組
- passwd:更改用戶密碼
一:所有者,組成員和其他人
Linux把用戶分為了如下三類,假如針對一個文件
- user:文件的創建者
- group:文件所在組的其他成員
- other:外人
如果使用cat命令查看/etc/shadow,會發現出現訪問拒絕的提示
這是因為該文件里保存了所有用戶密碼等相關信息,作為普通用戶是無法訪問這個文件的。
在UNIX安全模型中,一個用戶可以擁有自己創建的文件的控制權,同時這個用戶又屬于某一個群組(當然也可以屬于更多的群組),該群組有一個或者多個用戶組成,組中用戶對文件的權限是由文件的創建者授予的
使用id命令可以獲得用戶身份標識信息,輸出結果如下
在創建用戶賬戶時,用戶將分配一個稱為user ID或uid的號碼,同時會分配一個有效組ID或gid
用戶賬戶定義在/etc/passwd中,用戶組定義在文件/etc/group中,在創建用戶賬戶和群組時,這些文件隨著文件/etc/shadow的變動而修改,/etc/shadow中保存了用戶的密碼信息
二:讀取,寫入和執行
前面我們使用cat命令查看/etc/shadow時,我們的角色就是一個外人,所以沒有讀取權限。而且之前的ls -l命令列出的長列表中,有關信息也揭示了這一點
- 第二個矩形方框框住的區域“什么都沒有”,解釋了對于外人來說沒有讀取,寫入和執行操作
而/etc/passwd文件普通用戶是可以查看的,它又是另外一種情形
- 可以發現針對外人具有讀權限
上圖中前10個字符表示的意思如下
r,w,x三個的意思分別如下
所以對于/etc/passwd文件的權限可以解釋為:對于文件的創建者root來說沒有讀權限,但是可以寫入和執行,而組成員和其他人則相反只能讀取
(1)chmod-更改文件權限
chmod可以更改文件或目錄的權限,但是需要注意的是只有文件創建者和超級用戶才有權利更改權限
更改文件權限有兩種方式:八進制數字表示法和符號表示法
A:八進制數字表示法
每個八進制數字可以唯一對應一個三位的二進制數字。對應關系如下,簡單來說就是對應位置是1表示有權限,對應位置為0表示沒這個權限
隨意這種對應關系熟記后,可以分別為用戶,組成員,其他人快速設置權限
比如下面我要把test.c這個文件的所有權限全部更改為rw-,那么根據上述描述這種權限模式對應的八進制是6,故可以設置如下
B:符號表示法
上述八進制的表示方法其實是最為快捷的方法,但是初學者在前期對應起來還是有點麻煩的。使用符號表示法,理解起來非常簡單
簡單來說,符號表示法就是通過特定字符對應特定用戶,來為用戶增加或減少權限
對應特定用戶的符號如下
給定好用戶好之后,如果我想要去掉這個用戶的讀權限,那么就在其后面跟上-r,依次類推
如下例
關于目錄的權限在這里要統一說明一下:
- 目錄讀權限:是指是否能列出該目錄下的文件
- 目錄的寫權限:是指是否能在該目錄下創建文件
- 目錄的執行權限:就是指是否可以cd這個目錄。由于目錄的讀寫權限都是建立在執行權限上的,所以一旦執行權限被關閉,那么其讀寫權限也同樣會被關閉
(2)umask-設置默認權限
如下,我一次性創建10個文件和5個文件夾,其中值得注意的一點就是同類型文件創建時他們的權限都是一樣的
所以umask命令控制著創建文件或目錄時給文件的默認權限
關于這個umask不是特別好理解,在命令行中輸入umask,可以查看此時的umask值,采用的是八進制表示法
這個umask碼就決定著默認權限,它的解釋是這樣的:由于是八進制,只看其后三位,比如說上圖中是0022,只看022,按照之前的八進制表示方法它每一位數字對應一種用戶,所以如果用二進制,022對應的user就是000,對應的group就是010,對應的other就是010,文件是沒有執行權限的,所以原始最高權限為“rw- rw- rw-”,然后對應位置與二進制相比較,只要是出現1的位置全部去掉這個權限,0的位置保留,所以這也是為什么文件創建時默認權限是rw- r-- r--
而對于目錄來說最高權限為“rwx rwx rwx”,由于umsk為“000 010 010”,所以目錄創建時默認權限為rwx r-x r-x
一般情況下umsk值不需要你來設置,但是一些高安全級別條件除外
比如我的目的是創建出的文件的默認權限是“r-- -w- -w-”,問你umask值應該設置為多少?這里由于文件的最高權限是“rw- rw- rw-”,所以umask應該設置為“010 100 100”,也即是0244
三:更改身份
(1)su-以其他用戶和組ID的身份運行shell
su的意思就是直接切換成其他用戶
比如現在的用戶是deepin,我要切換到zhangxing可以這樣輸入
注意如果輸入su -,就會切換超級用戶
(2)sudo-提升權限執行命令
sudo你可以理解為暫時提升你的用戶權限執行某些命令,用法就是輸入命令的時候在前面加上sudo,比如之前說到過的/etc/shadow文件,如果是普通用戶是無法查看的,而使用這種方式短暫提升權限,則可以查看
需要注意以下幾點
- 使用sudo時輸入的不是超級用戶的密碼,而是普通用戶的密碼
- su與sudo的重要區別在于sudo不需要啟動一個新的shell,也就是不需要加載另一個用戶的運行環境
- 大家在Windows中時常需要以管理員身份啟動某個引用,其實和這里我們將的有異曲同工之妙
其實之所以要存在sudo是因為:很多用戶喜歡“偷懶”,為了屏蔽掉那些煩人的權限不足的通知,經常就會以超級用戶方式操作系統,這樣就會使一些病毒有了入侵計算機的機會。Linux的安全性就和Windows一樣低了,所以sudo的存在可以讓用戶在不切換超級用戶的情況下短時間提高自己的權限等級,以此來完成某些必要操作,而不至于一直大開超級用戶權限。
(3)chown-更改文件所有者和所屬群組
可以看出該命令其實有兩個功能:一是更改文件所有者,二是更改文件所屬群組。到底要發揮哪種功能,其實就看其如何搭配,搭配的方式如下
更改文件所有者為deepin
再比如更改文件所有者為zhangxing,文件所屬組為root
還有,文件所有者不要變,只更改文件所屬組為deepin
最后,把文件所有者改為root,文件所屬組跟隨root
總結
以上是生活随笔為你收集整理的1-9:学习shell之权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript中getBoundi
- 下一篇: 什么是服务器端脚本