一、系統管理類指令
1、uname(顯示系統訊息)
用于顯示系統資訊,比如系統型別、主機型號等,
【格式:】 uname [選項] 注: 選項: -a 或者 --all 顯示全部資訊 -m 或者 --machine 顯示電腦型號 -n 或者 --nodename 顯示主機名稱 -r 或者 --release 顯示作業系統發行編號 -s 或者 --sysname 顯示系統名稱 --version 顯示版本資訊 【舉例:】 [root@localhost test]# uname --all

2、firewall(操作防火墻)
CentOS 7 使用 firewall 管理防火墻,不使用 iptables 管理,
使用 firewall-config 可以打開 GUI 圖形界面進行操作,
使用 firewall-cmd 直接操作命令列,
使用 man firewall-cmd 可以查看幫助資訊,
【格式:】 firewall-cmd [選項] 注: 選項: --state 用于查看 firewall 的狀態 --reload 用于重新加載防火墻,不中斷服務 --permanent 永久操作 --add-port 用于添加埠 --list-ports 用于查看已開放的埠 --remove-port 用于移除埠 --add-service 用于添加服務 --remove-service 用于移除服務 --query-service 用于查看服務是否支持 --get-services 用于查看支持的服務 --get-active-zones 用于查看已被激活的磁區 【常見操作:開啟、關閉防火墻】 [root@localhost firewalld]# firewall-cmd --state 用于查看防火墻的狀態,一般都為 running, 或者 [root@localhost firewalld]# service firewalld status 用于查看防火墻的狀態, [root@localhost firewalld]# service firewalld start 開啟防火墻 [root@localhost firewalld]# service firewalld stop 關閉防火墻 [root@localhost firewalld]# service firewalld restart 重啟防火墻 【常見操作:(開放、關閉 8080 埠,在防火墻開啟時進行)】 firewall-cmd --state firewall-cmd --add-port=8080/tcp firewall-cmd --reload firewall-cmd --list-port firewall-cmd --remove-port=8080/tcp 注: firewall-cmd --add-port=8080/tcp --permanent 表示永久操作

3、runlevel、systemctl、init(查看、設定系統運行級別)
(1)運行級別分類
運行級別0:系統關機狀態,默認級別不能設為 0,否則不能正常啟動(一啟動就關機),
運行級別1:單用戶作業狀態,用于系統維護、找回 root 密碼等,禁止遠程登錄,只能在當前計算機上操作,
運行級別2:多用戶狀態(無網路服務),
運行級別3:多用戶狀態(有網路服務),
運行級別4:作為保留級別,未使用,
運行級別5:圖形界面狀態,
運行級別6:系統重啟狀態,默認級別不能設為 6,否則不能正常啟動(一啟動就重啟),
(2)一般運行級別組態檔所在位置(/etc/inittab)
查看可知 CentOS7 不使用 inittab,即使對該檔案修改,也不會有影響,
使用 systemctl 去獲取、設定運行級別,

(3)查看當前運行級別
【方式一:runlevel】 runlevel 輸出 上一個系統運行級別以及當前系統運行級別, 形如: N 5 N 表示系統未更換過運行級別,5 表示當前系統運行級別為 5 5 3 5 表示上一次運行級別為 5, 3 表示當前系統運行級別為 3 【方式二:】 who -r 【方式三:】 systemctl get-default 注: 運行級別對應: 0 /usr/lib/systemd/system/runlevel0.target -> poweroff.target 1 /usr/lib/systemd/system/runlevel1.target -> rescue.target 2 /usr/lib/systemd/system/runlevel2.target -> multi-user.target 3 /usr/lib/systemd/system/runlevel3.target -> multi-user.target 4 /usr/lib/systemd/system/runlevel4.target -> multi-user.target 5 /usr/lib/systemd/system/runlevel5.target -> graphical.target 6 /usr/lib/systemd/system/runlevel6.target -> reboot.target


(4)修改運行級別(init、systemctl)
【方式一:(切換運行級別,但是不修改默認設定)】 init 數字 注: 數字為 0 - 6 【方式二:(修改默認運行級別)】 systemctl set-default xxx.target 設定默認級別為 xxx.target,重啟系統生效 systemctl isolate xxx.target 不重啟系統,將運行級別切到 xxx.target,等價于 init 【舉例:】 [root@localhost system]# systemctl get-default [root@localhost system]# systemctl set-default runlevel3.target [root@localhost ~]# systemctl isolate runlevel5.target

4、CentOS7 找回丟失的 root 密碼
(1)解決方案:
開機進入 單用戶 模式(無需密碼登陸),此時設定密碼即可,
(2)安全性:
由于單用戶模式必須在服務器上直接操作,不能通過遠程操作,既然都能接觸服務器了,說明是內部人操作的,安全性也就可以得到保證,
(3)操作步驟:
Step1:開機,在引導界面使用 上下箭頭切換,阻止默認引導功能,

Step2:按下 e 鍵,進入編輯界面,如下圖,在行末尾 添加 init=/bin/sh,然后Ctrl + x 進入單用戶模式,

Step3:切換根目錄,修改 root 用戶的密碼,并重啟虛擬機,
若出現亂碼,使用 LANG=en_US,修改
chroot /sysroot/ 切換根目錄 ll LANG=en_US 出現亂碼,設定語言 passwd root 修改 root 密碼 touch /.autorelabel 用來使selinux的所有的關聯標簽發生改變,以接受新的ROOT密碼 exit 離開 /sysroot 目錄 reboot 重啟 虛擬機

5、行程管理
(1)行程:
可以理解為 某個正在執行的程式(命令),程式執行時,相關的代碼、屬性加載到記憶體,作業系統給其分配一個 ID,即行程 ID(PID),
(2)行程管理:
即對系統內正在運行的行程進行管理,
可以查看當前系統所有正在運行的行程,并以此判斷哪些服務被啟動,哪些非法服務被啟動,
可以用來殺死行程,停止不正常運行的行程,
(3)一般行程、孤兒行程、僵尸行程:
一般行程:指正常情況下,子行程由父行程創建,當子行程執行完畢,父行程取得子行程的終止狀態,并回收子行程的資源,
孤兒行程:指父行程退出了,但其子行程仍在運行,此時這些子行程即為孤兒行程,被行程號 為 1的行程(即 PID = 1,一般為 init 或者 systemd)收養、并執行,執行完畢由 init 回收資源,
僵尸行程:指的是子行程結束,但父行程沒有回收子行程的資源,從而子行程一致存在于記憶體中,此時子行程即為 僵尸行程,
(4)行程的啟動:
可以分為 手動啟動、任務調度啟動,
【手動啟動:】 所謂手動啟動,即用戶通過命令列輸入命令,并執行, 手動啟動又可分為: 前臺啟動、后臺啟動, 前臺啟動:通常用于執行耗時較短的命令,此時需等待當前命令執行完畢才可繼續執行下個命令(可以使用快捷鍵 Ctrl + Z 將命令掛起),比如 ls、cd 等命令, 后臺啟動:通常用于執行耗時較長的命令,此時若用前臺啟動執行,耗時較長,可以將其轉為后臺執行,然后繼續執行其他操作,(格式:命令 &,&前有空格), 【任務調度啟動:】 所謂任務調度啟動,指的是任務可以在指定時間、指定情況下自動啟動, 比如:資料庫備份等,
6、ps(顯示所有運行行程的資訊)
用于顯示運行行程的資訊,
【格式:】 ps [選項] 注: 選項: aux 查看系統的所有行程 -le 查看系統的所有行程,以及行程的優先級、父行程ID -l 查看當前 shell 產生的行程,以長格式顯示 aux 輸出格式: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 其中: USER 指該行程由哪個用戶產生的, PID 指該行程的 ID, %CPU 指該行程占用 CPU 資源的百分比,占用越高越耗費資源, %MEM 指該行程占用 物理記憶體 的百分比,占用越高越耗費資源, VSZ 指該行程占用 虛擬記憶體 的大小,單位為 KB, RSS 指該行程占用 實際物理記憶體 的大小,單位為 KB, TTY 指該行程在哪個終端上運行, tty1 ~ tty7 表示本地終端, pts/0 ~ pts/255 表示虛擬終端(遠程終端), STAT 指的是該行程狀態, D 睡眠狀態,不可被喚醒, S 睡眠狀態,可被喚醒, R 執行緒正在運行狀態, T 執行緒停止狀態, X 執行緒死亡狀態, Z 僵尸行程,行程已終止,但仍有部分程式在記憶體, N 低優先級 < 高優先級 s 包含子行程 + 后臺行程 l 指多執行緒 START 指的是該行程的啟動時間, TIME 指的是該行程占用 CPU 的時間(即運行時間), COMMAND 指的是該行程的名字, -le 輸出格式: F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 其中: F 指的是行程的權限, 1 表示行程可以被復制,但是不能被執行, 4 表示行程使用管理員權限, S 指的是該行程狀態, D 睡眠狀態,不可被喚醒, S 睡眠狀態,可被喚醒, R 執行緒正在運行狀態, T 執行緒停止狀態, X 執行緒死亡狀態, Z 僵尸行程,行程已終止,但仍有部分程式在記憶體, UID 指的是運行該行程的用戶的 ID PID 指行程的 ID PPID 指行程的父行程 ID C 指該行程占用 CPU 資源的百分比,占用越高越耗費資源, PRI priority,指該行程的動態優先級,數值越小,優先級越高,由內核動態調整, PRI(最終值) = PRI(原始值) + NI, NI nice,指該行程的靜態優先級,可手動修改,范圍 -20 ~ 19,數值越小,優先級越高,普通用戶只能調整自己的行程且只能調高 NI, 范圍為 0 ~ 19, ADDR 指該行程在記憶體的地址, SZ 指該行程占用的記憶體空間, WCHAN 指該行程是否運行, - 表示運行, TTY 指該行程在哪個終端上運行 TIME 指的是該行程占用 CPU 的時間(即運行時間), CMD 指的是該行程的名字, 【舉例:】 [root@localhost test]# ps aux | grep pts/* [root@localhost test]# ps -le | grep pts/* [root@localhost test]# ps -l

7、pstree(以樹形結構顯示行程間的關系)
【格式:】 pstree [選項] PID/用戶名 注: 選項: -p 樹的節點上顯示 PID 【舉例:】 [root@localhost test]# pstree -p

8、top(動態查看行程的運行狀態)
提供一個互動界面,可以方便查看行程的運行狀態,
【格式:】 top [選項] 注: 選項: -d 秒數 指定每個幾秒 更新一次 top,默認 3 秒 -n 次數 指定 top 執行的次數 -b 批處理輸出,一般與 -n 連用,將 top 內容重定向到檔案 -p PID 查看指定 PID 的行程 -u 用戶名 查看指定 用戶 的行程 【舉例:】 [root@localhost test]# top -p 1,2 -b -n 2 > test.txt &

top 輸出分析:

【top 輸出第一行:(顯示系統資訊)】 top - 14:41:14 up 1 day, 23:00, 1 user, load average: 0.00, 0.01, 0.05 注: 14:41:14 表示當前系統時間 up 1 day, 23:00 表示當前系統運行時間 1 user 表示當前登錄系統的用戶總數為 1 load average: 0.00, 0.01, 0.05 表示系統在前 1 分鐘、5 分鐘、15分鐘的平均負載, 【top 輸出第二行:(顯示行程資訊)】 Tasks: 2 total, 0 running, 2 sleeping, 0 stopped, 0 zombie 注: 2 total 表示當前查詢到的行程總數為 2 0 running 表示正在運行的行程數為 0 2 sleeping 表示正在睡眠的行程數為 2 0 stopped 表示正在停止的行程數為 0 0 zombie 表示僵尸行程數為 0 【top 輸出第三行:(顯示 CPU 資訊,網上白嫖的,不太明白具體含義,混個眼熟)】 %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st 注: 0.0 us 表示用戶模式占用 0% 0.0 sy 表示系統模式占用 0% 0.0 ni 表示改變過優先級的行程占用 0% 100.0 id 表示空閑 CPU 占用 100.0% 0.0 wa 表示等待輸入、輸出行程占用 0% 0.0 hi 表示硬中斷請求服務占用 0% 0.0 si 表示軟中斷請求服務占用 0% 0.0 st 表示虛擬時間百分比 【top 輸出第四行:(顯示物理記憶體資訊)】 KiB Mem : 3861364 total, 2133256 free, 935192 used, 792916 buff/cache 注: 3861364 total 物理記憶體總量 2133256 free 空閑記憶體量 935192 used 已使用記憶體量 792916 buff/cache 緩沖、快取記憶體量 注: buff 緩沖,向硬碟寫資料時,將資料先放置在緩沖區,再一次寫入,提高資料寫入的性能, cache 快取,從記憶體中讀資料時,將資料先放置在快取區,再一次讀入,挺高資料讀取的性能, 【top 輸出第五行:(顯示交換磁區資訊)】 KiB Swap: 2097148 total, 2097148 free, 0 used. 2622372 avail Mem 注: 2097148 total 交換磁區總量 2097148 free 空閑交換磁區量 0 used 已使用交換磁區量 2622372 avail Mem 可用磁區量 【top 輸出第七行:】 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 其中 PID 指行程 ID USER 指行程所屬的用戶 PR 指行程動態優秀級 NI 指行程靜態優先級 VIRT 指行程占用的虛擬記憶體大小 RES 指行程占用的物理記憶體大小 SHR 指行程占用的共享記憶體大小 S 指行程狀態(stat) %CPU 指行程占用 CPU 百分比 %MEM 指行程占用 記憶體 百分比 TIME+ 指行程占用 CPU 的時間 COMMAND 指行程名 互動界面常用按鍵: Q 退出 top ,(Ctrl + C 也行) P 按照 CPU 占用率降序排序(默認, %CPU), M 按照 記憶體 使用率降序排序(%MEM), N 按照 PID 降序排序(PID), T 按照 占用 CPU 時間排序(TIME+),
9、lsof(顯示行程打開的檔案)
【格式:】 lsof [選項] 注: -c 字串 列出以字串開頭的行程打開的檔案 -u 用戶名 列出某用戶的行程打開的檔案 -p PID 列出某行程打開的檔案 +d 檔案路徑 列出某個目錄下打開的檔案 【舉例:】 [root@localhost test]# lsof +d /usr/bin

10、kill、killall、pkill(終止行程)
kill 向作業系統發送一個信號和行程PID,作業系統根據該信號型別對行程處理,
kill 指令不一定能終止行程,只有系統接收終止信號并成功處理才會終止行程,
kill 只能根據 PID 去終止行程,
killall 通過行程名去終止一系列行程,
pkill 通過行程名去終止一系列行程,可以用于踢出登陸的用戶,
【kill 格式:】 kill [信號] PID 注: 常用信號: -1 重啟行程 -2 結束行程,并不強制,比如 Ctrl + C -9 強制終止行程 -15 默認信號,正常結束行程 【killall 格式:】 killall [選項] [信號] 行程名 注: 選項: -i 提示資訊 -l 忽略行程名大小寫 【pkill 格式:】 pkill [信號] 行程名 pkill [-t 終端號(TTY)] 【舉例:】 [root@localhost ~]# kill -9 7777 [root@localhost ~]# killall -9 sshd [root@localhost ~]# pkill -9 sshd [root@localhost ~]# kill -9 -t pts/1
11、jobs、fg、bg(后臺命令管理)
對于一些執行時間較長的命令,如果使用前臺互動的方式,則需要等待很長時間,一般將其放到后臺處理,這樣前臺可以操作其他命令,提高作業效率,
在命令后添加" &",&前有空格,則該命令將轉為后臺執行,并回傳一個行程 PID,但是如果命令有輸出,仍會輸出到螢屏,一般可以將輸出重定向到某個檔案,
使用快捷鍵 Ctrl + Z 可以掛起行程,后臺可見,
使用快捷鍵 Ctrl + C 可以終止行程,
使用命令 jobs 可以查看當前終端放入后臺的行程,
使用命令 bg 可以將后臺行程在后臺執行,
使用命令 fg 可以將后臺行程轉為前臺執行,
【后臺命令格式:】 命令 & 【jobs 格式:】 jobs [選項] 注: 選項: -l 列出所有行程并列出行程的 PID -p 只列出行程的 PID -r 只列出運行中的行程 -s 只列出停止的行程 【bg 格式:】 bg %N 注: 使用命令 bg %N 可以使掛起的第 N 個執行緒在后臺運行,若沒有 %N,則表示執行最后一個行程, 【fg 格式:】 fg %N 注: 使用命令 fg %N 可以使掛起的第 N 個執行緒在前臺運行,若沒有 %N,則表示執行最后一個行程, 注: 對于后臺運行的行程,仍會將結果輸出到控制臺,干擾作業, 所以如果后臺執行的行程有大量輸出,可以將其重定向到某個檔案, 比如: 想要后臺執行 find / -name "*" , 可以寫成 find / -name "*" > test.txt & 檔案名可以任意取,但是最好不要與目錄下的檔案重名, 【舉例:】 [root@localhost test]# find / -name "*" > test.txt &

12、crontab(設定定時任務調度)
任務調度指的是系統在某個時間執行特定的命令或程式,
可以查看組態檔 /etc/crontab.

【格式:】 crontab [選項] 注: 選項: -e 編輯定時任務,會打開一個空檔案,與 vim 操作一致, -l 查詢定時任務 -r 洗掉當前用戶所有定時任務 編輯格式說明: * * * * * 命令 其中: 第一個 * 號表示 分鐘(0 - 59), 第二個 * 號表示 小時(0 - 13), 第三個 * 號表示 月中的天數(1 - 31), 第四個 * 號表示 月(1 - 12), 第五個 * 號表示 星期(0 - 7, 其中 0 和 7 均表示星期天), 時間可以用特殊符號組合: 逗號 , 表示不連續的時間,比如 "1, 3, 7 * * * * 命令",表示每小時的 1, 3, 7 分鐘執行一次, 減號 - 表示連續時間,比如 "1-3 * * * * 命令",表示每小時的 1 到 3 分鐘執行一次命令, 除號 / 表示每隔多久執行一次,比如 "*/3 * * * * 命令",表示每隔 3 分鐘執行一次命令, 注意事項: 最小有效時間為 分鐘,最大有效時間為 月,即不能指定秒、年去執行, 5個時間以及命令不可省,不確定時間可以使用 * 表示任意時間, 日期與星期盡量不要同時設定,容易出錯, 【舉例:】 [root@localhost ~]# crontab -e [root@localhost ~]# crontab -l * * * * * /usr/bin/ll >> /root/test/hello.txt

若出現無法執行 crontab 任務的情況,排查錯誤,
Step1:查看語法是否正確,是否添加任務成功,
使用 crontab -e 編輯后,一般存放于 /var/spool/cron/用戶名 下,
* * * * * ll >> /root/test/hello2.txt

Step2:查看 crond 任務是否正常啟動,(一般開機自啟動,可選操作)
crond 服務是 crontab 的守護執行緒,
service crond status 查看 crond 的狀態
service crond start/stop/restart 啟動/停止/重啟 crond 服務

Step3:查看任務日志是否正確執行,(出現錯誤會發送郵件 Mail)
【查看任務執行日志】 tail -f /var/log/cron 可以不停的監聽檔案的變化 【查看郵箱:】 tail -f /var/spool/mail/root

Step4:修改錯誤即可,
[root@localhost test]# crontab -e * * * * * /usr/bin/ls >> /root/test/hello2.txt [root@localhost test]# crontab -l

Step5:如果執行沒效果,也沒有收到郵件,可以查看郵件是否配置有問題,找到 /etc/postfix/main.cf,修改里面的內容,
【編輯檔案:】 vim /etc/postfix/main.cf 【修改內容:】 inet_interfaces = all inet_protocols = all

Step6:重啟 postfix 服務
service postfix restart
service postfix status
Step7: 可能存在重啟 postfix 失敗的情況(視情況分析)
我遇到的情況是 缺少 libmysqlclient.so.18 依賴,查找 find / -name "*libmysqlclient.so.18*" , 確實不存在該檔案,
裝 mysql 的時候漏了,mysql-community-libs-compat-8.0.11-1.el7.x86_64.rpm,下載安裝后,成功解決,
二、用戶、用戶組管理
用于管理用戶,對于服務器而言,是由一個團隊進行維護,而不同的用戶所對應的權限應該是不同的,這樣可以提高安全性,
1、用戶、用戶組
(1)用戶
Linux 是多用戶多任務的作業系統,即 Linux 支持多個用戶同一時間登陸,
不同的用戶具備不同的操作權限,在權限內完成相應的任務,從而達到多用戶多任務的性能,
想要登陸 Linux,需要向系統管理員申請一個用戶名,這個用戶名是唯一的(UID號唯一),每個用戶分別對應自己的家目錄(家目錄一般為 /home/用戶名),
(2)用戶組
用戶組是具有相同特征的用戶的集合,可以簡化用戶的管理,
舉例:
對于某個檔案,某些用戶只有讀的權限,現在需要給用戶添加寫的權限,如何做?
方式一:可以一個用戶一個用戶的添加權限,但是如果用戶過于龐大,這樣效率太低,
方式二:可以增加一個用戶組,這個組對該檔案有寫的權限,將用戶歸于這個組,則用戶就擁有了寫的權限,之后通過操作用戶組,可以很方便的修改多個用戶的權限,
(3)用戶、用戶組之間的關系
一對一:即一個用戶對應一個用戶組,該用戶具備該組的權限,
一對多:即一個用戶對應多個用戶組,該用戶具備多個組的權限,
多對一:即多個用戶對應一個用戶組,這些用戶具備同一個組的權限,
多對多:即一個用戶可以存在多個用戶組中,一個用戶組可以存在多個用戶,
(4)UID、GID
UID 指的是用戶 ID,即 User ID,用于指明用戶,
GID 指的是組 ID,即 Group ID,用于指明用戶所屬的組,
2、組態檔
(1)/etc/passwd
是系統用戶的組態檔,存盤了系統中所有用戶的基本資訊,且所有用戶對其都有讀的權限,
【格式:】 用戶名:密碼:UID:GID:描述資訊:主目錄:默認shell 注: : 表示分隔符,沒有實際意義, 用戶名: 指代表用戶身份的字串, 密碼: x 表示用戶設有密碼,密碼存放在 /etc/shadow, UID: 即用戶 ID,范圍 0 ~ 65535. 0 表示系統管理員, 1 ~ 499 系統用戶, 500 ~ 65535 普通用戶, GID: 即初始組 ID,用于標識當前用戶存在于哪個組, 初始組:用戶創建的同時創建的組, 附加組:用戶切換的組(非初始組), 比如: root 用戶創建時產生一個 root 組,手動增加一個 user 組,并將 root 用戶添加到 user 組中, 那么 root 組即為初始組,user 組為附加組, 描述資訊:(可選) 描述用戶, 主目錄: 即用戶的家目錄,比如 root 的家目錄為 /root,普通用戶的家目錄為 /home/用戶名, 默認 shell : shell 是 Linux 的命令解釋器(默認 bash),即將命令轉換成機器語言,從而被計算機執行, /bin/bash 相當于正常用戶,可以使用命令列敲命令, /sbin/nologin 不能正常登陸系統,不可以使用命令列, 【舉例:】 [root@localhost ~]# cat /etc/passwd | grep root root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin

(2)/etc/shadow
用戶保存用戶的密碼,只有 root 用戶擁有讀權限,其余用戶不行,
若忘記 root 密碼,可以通過單用戶模式,利用 passwd 去修改密碼,
【格式:】 用戶名:加密的密碼:最后一次修改的時間:最小修改時間間隔:密碼有效期:密碼變更前的警告天數:密碼過期的寬限時間:賬號失效時間:保留欄位 注: : 表示分隔符,沒有實際意義, 用戶名: 指代表用戶身份的字串, 加密的密碼: 采用 SHA512 散列加密,* 或者 !! 表示需要密碼登陸, 最后一次修改的時間: 指的是從 1970年1月1日開始計算的天數, 最小修改時間間隔: 指的是密碼修改時間間隔,若為 0 表示隨時可以修改,若為 10 表示 10 天后才可修改, 密碼有效期: 默認為 99999 天,相當于長期有效, 密碼變更前的警告天數: 距離密碼過期的前 n 天,發送變更密碼的訊息, 密碼過期的寬限時間: 即密碼失效后,在 n 天內仍可以登陸,但之后就不能登陸了, 賬號失效時間: 從 1970年1月1日,開始計算,超過時間則賬號不能使用, 保留欄位: 保留, 【舉例:】 [root@localhost ~]# cat /etc/shadow | grep root root:$6$6GJnWVfg$Nu15dt6dcFscJ.HOPeHeh50aUiKjzqqQgSiTHwequ7AIWEidI5UyFvPXymyMXfLolT.czNsSEHnLYcABVnhes1:18346:0:99999:7:::

(3)/etc/group
用于存放組的資訊,
【格式:】 組名:密碼:GID:用戶串列(附加組) 注: : 表示分隔符,沒有實際意義, 組名: 用戶組名稱, 密碼: x 表示密碼,存放于 /etc/gshadow 中, GID: 用戶組 ID, 用戶串列: 列出每個組包含的用戶,若為初始組,則不顯示, 【舉例:】 [root@localhost ~]# cat /etc/group | grep root root:x:0:

(4)/etc/gshadow
用于存放組的密碼,
【格式:】 組名:加密密碼:組管理員:組用戶串列 注: : 表示分隔符,沒有實際意義, 組名: 用戶組名稱, 加密密碼: 為 空 表示沒有密碼(通常沒有密碼), 組管理員: 用于管理組(基本不用), 組用戶串列: 顯示用戶, 【舉例:】 [root@localhost ~]# cat /etc/gshadow | grep root root:::

3、useradd(添加用戶)
用戶添加用戶,
【格式:】 useradd [選項] 用戶名 注: 默認情況下, useradd 使用了很多選項內容,不用專門指定, 選項: -g 組名 指定初始組, -G 組名 指定附加組, -u UID 指定用戶 ID, -d /目錄 指定用戶家目錄(指明絕對路徑), -s shell 指定默認的shell(默認 /bin/bash), 【舉例:】 [root@localhost ~]# useradd jack [root@localhost ~]# cat /etc/passwd | grep jack [root@localhost ~]# cat /etc/shadow | grep jack [root@localhost ~]# cat /etc/group | grep jack [root@localhost ~]# cat /etc/gshadow | grep jack

4、passwd(修改用戶密碼)
用于指定用戶密碼、修改用戶密碼,
【格式:】 passwd [選項] 用戶名 注: 選項: -S 用于查看用戶密碼狀態,僅 root 用戶可用, -l 用于鎖定用戶(即密碼失效),不準用戶登錄,僅 root 用戶可用, -u 用于解鎖用戶(與 -l 對應),僅 root 用戶可用, 【舉例:】 [root@localhost ~]# passwd jack [root@localhost ~]# passwd -S jack

5、id、whoami、who am i(查詢用戶資訊)
id 用于顯示當前用戶、用戶組、以及組資訊,
whoami 用于顯示當前操作的用戶的名稱,
who am i 用于顯示當前登錄用戶的名稱,
【id 格式:】 id [選項] 用戶名 注: 選項: -un 顯示用戶名 -g 顯示用戶組 ID 【whoami 格式:(等價于 id -un)】 whoami 【who am i 格式:】 who am i 【舉例:】 [root@localhost ~]# id root [root@localhost ~]# whoami [root@localhost ~]# who am i

6、userdel(洗掉用戶)
用于洗掉用戶、用戶家目錄,
洗掉 /etc/passwd 等組態檔中相關資訊,
【格式:】 userdel [選項] 用戶名 注: 選項: -r 表示洗掉用戶的同時洗掉用戶家目錄, 【舉例:】 [root@localhost ~]# find / -user jack [root@localhost ~]# userdel jack

7、su(切換用戶)
用于實作多個用戶間來回切換,權限高的用戶切換到權限低的用戶,不需要密碼,反之需要,
使用 exit 退出切換的用戶,
【格式:】 su [選項] 用戶名 注: 選項: - 切換用戶,且同時切換作業環境(環境變數改變), 【舉例:】 [root@localhost ~]# su - lyh [lyh@localhost ~]$ exit

8、usermod(修改用戶資訊)
用于修改用戶、用戶組的相關資訊,
基本與 useradd 類似,是對 useradd 的一個補充,
【格式:】 usermod [選項] 用戶名 注: 選項: -c 修改用戶描述資訊,修改 /etc/passwd 檔案, -d 修改用戶的主目錄,修改 /etc/passwd 檔案, -u 修改用戶的用戶ID,修改 /etc/passwd 檔案, -g 組名 修改用戶的初始組,修改 /etc/passwd 檔案, -G 組名 修改用戶的附加組,即相當于將用戶加入其他組,修改 /etc/group 檔案,每次修改會覆寫掉之前的修改, -s 修改用戶的默認shell, 【舉例:】 [root@localhost ~]# usermod -G root lyh

9、groupadd(添加用戶組)
【格式:】 groupadd [選項] 組名 注: 選項: -g GID 指定用戶組 GID -r 創建系統用戶組 【舉例:】 [root@localhost ~]# groupadd testGroup1 [root@localhost ~]# groupadd -g 1010 testGroup2 [root@localhost ~]# groupadd -r testGroup3 [root@localhost ~]# cat /etc/group | grep testGroup*

10、groupdel(洗掉用戶組)
慎用,隨意洗掉用戶組可能導致系統不能正常運行,
【格式:】
groupdel 用戶組名
【舉例:】
[root@localhost ~]# groupdel testGroup1

11、groupmod(修改用戶組)
【格式:】 groupmod [選項] 組名 注: -g GID 修改組 ID -n 新組名 修改組名 【舉例:】 [root@localhost ~]# groupmod -g 1010 testGroup1 [root@localhost ~]# groupmod -n testGroup2 testGroup1

12、gpasswd(管理用戶組)
gpasswd 可以管理用戶組,交換控制權限、移除添加用戶等,
usermod 可以修改用戶的附加組,但每次修改都會移除上一次的修改記錄,但是使用 gpasswd 不會,
【格式:】 gpasswd [選項] 組名 注: 選項: -A user1,user2... 將組控制權限給 user1...等用戶,僅 root 操作 -M user1,,user2... 將 user1,user2... 加入組中 -a user 將用戶加入組 -d user 將用戶從組中移除 【舉例:】 [root@localhost /]# gpasswd -M jack1,jack2 testGroup2

三、檔案權限管理
所謂檔案權限管理,即針對不同的用戶設定不同的檔案訪問權限(讀、寫、執行),
比如:
一臺服務器由一個團隊在維護,如果每個人都用 root 權限,那么刪庫跑路等亂搞系統的事情難免發生,應該對不同的用戶,設定不同的檔案訪問權限,這樣才可以防止進行一些誤操作,
1、檔案權限分析
(1)可以使用 ls - l 查看檔案權限,
【格式:】 檔案型別、權限 目錄個數或者硬鏈接個數 用戶名 組名 檔案、目錄大小 最后修改日期 檔案、目錄名 【舉例:】 drwxr-xr-x. 2 root root 53 3月 24 17:38 test 分析: drwxr-xr-x 指的是檔案型別、權限,由 10 個字符組成, 其中 第一個字符: d 指的是 檔案型別(d 為目錄, - 為檔案, l 為鏈接,還有 b ,c, s等) 第二 ~ 四字符: rwx 指的是檔案擁有者的權限,即 User 的權限,r 表示可讀、w 表示可寫、x 表示可執行, 第五 ~ 七字符: r-x 指的是檔案所在組的權限,即 Group 的權限, 第八 ~ 十字符: r-x 指的是組外其他用戶對該檔案的權限,即 Other 的權限,

(2)檔案權限詳細分析:
檔案權限分三個部分,每個部分分別由三個字符組成(r, w, x), rwx r-x r-x rwx 對于目錄來說 r 表示可查看目錄(ls), w 表示可創建、洗掉、重命名目錄, x 表示可以進入該目錄, - 表示沒有該權限, rwx 對于檔案來說 r 表示可查看、讀取檔案, w 表示可修改檔案,但不一定能洗掉(只有目錄有 w 權限后才能洗掉), x 表示可以執行該檔案, - 表示沒有該權限, 可以通過數字表示檔案權限, r = 4, w = 2, x = 1. rwx r-x r-x 可以表示為 7 5 5, 檔案權限三部分分別為 : 檔案所屬用戶的權限 檔案所屬組的權限(也即組內其他用戶的權限) 組外其他用戶對該檔案的權限 【舉例:】 現有一個檔案夾 java,三個用戶 jack1, jack2, jack3,兩個組 testGroup1, testGroup2. 其中 jack1,jack2 屬于 testGroup1 組,jack3 屬于testGroup2 組, 修改 java 檔案夾用戶、用戶組,使檔案夾所屬用戶為 jack1,所屬用戶組為 testGroup1, 修改 java 檔案夾權限為 750,即 rwx r-x --- 則 jack1 擁有 rwx 權限,因為jack1 屬于檔案所屬用戶, jack2 擁有 r-x 權限,因為 jack2 不屬于檔案所屬用戶,但屬于 testGroup1 檔案組, jack3 擁有 --- 權限,因為 jack3 既不屬于檔案所屬用戶,也不屬于 testGroup1 檔案組,屬于其他用戶, [root@localhost test]# useradd -g testGroup1 jack1 [root@localhost test]# useradd -g testGroup1 jack2 [root@localhost test]# useradd -g testGroup2 jack3 [root@localhost test]# mkdir java [root@localhost test]# chmod 750 java [root@localhost test]# chown jack1:testGroup1 java

2、chgrp(修改檔案、目錄所屬的用戶組)
用于改變檔案、目錄所屬的用戶組,
用戶組不存在時會報錯,
【格式:】 chgrp [選項] 用戶組 檔案、目錄名 注: 選項: -v 顯示執行程序, -R 用于遞回處理,將目錄下的子目錄、檔案一起處理, 【舉例:】 [root@localhost test]# touch test.txt [root@localhost test]# groupadd testGroup1 [root@localhost test]# chgrp -v testGroup1 test.txt [root@localhost test]# ll

3、chown(修改檔案、目錄所屬的用戶、用戶組)
可以用于修改檔案、目錄所屬的用戶,也可以修改用戶組,
【格式:】 chown [選項] 用戶 檔案名 chown [選項] 用戶:用戶組 檔案名 注: 選項: -v 顯示處理流程, -R 表示遞回處理子目錄、檔案, 【舉例:】 [root@localhost test]# touch test.txt [root@localhost test]# chown lyh:testGroup1 test.txt [root@localhost test]# chown root test.txt [root@localhost test]# ll

4、chmod(修改檔案、目錄的權限)
手動修改檔案、目錄的權限,
【格式一:(數字形式)】 chmod [選項] 數字權限值 檔案 注: 選項: -v 顯示處理流程, -R 表示遞回處理子目錄、檔案, 數字權限值: rwx 4 + 2 + 1 = 7 r-x 4 + 0 + 1 = 5 r 4 + 0 + 0 = 4 【格式二:(字母形式)】 chmod [選項] 字母[+-=]權限字串 檔案 注: 選項: -v 顯示處理流程, -R 表示遞回處理子目錄、檔案, 字母: u 指 user,檔案所有者 g 指 group,檔案所在組 o 指 other,其他組的用戶 a 指 all,所有用戶 [+-=]: + 指增加權限 - 指洗掉權限 = 指設定權限 權限字串: rwx r-x r 【舉例:】 [root@localhost test]# touch test.txt [root@localhost test]# chmod -v 711 test.txt [root@localhost test]# chmod -v u-x,go+r test.txt

5、umask(修改檔案、目錄默認權限)
Linux 創建新的檔案、目錄時,會有一個默認的權限,使用 umask 可以獲取并修改,
對于 root 用戶,用戶默認權限為 0022,
對于 普通用戶,用戶默認權限為 0002,
對于檔案,最大默認權限為 666,即 rw- rw- rw-,默認任何用戶不能執行檔案,
對于目錄,最大默認權限為 777,即 rwx rwx rwx,
而計算公式一般為
檔案目錄默認權限 = (檔案、目錄最大的權限) - (用戶默認權限)
注:
此處 - 表示 移除,
舉例:
root 用戶,默認權限為 0022,即 --- -w- -w-,
此時創建的檔案默認權限為 (rw- rw- rw-) - (--- -w- -w-) = rw- r-- r--
此時創建的目錄默認權限為 (rwx rwx rwx) - (--- -w- -w-) = rwx r-x r-x
【格式:】 unmask 用于獲取當前用戶的默認創建權限值 unmask 權限值 用于設定當前用戶默認創建的權限值,重啟虛擬機失效,可在組態檔 /etc/profile 中修改,使其永久生效, 【舉例:】 [root@localhost test]# umask

6、lsattr(查看檔案、目錄的隱藏屬性)
用于顯示檔案、目錄的隱藏屬性,
【格式:】 lsattr [選項] 檔案、目錄名 注: 選項: -a 用于顯示當前目錄下的檔案、目錄的隱藏屬性,包括隱藏檔案,不顯示子目錄 -d 用于顯示當前目錄的隱藏屬性, -R 用于顯示當前目錄的子目錄的隱藏屬性, 【舉例:】 [root@localhost test]# lsattr -a java/ [root@localhost test]# lsattr -d java/ [root@localhost test]# lsattr -R java/

7、chattr(設定檔案、目錄的隱藏屬性)
root 用戶使用,
用于改變檔案的隱藏屬性,使檔案不可刪、不可修改等,
【格式:】 chattr [+-=][選項] 檔案、目錄 注: +-=: + 指添加 - 指移除 = 指設定 選項: i 作用于檔案,則檔案不可被修改,作用于目錄,目錄下不可增刪檔案,但可以修改檔案, a 作用于檔案,檔案只能追加資料,不能洗掉、修改資料,作用于目錄,只允許在目錄下創建、修改檔案,不能洗掉檔案, 【舉例:】 [root@localhost test]# chattr +i test.txt [root@localhost test]# lsattr test.txt

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/119072.html
標籤:Linux
