天天看點

Linux基礎

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:

當忘記重要配置檔案的存儲路徑,可通過搜尋關鍵字擷取其檔案路徑:

繼續閱讀