6.1、多用戶概述
6.1.1、基本概念
用戶:不同的用戶具備不同的權限,每個用戶在權限允許範圍內完成不同的任務,Linux利用了這種權限的劃分和管理,實現了多用戶多任務的運行機制。
用戶組:用戶組是具有相同特徵用戶的邏輯集合。
Linux用戶和用戶組的:
1、一對一:一個用戶可以存在一個組中,是組中的唯一成員;
2、一對多:一個用戶可以存在多個用戶組中,此用戶具有多個組的共同權限
3、多對一:多個用戶存在於一個組中,這些用戶就具有和組相同的權限
4、多對多:多個用戶存在於多個組中。
Linux的UID和GID(用戶ID和組ID)
Linux系統中,每個用戶有兩種ID號,用戶ID(UID),組ID(GID)
6.1.2、帳號的系統文件
1、/etc/passwd 文件:系統用戶配置文件,儲存了系統中所有的用戶的基本信息,並且所有用戶都可以對此文件進行讀操作
vim /etc/passwd:以只讀的方式打開passwd文件
退出:ZZ
用戶名:密碼:UID:GID:描述性信息:用戶主目錄:默認的shell
用戶名:就是一串能代表用戶身份的字符串
密碼:“x”表示此用戶設有密碼,但不是真正的密碼,真正的密碼保存在/etc/shadow文件中
UID:每個用戶都有唯一的一個UID,0~65535
0:超級用戶
1~999:系統用戶(僞用戶)
1000~65535:普通用戶
GID:表示用戶的初始組的組ID
初始組:指用戶登錄時就擁有這個組的相關權限。每個用戶的初識組只能有一個
附加組:指用戶可以加入多個其他的用戶組,並擁有這些組的共同權限
描述性信息:只是用於解釋這個用戶的意義而已
默認的Shell:Shell就是Linux的命令解釋器,可以理解成用戶登錄後擁有的權限
2、/etc/shadow 文件(影子文件):用戶儲存Linux系統中用戶的密碼信息
/etc/shadow文件只有root用戶擁有讀權限,其他用戶沒有任何權限
sudo vim /etc/shadow
用戶名:加密密碼:密碼最後一次修改時間:最小的修改時間間隔:密碼有效期:密碼有效期截至前的警告天數:密碼過期後的寬限時間:賬號失效時間:保留字段
加密密碼:這裏保存的是真正加密後的密碼
密碼最後一次修改時間:密碼最後修改的時間與1970年1月1日相隔幾天
date -d "1970-01-01 18326 days"//換算天數與日期
最小的修改時間間隔:最後一次修改密碼日起,幾天內不能修改密碼,0表示隨時可以修改
密碼有效期:默認99999,亦可以認爲是永久生效
密碼有效期截至前的警告天數:提前幾天警告
密碼過期後的寬限時間:0:立即失效 -1:永不失效
賬號失效時間:如果規定了此時間,無論密碼是否失效,到期後,帳號都無法使用,以1970.1.1爲基準
保留字段:目前還沒有使用
3、/etc/group文件:用戶組配置文件,所有的用戶組的所有信息都在此文件中
組名:組密碼:GID:該用戶組中的用戶列表
組名:描述組名稱的一串字符串,不能重複
組密碼:“x”表示有組密碼,真正的加密後的組密碼保存在/etc/gshadow中
GID:
該用戶組中的用戶列表:顯示所有用戶(附加用戶)
4、/etc/gshadow文件:儲存組用戶的組密碼信息
組名:加密密碼:組管理員:組附加用戶列表
6.2、帳號管理
6.2.1、用戶賬號管理
1、useradd命令:添加新的系統用戶
useradd [選項] 用戶名
創建用戶賬號的默認值可以通過 :useradd -D來查看
修改:
1、通過vim文本編輯器手動修改 /etc/default/useradd
2、通過命令修改:useradd 直接修改
2、passwd命令:修改用戶密碼
passwd [選項] 用戶名 //root用戶
選項:
- -S:查詢用戶密碼的狀態,只有root用戶能使用
- -l:暫時鎖定用戶
- -u:解鎖用戶
3、chage命令:修改用戶密碼狀態
chage [選項] 用戶名
選項:
- -l:列出用戶的詳細密碼信息
- -d 日期:修改最後一次修改密碼的日期
4、userdel命令:刪除用戶
userdel [選項] 用戶名
選項:
-r:刪除用戶並且刪除用戶家目錄
6.2.2、組帳號管理
1、groupadd命令:添加用戶組
groupadd [選項] 組名
2、groupdel命令:刪除用戶組
3、gpasswd命令:把用戶添加進組或者從組中刪除
gpasswd [選項] 組名
選項:
-a user:將user加入組中
-d user:將user從組中移除
-M user1…:講多個用戶加入組中
-A user1…:設置用戶管理員
4、newgrp命令:切換用戶的有效組
newgrp 組名
1、創建一個有家目錄,和shell爲bash的用戶user2
sudo useradd -g group1 -G group2,group3 -m -s /bin/bash user2
2、給user2設置密碼
passwd user2
3、切換到user2用戶
su - user2
4、通過newgrp命令切換user2的有效組,並且創建文件
mkdir user1
newgrp group2
mkdir user2
newgrp group3
mkdir user3
ls -l
6.2.3、用戶和組狀態命令
1、usrmod命令:修改用戶信息
2、groupmod命令:修改用戶組
-g GID :修改組ID
-n 新組名: 修改組名:groupmod -n 新組名 舊組名
3、su命令:用戶間切換
從普通用戶切換到root用戶,從root用戶切換到普通用戶,以及普通用戶之間切換
su [選項] 用戶名
選項:
- -:當前用戶不僅切換爲指定用戶的身份,而且工作環境也切換了
- -p:切換用戶身份,但是不切換工作環境
- -c:切換用戶並且只執行一次命令,然後自動切換回來
4、id命令:查看用戶的UID和GID
6.3、磁盤配額
6.3.1、磁盤配額概述
磁盤配額:Linux系統中用來限定特定的普通用戶或者用戶組在指定的分區上佔用的磁盤空間或者文件個數。
1、磁盤配額限制普通用戶和用戶組,root用戶不能做磁盤配額
2、磁盤配額只針對分區,不能針對目錄
3、可以限制用戶所佔用的磁盤容量大小(block),還可以限制佔用的文件數(inode)
安裝quota命令:
sudo apt-get install quota
磁盤配額中的常見概念:
用戶配額和組配額
磁盤容量限制和文件個數限制
軟限制和硬限制
寬限時間
6.3.2、配置磁盤配額
1、設置掛載參數userquota和grpquota
創建一塊虛擬硬盤:
關閉虛擬機->設置->儲存->控制器SATA->添加虛擬硬盤->創建新的虛擬硬盤->VDI->固定大小->位置、名字、大小->創建
對sdb硬盤進行分區:
sudo fdisk /dev/sdb
格式化分區:
sudo mkfs -t ext3 -c /dev/sdb1
掛載分區:
sudo mount /dev/sdb1 /home/test
設置掛載參數
sudo mount -o remount,usrquota,grpquota /home/test
mount |grep sdb1
2、掃描文件系統並且建立Quota記錄文件:quotacheck命令
quotacheck [-avugfM] 文件系統
一般只需要使用 quotacheck -avug
6.3.3、管理磁盤配額
1、開啓磁盤配額限制(quotaon命令)
quotaon [-avug]
quotaon [-uvg] 文件系統名稱
2、關閉磁盤配額限制(quotaoff命令)
命令格式與quotaon相同
3、修改用戶(羣組)的磁盤配額(edquota命令)
edquota [-u 用戶名] [-g 羣組名]
edquota -t
edquota -p 源用戶名 -u 新用戶名
4、查看配額(quota)
sudo quota -uvs linux
6.4、設置文件和目錄的操作權限
6.4.1、操作權限簡介
查看文件或者目錄的權限信息
ls -l
rwx(所有者權限) r-x (所屬組權限)r-x(其他人權限)
rwx權限對文件的作用
r:表示可讀取此文件的實際內容
w:表示文件可以被編輯
x:表示該文件具備被系統執行的權限
rwx權限對目錄的作用
r:表示讀取目錄結構列表的權限:ls
w:對於目錄,w權限是最高權限
x:表示用戶可以進入目錄:cd
6.4.2、更改文件和目錄的操作權限
chmod命令通過數字修改文件權限
r --> 4
w --> 2
x --> 1
例如:rwx(所有者權限) r-x (所屬組權限)r-x(其他人權限)
所有者:4+2+1 = 7
所屬組:4+1 = 5
其他人:4+1 = 5
對應的權限值 755
chmod [-R] 權限值 文件\目錄名
chmod命令通過字母修改文件權限
chmod [u/g/o/a] [=(設定)/+(加入)/-(刪除)] [r/w/x] 文件名
6.4.3、更改文件或目錄的屬主和所屬組
chown [-R] 所有者:所屬組 文件或目錄
6.4.4、設置文件或目錄的權限掩碼
默認情況下,創建一個文件的權限爲“rw-r–r-- 目錄:rwx r-x r-xr-x
umask:root用戶默認0022,— -w- -w-普通用戶默認0002 -------w
文件或者目錄的初始權限 = 文件或目錄的最大默認權限 - umask權限掩碼
- 對於文件而言,最大默認權限666 rw rw rw
- 對於目錄而已,最大默認權限777 rwx rwx rwx
umask修改默認權限
umask 權限掩碼
6.5、多任務概述
6.5.1、基本概念
1、任務
通常一個任務就是程序的一次運行。
2、程序
程序是使用計算機語言編寫的可以實現特定目標或者解決特定問題的代碼集合
儲存在磁盤上,包括指令和數據的實體
3、進程
就是運行中的程序
一個運行的程序,可能有多個進程,每個進程在過程中執行特定的任務
是程序執行和管理資源的最小單位
4、進程的分類
-
交互進程:由shell啓動的進程
-
批處理進程:與終端無關,是一種進程序列,
-
守護進程:也叫做監控進程,總是活躍的
5、查看進程
-
簡單形式
ps
以簡略的方式顯示當前用戶有控制終端的進程信息
-
BSD形式
ps axu
-
SVR4形式
ps -efl
6、父進程、子進程、孤兒進程、殭屍進程
父進程啓動子進程後,子進程可以與父進程同時運行
子進程先於父進程結束,子進程向父進程發送信號,父進程回收子進程的相關資源
父進程先於子進程結束,子進程成爲了孤兒進程,同時init進程收養,變成了init進程的子進程
子進程先於父進程結束,但是父進程沒有回收子進程的資源,子進程就變成了殭屍進程
7、進程標識符(進程ID)
每個進程都有一個非負整數表示的唯一標識,PID
任何時候PID都是唯一的,但是可以重用,當一個進程退出的時候,其進程ID就可以被其它進程使用
延時重用
6.5.2、進程的啓動方式
Linux手動啓動進程
前臺啓動進程
後臺啓動進程:其實就是在命令的結尾處添加一個 & 符號
Linux調度啓動進程
實現調度啓動的方式:at、crontab命令
6.6、進程的管理
6.6.1、實時監聽進程運行的狀態——top命令
top [選項]
-d 秒數:間隔幾秒更新
-n 次數:
-p 進程PID:僅查看指定ID的進程
-u 用戶名:查看指定用戶的進程
6.6.2、調整進程優先級——nice命令
修改NI值:
1、NI範圍-20~19
2、普通用戶調整的NI範圍是0~19,而且只能調整自己進程
3、普通用戶只能調高NI值,不能降低
4、只有root用戶才能設定NI值爲負數,並且可以調整任何一個用戶的進程
nice:可以給要啓動的進程賦予NI值,但是不能修改已啓動的進程的NI值
renice命令:可以修改正在運行的進程的NI值
6.6.3、終止進程
kill [信號] PID
信號名稱 | 信號編號 | 含義 |
---|---|---|
EXIT | 0 | 程序退出時收到該信號 |
HUP | 1 | 讓某些進程還沒終止的情況下重新初始化 |
INT | 2 | 表示結束進程,但不是強制性的 |
QUIT | 3 | 退出 |
KILL | 9 | 強制結束進程 |
SEGV | 11 | 段錯誤 |
TERM | 15 | 正常結束進程,是kill命令的默認信號 |
kill 2288//默認信號15
kill -9 2288//強制結束進程