8 Linux使用者管理
概念
是指登入系統,運用系統的使用者
為什麼需要使用者
系統上每一個運作的程式都需要使用者,在生産中Linux系統通常使用普通使用者來管理伺服器,因為root使用者權限過大,容易造成重大故障
使用者分類
Linux使用者隻有兩個等級:root及非root。 一個使用者至少要屬于一個使用者組,一個使用者可以屬于多個使用者組
配置檔案
passwd 檔案(使用者資訊存放檔案)
shadow 檔案(使用者密碼存放檔案)
修改密碼過期時間
修改密碼過期時間-參考部落格
使用者的添加\修改
通用選項:
選項
功能介紹【添加(useradd)\修改(usermod)】
-u
指定要(useradd\usermod)使用者的UID
-g
指定(useradd\usermod)基本組
-G
指定(useradd\usermod)附加組,用逗号隔開可添加多個附加組
-d
指定(useradd\usermod)使用者家目錄
-s
指定(useradd\usermod)Bash Shell
-c
指定(useradd\usermod)使用者的注釋資訊
使用者建立(useradd)
功能介紹
-M
指定建立的使用者不添加家目錄
-r
建立系統賬戶,預設無家目錄
使用者的修改(usermod)
-l
指定要修改的使用者的登入名
-L
指定要鎖定使用者
指定要解鎖的使用者
使用者的删除(userdel)
使用者的密碼設定
邏輯上将多個使用者歸為一個組,當我們對組操作,相當于對組中的使用者操作
使用者組分類
預設組:建立使用者時不指定組,預設建立組的名字與使用者同名
基本組:使用者有且隻能有一個基本組(親爹)
附加組:使用者可以有多個附加組(幹爹)
group 檔案(使用者組資訊存放檔案:/etc/group)
gshadow 檔案(使用者組密碼資訊:/etc/gshadow)
使用者組的添加(groupadd)
-f
如果組已存在,強制建立組
建立組GID
建立一個系統組
使用者組的修改(groupmod)
修改組GID,GID已存在提示GID已存在
-n
修改為新組
使用者組的删除(groupdel)
示例
使用者與使用者組應用場景
因為公司伺服器對外禁止root使用者登入,我們使用的一般都是普通使用者,但是有時需要對伺服器進行管理又需要root權限。是以為友善普通使用者完成日常工作,需要以下兩種方式來對普通使用者進行提權。
兩種寫法:
su - username
su username
差別:
加“-”:登入式Shell(需要輸入使用者名和密碼);
不加“-”:非登入式Shell(不需要輸入使用者名和密碼);
最大的差別就是加載的環境變量不一樣,使用su的優點是簡單,缺點是需要知道root密碼,一旦洩露會造成無法預料的損失
配置檔案加載順序:
登入式Shell:/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc
非登入式Shell:~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
1.先使用root使用者對該賬戶進行授權 2.才能使用該賬戶進行提權,然後完成普通使用者無法做到的事情,sudo權限太高,幾乎可以執行所有的指令;
sudo提權步驟:
1、定義指令集合
2、添加使用者 \組
3、将指令集合捆綁至某一特定的組
4、将使用者加入到組中
9 Linux權限管理
什麼是權限
權限是用來限制使用者能對系統所做的操作,限制某個特定的使用者具有特定的系統資源使用權利
為什麼需要權限
系統維護的使用者較多,因為不同的使用者有自己的隐私,是以需要進行權限劃分。比如說不同的人查閱相同的檔案,但能操作的指令是不一樣的,這樣可以保證資料的安全,避免人為原因造成故障導緻資料洩露等風險。
作業系統為通路檔案的使用者定義了三種身份,同時為這三種身份又分别定義了三種權限
通路一個檔案的流程
判斷是否為檔案所屬主—>>判斷是否為檔案所屬組—>>按照其他使用者權限執行
Linux中的權限含義
字母
含義
二進制
八進制權限表示法
r--
讀權限
100
4
-w-
寫權限
010
2
--x
執行權限
001
---
無權限
000
root使用者能修改任何使用者的權限;普通使用者隻能修改屬于自己的檔案權限
UGO方式
NUM方式(必須掌握)
一般情況下,系統會預設設定的安全權限:
檔案權限:644
目錄權限:755
一、權限對檔案的影響:
1、讀取權限r :具有讀取、閱讀檔案内容權限,隻能使用檢視類指令 cat、head、tail、less、more
2、寫入權限w :具有新增、修改檔案内容的權限
(2.1)使用 vim 會提示權限拒絕,但可強制儲存,會覆寫檔案的所有内容;
(2.2)使用 echo 指令重定向的方式可以往檔案内寫入資料,>> 可以追加内容
(2.3)使用 rm 無法删除檔案,因為删除檔案需要看上級目錄是否有 w 的權限
3、執行權限 x:執行檔案的權限沒什麼用,一般搭配r權限,普通使用者才能執行檔案
【總結】
檔案 r 權限,隻給使用者檢視,無其他操作;
檔案 rw 權限,可以檢視和編輯檔案内容【代碼檔案】;
檔案 rx 權限,允許檢視和執行檔案、但不能修改檔案【腳本|指令】;
檔案 rwx 權限,能讀、能寫、能執行、【不能删除】;
二、權限對目錄的影響
1、讀取權限r :具有浏覽目錄及子目錄權限
(1.1)使用 ls 指令浏覽目錄及子目錄, 但同時也會提示權限拒絕
(1.2)使用 ls -l 指令浏覽目錄及子目錄,檔案屬性會帶問号,并且隻能看到檔案名
2、寫入權限w :具有增加、删除或修改目錄内檔案名權限,需要 x權限配合
(2.1)可以在目錄内建立檔案, 删除檔案(跟檔案本身權限無關)
(2.2)不能進入目錄、不能複制目錄、不能删除目錄、不能移動目錄
3、執行權限 x:具有執行檔案的權限
(3.1)隻能進入目錄
(3.2)不能浏覽、複制、移動、删除
目錄 rx 權限,允許浏覽目錄内檔案以及子目錄,不允許在該目錄下建立檔案、删除檔案
目錄 rw 權限,能檢視目錄,能往目錄寫入檔案,但無法進入目錄-->(使用的情況太少)
變更權限在程序中的執行步驟:
程序能夠以什麼樣的方式去通路一個檔案或目錄,取決于程序所運作的使用者對該檔案有什麼樣的權限
第一步:檢查程序運作的使用者是誰
第二步:檢查程序通路的檔案屬主和屬組是誰,以及權限為多少
第三步:變更屬主和屬組,修改對應的權限,確定符合程序所需要的權限預期
如何修改檔案所屬關系
chown 能變更檔案的屬主和屬組(經常使用)
chgrp 僅能變更檔案的屬組;
示例:基于Httpd場景說明
SUID
1、背景:
每個普通使用者在更改自己的密碼時,同時更新 /etc/shadow 檔案裡的内容,但 /etc/shadow 檔案不允許任何人修改,普通使用者可以修改自己的密碼在于 passwd 指令本身,因為該指令擁有特殊權限 SetUID ,是以 passwd 指令在執行的過程中,會以指令的屬主身份運作該指令,就是以root權限執行。
簡單總結就是: 普通使用者-->passwd -->轉換指令的屬主:以root執行 --> /etc/shadow資訊變更
2、用法:
添權重限:chmod u+s directory
chmod 4755 directory
删除權限: chmod u-s directory
chmod 0755 directory
3、總結:suid僅對二進制可執行程式有效,其他檔案或目錄則無效;不建議對 vim 或 rm 進行suid 設定操作;
SGID
1、設定二進制可執行檔案:指令在執行的過程中,會以指令的屬組身份運作該指令
2、設定在目錄上:這時候在該目錄下建立的檔案/目錄自動繼承父目錄的屬組
3、用法:
添權重限:chmod g+s directory
chmod 2755 directory
删除權限: chmod g-s directory
sgid場景描述
SBIT
1、一旦目錄被賦予了粘滞位 Sticky,任何人即便擁有w權限,可以往目錄中添加檔案,也隻能删除自己建立的檔案(root除外)
2、 用法:
添權重限:chmod 1755 directory
chmod o+t directory
删除權限:chmod 0755 directory
chmod o-t directory
sbit場景描述
1、概念:這類檔案屬性淩駕于 rwx 基礎權限之上,是一種進階屬性。
2、作用:
建立一個檔案,不允許被修改、移動、删除,包括 root 也不行(适合 /etc/passwd); 僅允許往檔案裡面追加資料,不允許修改、移動、删除。(适合 sudo 審計日志);
3、用法
a:可對檔案進行追加内容;
i:鎖定檔案,不允許其他操作;
添權重限:chattr +[i|a] 檔案或目錄
删除權限:chattr -[i|a] 檔案或目錄
示例:病毒攻擊場景
1、概念:指使用者在建立檔案或目錄時,預設配置設定給檔案或目錄的通路權限;
2、背景:
使用者建立一個檔案:預設通路權限:rw-rw-rw-(666)—最終檔案權限:644
使用者建立一個目錄:預設通路權限:rwxrwxrwx(777)—最終目錄權限:755
3、原因:UMASK減權
系統預設 root 使用者的 UMASK 為 022,當使用者登入系統,加載環境變量檔案:/etc/profile,系統預設權限最終兩種情況:
使用者UID<199,UMASK初始化為022:
檔案:666 - 022 = 644
目錄:777 - 022 = 755
使用者UID>199,UMASK初始化為002
檔案:666 - 002 = 664
目錄:777 - 002 = 775
預設權限計算公式(針對檔案權限):
UMASK三個位數中隻要其中一個位有奇數,檔案權限要在對應位數加1
UMASK初始值:
(1) UMASK=032 檔案權限為666 - 032 = 634 + 010 = 644
(2)UMASK=035 檔案權限為666 - 035 = 631 + 011 = 642
10 Linux IO重定向
重定向就是将原本要輸出到螢幕中的資訊,重新定向到某個指定的檔案中,或者定向到黑洞(/dev/null)
标準輸入 (STDIN) 檔案描述符:0,預設:鍵盤輸入
标準輸出( STDOUT) 檔案描述符:1,預設:螢幕輸出
錯誤輸出 (STDERR) 檔案描述符:2,預設:螢幕輸出
正确輸出
(1)覆寫輸出(先清空,後寫入):>(标準格式:1>)
(2)追加輸出(直接寫入檔案末尾):>>(标準格式:2>>)
錯誤輸出:
(1)覆寫輸出(先清空,後寫入):2>
(2)追加輸出(直接寫入檔案末尾):2>>
混合輸出:&>/dev/null
&>>/dev/null
1>file >2>&1
管道操作符号:“|”,簡單說就是将左右兩個指令連接配接起來,将左側的【标準輸出】—>>右側的【标準輸入】
注意:錯誤輸出無法通過管道傳遞至右邊的【标準輸入】
xargs:讓不支援管道技術的指令可以使用管道技術,作用是将左側指令的輸出作為參數傳遞給右側指令輸入
tee:管道中使用tee,可以将左側輸出的結果存儲至檔案或顯示器,但不影響右側指令的處理和輸出結果,
11 Linux 壓縮打包
Linux使用最多的格式是zip和tar.gz,Windows和Linux系統共同使用的是zip格式的壓縮包,tar.gz在Windows中依然可以識别
該指令僅能對檔案進行壓縮,且壓縮後會删除源檔案
應用場景:需要讓某個配置檔案不生效,但是又不想删除時可以給它打包,需要時再解壓出來(此處示例省略)
gzip用法
壓縮:gzip file
解壓:gzip -d file.gz
檢視:zcat file.gz
bizp2(用法同gzip)
該指令主要針對檔案或目錄壓縮
zip用法
壓縮:
壓縮檔案:zip filename.zip filename
壓縮目錄:zip -r filename.zip /directory (遞歸打包與壓縮)
解壓:
預設解壓到目前目錄:uzip filename.zip
解藥目錄到指定路徑:uzip filename.zip -d /路徑
檢視:unzip -l filename.zip
tar指令是Linux系統中最常用的壓縮與解壓縮指令,支援檔案和目錄的壓縮歸檔,而且能針對目錄遞歸進行壓縮歸檔
tar文法:tar [-zjxcvfpP] filename
c
建立新的歸檔檔案
z
使用gzip壓縮歸檔後的檔案(xxx.tar.gz)
x
對歸檔檔案解包
j
使用bzip壓縮歸檔後的檔案(xxx.tar.bz2)
t
列出歸檔檔案裡的檔案清單
J
使用xz壓縮歸檔後的檔案(tar.xz)
v
輸出指令的歸檔或解包過程
C
指定解壓目錄位置
f
指定封包件名,參數f寫在最後
X
排除多個檔案
-- exclude
排除檔案或目錄
常用打包與壓縮組合指令
組合指令
組合含義
zcf
打封包件為tar.gz格式
zxf
解壓檔案為tar.gz
xf
智能解壓檔案
tf
檢視壓縮封包件内容
擴充:排除檔案并打包壓縮(tar X tar.gz)
13 Linux檔案查找
檔案名稱:
find [路徑] [-name] “查找内容”
find [路徑] [-iname] “查找内容”
檔案大小:
find [路徑] [-size] [+|-|=] (大于|小于|等于)
檔案時間:
天: -mtime
find [路徑] -name "關鍵字" -mtime [+7|-7|=7] (7天前|最近7天|第七天,等号可以忽略不寫)
分鐘:-mmin (查找最近一段時間内發生檔案時間發生變化的檔案)
find [路徑] -type f -mtime [+180|-180|=180] (180分鐘前|最近180分鐘|第180分鐘,等号可以忽略不寫)
屬主屬組:
使用者:
-user
-nouser
使用者組:
-group
-nogroup
組合使用(邏輯文法的使用)
檔案類型:
檔案類
用法示例
f —檔案
[root@node ~]# find /etc/ -type f
d—目錄
[root@node ~]# find /etc/ -type d -name "ifcfg*"
l—連結
[root@node ~]# find /etc/ -type l |wc -l
b—塊裝置
[root@node ~]# find /dev/ -type b -name "sd*" #檢視硬碟分區
c—字元裝置
[root@node ~]# find /dev/ -type c
s—套接字
[root@node ~]# find /dev/ -type s
p—管道檔案
[root@node ~]# find /dev/ -type p
權限
find 路徑 -perm [-|/]MODE
邏輯運算
符号
-a
與(且)
-o
或
-not(!)
非(取反)
find結合以下三個指令使用:
-exec:
後面跟自定義shell,實作檔案拷貝和檔案删除,限制是隻能一個檔案一個檔案的操作,處理性能極低(标準寫法:-exec \;)
-xargs:
将前者指令查到的檔案作為一個整體傳遞給後者指令的輸入,使用頻率較高
-grep:
當忘記重要配置檔案的存儲路徑,可通過搜尋關鍵字擷取其檔案路徑: