Linux 權限管理
1、權限簡介
Linux權限是作業系統用來限制對資源訪問的機制,權限一般分為讀、寫、執行,系統中每個檔案都擁有特定的權限:屬主、屬組以及其他人,通過這樣的機制來限制哪些用戶或用戶組可以對特定檔案進行相應的操作,
1.1 權限分類
- 權限針對檔案的三類物件:
| 全拼 | 翻譯 | 簡寫 |
|---|---|---|
| owner | 屬主 | u |
| group | 屬組 | g |
| other | 其它人 | o |
- 權限的分類:
| 權限 | 對檔案的影響 | 對目錄的影響 |
|---|---|---|
| r(讀取) | 可讀取檔案內容 | 可列出目錄中內容 |
| w(寫入) | 可修改檔案內容 | 可在目錄中創建洗掉內容 |
| x(執行) | 可作為命令執行 | 可訪問目錄內容 |
注意:目錄必須擁有 x 權限,否則無法查看其內容
- 權限的表示方式:
| 第一種 | 第二種 |
|---|---|
| - - - | 0 |
| - - x | 1 |
| - w - | 2 |
| - w x | 3 |
| r - - | 4 |
| r - x | 5 |
| r w - | 6 |
| r w x | 7 |
1.2 Linux安全背景關系
Linux每個行程都是以某個用戶身份運行,行程的權限與該用戶的權限一樣,運行該行程的用戶的權限越大,則行程擁有的權限就越大,
檔案有屬主和屬組,行程有屬主和屬組
- 任何一個可執行程式檔案能不能啟動為行程,取決于發起者對程式檔案是否擁有可執行權限
- 啟動為行程后,其行程的屬主為發起者,屬組為發起者的基本組
- 行程訪問檔案時的權限取決于行程的發起者:
- 行程的發起者是檔案的屬主時,則應用檔案屬主權限
- 行程的發起者是檔案的屬組時,則應用檔案屬組權限
- 應用檔案“其它”權限
2、權限管理命令
2.1 權限修改命令chmod
//權限修改主要修改三類物件的權限
//語法:chmod MODE file,...
-R //遞回修改權限
//修改某類物件權限:u,g,o,a
權限修改的三種方式:
chmod 物件類別=MODE file,.....
chmod 物件類別=MODE,物件類別=MODE file,.....
例如:
[root@zsl ~]# chmod u=rwx zsl
[root@zsl ~]# chmod u=rwx,g=rwx zsl
chmod 物件類別+|-MODE file,.....
chmod 物件類別+|-MODE,物件類別+|-MODE file,.....
chmod +|-MODE file,.....
例如:
[root@zsl ~]# chmod u+rwx zsl
[root@zsl ~]# chmod u-x,g-x zsl
[root@zsl ~]# chmod +x zsl
chmod "mode number" file,.....
例如:
[root@zsl ~]# chmod 777 zsl
2.2 屬主和屬組修改命令chown
//chown命令只有管理員可以使用,
chown USERNAME file,...
-R //修改目錄及其內部檔案的屬主
chown USERNAME:GROUPNAME file,...
chown USERNAME.GROUPNAME file,...
例如:
[root@zsl ~]# chown root.root zsl
[root@zsl ~]# chown root:root zsl
2.3 特殊權限
linux的權限默認是根據linux安全背景關系的方式來控制的,而特殊權限的存在打破了linux安全背景關系的規則,
SUID(4) //運行程式時,這個程式啟動的行程的屬主是程式檔案自身的屬主,而不是發起者為屬主
chmod u+s file
chmod u-s file
//如果file本身原來就有執行權限,則SUID顯示為s,否則顯示為S
SGID(2) //運行程式時,這個程式啟動的行程的屬組是程式檔案自身的屬組,而不是啟動者所屬的基本組
//一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的檔案或目錄,其所屬的組為此設定了SGID的目錄的屬組
chmod g+s DIR
chmod g-s DIR
//如果file本身原來就有執行權限,則SGID顯示為s,否則顯示為S
SBIT(1) //公共目錄,每個人都能創建檔案,洗掉自己的檔案,但是不能洗掉別人創建的檔案
chmod o+t DIR
chmod o-t DIR
//如果DIR本身原來就有執行權限,則SBIT顯示為t,否則顯示為T
特殊權限的數字表示方式:
4755 //有SUID,檔案權限為755
2755 //有SGID,檔案權限為755
1755 //有Sticky,檔案權限為755
//這里前面的4、2、1分別表示SUID、SGID、Sticky
2.4 檔案系統訪問控制串列facl
facl(Filesystem Access Control List),利用檔案擴展保存額外的訪問控制權限,
//語法:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m //設定權限條目
u:UID:perm
g:GID:perm
示例:
setfacl -m u:test:rw file
setfacl -m g:test:rw file
//如果要為某個目錄設定默認的訪問控制串列,只需要設定時在u或g前面加上d即可
示例:
setfacl -m d:u:test:rw file
//此時在此目錄中創建的檔案均繼承此訪問控制串列所設定的權限
-x //洗掉權限條目
u:UID
g:GID
示例:
setfacl -x u:test file
setfacl -x g:test file
-b //Remove all
示例:
setfacl -b file
//查看檔案系統訪問控制串列getfacl
//語法:getfacl [-aceEsRLPtpndvh] file ...
示例:
getfacl file
2.5 遮罩碼
為什么檔案創建以后默認權限是644?
為什么目錄創建以后默認權限是755?
新建檔案和新建目錄的默認權限是由遮罩碼umask來控制的,
從名字就能看出來,遮罩碼umask是用來隱藏一些權限的,
舉例:如果你不想讓人家認出你,你會怎么辦?
檔案最終的權限為:
666-umask 檔案最高權限 - 遮罩碼 = 檔案最終權限
目錄最終的權限為:
777-umask 目錄最高權限 - 遮罩碼 = 目錄最終權限
檔案默認是不能具有執行權限的,如果檔案有了執行權限則將其權限整體加1,
3、sudo借權
sudo可以實作某個用戶能夠以另外哪一個用戶的身份通過哪些主機執行什么命令
sudo的組態檔:/etc/sudoers
//使用visudo命令進行sudo的配置,每一行就是一個sudo條目,條目格式如下:
示例:
who which_hosts=(runas) command
who : User,User_Alias //表示運行命令者的身份
which_hosts : Host,Host_Alias //通過哪些主機
runas : User,Runas_Alias //以哪個用戶的身份
command : Command,Cmnd_Alias //運行哪些命令
//別名必須全部而且只能使用大寫英文字母的組合,可以使用感嘆號取反
//別名分類
1.用戶別名:
User_Alias "Alias" =
用戶的用戶名
組名,使用%引導
還可以其它已經定義的用戶別名
2.主機別名:
Host_Alias "Alias" =
主機名
IP地址
網路地址
其它主機別名
3.命令別名:
Cmnd_Alias =
命令路徑
目錄(此目錄內的所有命令)
其它已定義的命令別名
//sudo命令語法:sudo [options] COMMAND
-V //顯示版本編號
-h //幫助資訊,會顯示版本編號及指令的使用方式說明
-l //列出當前用戶可以使用的所有sudo類命令
-v //重新做一次密碼確認,如果超過N(默認為5)分鐘,也會問密碼
-k //立刻清除認證資訊,如果不指定-k,默認認證資訊在5分鐘后失效
-b //將要執行的指令放在后臺執行
-u USERNAME //以指定的用戶名執行命令,默認為root
4、檔案特殊屬性命令
chattr命令用于改變檔案的特殊屬性,與chmod命令相比,chmod只是改變檔案的讀寫、執行權限,而chattr是基于內核的更底層的屬性控制,
命令格式:
chattr [選項] [+/-/=屬性] [檔案或目錄]
選項:
-R //遞回
-V //顯示程序
模式:
+ //用于增加屬性
- //用戶洗掉屬性
= //用于指定屬性
A //告訴系統不要修改該檔案的最后訪問時間
a //只能向檔案追加資料,不能洗掉
i //設定檔案不能被洗掉,改名,寫入或新增內容
示例:
[root@hzz ~]# chattr +a hzz.txt //為hzz.txt增加a屬性
[root@hzz ~]# lsattr hzz.txt //查看檔案特殊屬性
-----a-------e-- hzz.txt
5、擴展命令
sleep //睡眠
//寫腳本時為防止上一個命令沒執行完下一命令就開始執行時可以sleep命令
//語法:sleep NUMBER[SUFFIX]...
SUFFIX:
s:秒,默認
m:分
h:小時
d:天
示例:
sleep 5 //表示睡眠5秒后再執行后面的命令
last //顯示/var/log/wtmp檔案內容,用戶登錄歷史及系統重啟歷史
-n # //顯示最近#次的相關資訊
lastb //顯示/var/log/btmp檔案內容,用戶錯誤的登錄嘗試
-n # //顯示最近#次的相關資訊
lastlog //顯示每個用戶最近一次成功登錄資訊
-u username //顯示特定用戶最近的登錄資訊
basename //顯示路徑基名
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/502090.html
標籤:Linux
上一篇:Ubuntu裝機
下一篇:Ubuntu裝機
