一。練習#
示例1
---------------------------------------------------------------------------------------------------------------------------------
menu(){
echo "1、監控內存使用情況,如果內存使用率大於百分之80,給予提醒"
echo "2、掃描局域網ip,檢查哪些ip地址正在使用"
echo "3、監控文件/etc/passwd是否被修改,每隔5分鐘監控一次"
echo "4、監控nginx進程是否存在,不存在就給予相應提醒"
}
option_1(){
total=`free -m|grep -i mem|tr -s " "|cut -d " " -f2`
#free=`free -m|grep -i mem|tr -s " "|cut -d " " -f4`
used=`free -m|grep -i mem|tr -s " "|cut -d " " -f3`
used_rate=`echo "scale=4;$used/$total" |bc`
#used_1=`echo "$total*0.8"|bc `
result=` echo "$used_rate>0.8"|bc `
#echo $result
if (( $result == 1 ))
then
echo -e "\e[31m使用率超過80%,請及時對內存擴容,以免不必要的損失\e[0m"
else
echo " nothing to do"
fi
}
option_2(){
for ip in `seq 255`
do
( ip_full=192.168.0.$ip
ping -c 1 $ip_full &>/dev/null && echo $ip_full >>up.txt || echo $ip_full >>down.txt
) & # 注:放到後台子進程執行
done
wait # 父進程等待子進程執行完成之後再退出
}
option_3(){
check_num=`diff /etc/passwd /lianxi/passwd |wc -l`
[[ check_num -eq 0 ]] && echo "文件未被修改" || echo "文件已被修改"
}
option_4(){
pidof nginx && echo "nginx is running" || echo "nginx is down"
}
menu
read -p "請輸入你的選擇:" option
case $option in
1)
option_1
;;
2)
option_2
;;
3)
option_3
;;
4)
option_4
;;
*)
echo "請輸入1-4"
esac
示例2:重複選擇
--------------------------------------------------------------------------------------------
重複選擇
while :
do
done
echo "#########################"
echo "1.查看內存使用率"
echo "2.掃描局域網ip"
echo "3.查看文件是否被修改"
echo "4.查看nginx進程"
echo "5.退出"
echo "#########################"
while :
do
read -p "請輸入你的選擇:" options
case $options in
1)
/root/shell/mem.sh
;;
2)
/root/shell/scan_ip.sh
;;
3)
/root/shell/passwd_test.sh
;;
4)
/root/shell/ngnix_test.sh
;;
5)
echo "退出"
exit
;;
*)
echo "1-4"
esac
done
--------------------------------------------------------------------------------------------
示例3:使用awk獲取
case $options in
1)
memory_monitor(){
total=`free -m |grep Mem |awk '{print $2}'`
used=`free -m |grep Mem |awk '{print $3}'`
use_rate=`echo "scale=2;$used/$total" |bc`
result=`echo "$use_rate>0.8" |bc`
if(( $result == 1 ))
then
echo "內存使用率大於80%!!!"
else
echo "內存使用狀態良好!"
fi
}
memory_monitor
;;
二. user group 用戶與組#
2.1 常見命令#
id 查看
useradd 創建
userdel 刪除
passwd 創建用戶密碼
su 切換用戶
usermod 更改用戶信息
2.2 為什麼要引入這個用戶和組?#
1、安全性
2、權限管理
3、資源管控
對文件的訪問,讀寫可以管控
對進程的管理 --> 誰可以管理
2.3 用戶和組#
每個用戶有一個唯一的 UID
每個組也有一個唯一的 GID一個用戶可以屬於不同組
一個組可以有不同用戶 # 注:多對多的關係用戶和組 --> 權限資源管控
用戶加入組,就可以有這個組的權限
默認情況下,創建用戶,會添加一個和用戶同名的組
[root@sanchuang-linux ~]# id chenpeng # 注:id查看用戶和組信息
uid=1030(chenpeng) gid=1030(chenpeng) 組=1030(chenpeng)
--------------------------------------------------------------------------------------------
[root@localhost ~]# useradd sanchuang
[root@localhost ~]# id sanchuang
uid=1000(sanchuang) gid=1000(sanchuang) 組=1000(sanchuang)
[root@localhost ~]# less /etc/passwd
[root@localhost ~]# less /home/sanchuang/
[root@localhost ~]# passwd sanchuang
更改用戶 sanchuang 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[sanchuang@localhost ~]$ # 注:登錄後默認位置為用戶家目錄(使用用戶sanchuang登錄)
[root@localhost ~]# less /etc/shadow # 注:shadow存放的是用戶的密碼信息
[root@localhost ~]# less /etc/shadow
shadow shadow-
[root@localhost ~]# less /etc/passwd
passwd passwd-
[root@localhost ~]# diff /etc/passwd /etc/passwd- # 注:passwd-備份文件,每次都會少一個最新的操作
21d20 # 注:可以回滾上個版本
< sanchuang:x:1000:1000::/home/sanchuang:/bin/bash
[root@localhost ~]# diff /etc/shadow /etc/shadow- # 注:shadowd-備份文件,每次都會少一個最新的操作
21d20 # 注:可以回滾上個版本
< sanchuang:$6$dKQsah/D$6sm6owwvDEnVs8BclDWQZ7meYSaMf5Y7AofxzxwxO0PPrvzqHHVCer1G656iY2gE.sUOarUl9beKi2usYdATQ1:18571:0:99999:7:::
[root@localhost ~]# less /etc/group # 注:存放組信息
[root@localhost ~]# less /etc/gshadow # 注:存放組密碼信息
[root@localhost ~]# cd /home/sanchuang/ # 注:新建用戶,有三個隱藏文件
[root@localhost sanchuang]# ls
[root@localhost sanchuang]# ls -al # 注:新建用戶帳號時,從 /etc/skel 目錄中複製而來
總用量 12
drwx------. 2 sanchuang sanchuang 62 11月 5 10:25 .
drwxr-xr-x. 3 root root 23 11月 5 10:25 ..
-rw-r--r--. 1 sanchuang sanchuang 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 sanchuang sanchuang 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 sanchuang sanchuang 231 4月 1 2020 .bashrc
[root@localhost sanchuang]# cd /etc/skel/ # 注:模板,拷貝一份過去
[root@localhost skel]# ls -al
總用量 24
drwxr-xr-x. 2 root root 62 10月 6 16:33 .
drwxr-xr-x. 77 root root 8192 11月 5 10:27 ..
-rw-r--r--. 1 root root 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 root root 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 root root 231 4月 1 2020 .bashrc
[root@localhost skel]# less /etc/login.defs # 注:關於賬戶的設置信息
# Min/max values for automatic uid selection in useradd
#
UID_MIN 1000 # 注:最多可以創建59000個用戶
UID_MAX 60000
# System accounts
SYS_UID_MIN 201
SYS_UID_MAX 999
CREATE_HOME yes # 注:創建家目錄
ENCRYPT_METHOD SHA512 # 注:指定用什麼方式加密用戶密碼
[root@localhost skel]# ls /etc/group # 注:組也有備份文件
group group-
[root@localhost skel]# ls /etc/gshadow
gshadow gshadow-
[root@localhost spool]# cd /var/spool/mail/ # 注:郵件目錄
[root@localhost mail]# ls # 注:/var/spool/mail/ 下創建一個同名的文件
sanchuang
[sanchuang@localhost ~]$ less /etc/shadow # 注:普通用戶沒有權限查看 /etc/shadow存放密碼信息
/etc/shadow: 權限不夠 # 注:只有root用戶可讀
2.4 用戶創建牽扯到哪些文件#
賬戶信息相關文件
-
/etc/passwd --> 存放用戶相關信息的
-
/etc/shadow --> 存放用戶密碼
-
/etc/passwd- 和 /etc/shadow- 這是 /etc/passwd 和 /etc/shadow 的備份文件,總是比原文件少一次操作
組相關文件
-
/etc/group --> 存放組信息的
-
/etc/gshadow --> 存放組密碼的
-
/etc/group- 和 /etc/gshadow- 備份文件
用戶環境默認設置
- 創建用戶時,會拷貝 /etc/skel/ 下的文件到用戶的家目錄
用戶的家目錄
- 默認情況下會在 /home 目錄下創建一個同名文件夾
用戶默認屬性設置文件
- /etc/login.defs
郵件目錄
- /var/spool/mail/ 下創建一個同名的文件
2.5 /etc/passwd 文件詳解#
[root@localhost mail]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
sanchuang:x:1000:1000::/home/sanchuang:/bin/bash
·使用:分隔
·字段1:用戶名
·字段2:密碼佔位符,通常為“x”或者“*”(因為這個文件誰都可讀,所以真正的密碼存放在/etc/shadow)
·字段3:用戶id # 注:-u指定
·字段4:用戶所屬基本組id # 注:-g指定基本組
·字段5:用戶描述信息 # 注:新建用戶沒有 沒有設置一般沒有 (-c選項)
·字段6:家目錄 # 注:家目錄的絕對路徑 (-d選項)
·字段7:登錄shell的信息
示例
--------------------------------------------------------------------------------------------
[root@localhost ~]# ls -ld /etc/shadow
----------. 1 root root 2330 11月 5 20:51 /etc/shadow # 注:普通用戶/組 無法讀取執行
[root@localhost ~]# ls -ld /etc/passwd
-rw-r--r--. 1 root root 2006 11月 5 20:51 /etc/passwd
#注:通過yum安裝的 配置文件一般放在/etc 下
2.6 練習:找出系統中 uid 大於 1000 的用戶,顯示出它的名字,UID,家目錄,shell#
找出系統中 uid 大於 1000 的用戶,顯示出它的名字,UID,家目錄,shell
[root@sanchuang-linux ~]# awk -F: '$3>1000{print $1,$3,$6,$7}' /etc/passwd
chenpeng 1030 /home/chenpeng /bin/bash
#注:使用cat和直接使用awk消耗內存差不多
#注:語法:awk 選項 ‘模式+動作’ 文件 # 注:不接模式的話 全文截取
2.7 練習:找出 /etc/passwd 中有幾種 shell 信息#
找出 /etc/passwd 中有幾種 shell 信息
2.8 useradd 詳解#
Shell設置
[root@sanchuang-linux ~]# awk -F: '{print $7}' /etc/passwd |sort|uniq # 注:排序去重
/bin/bash # 注:系統默認用戶的shell環境信息 --> 正常使用的shell
/bin/sync # 注:將內存里的緩存刷新到磁碟 --> 類似於Python中fp.flush()
/sbin/halt # 注:登錄就關機
/sbin/nologin # 注:用戶不能登錄(不允許登錄)
/sbin/shutdown # 注:登錄就關機
--------------------------------------------------------------------------------------------
#注:關機至強最會執行以下sync,將內存里的緩存刷新到磁碟
[root@localhost ~]# sync
--------------------------------------------------------------------------------------------
#注:使用which命令查看命令的絕對路徑
[root@localhost ~]# which sync
/usr/bin/sync
敲sync會按照PATH變量的路徑下向下找下去
執行一個/bin/bash 就會到我們現在的終端環境了
三。用戶和組的關係#
-
每個賬戶有一個唯一的 UID
-
每個組也有一個唯一的 GID
-
多個賬戶可以屬於同一個組
四。用戶和組的相關文件#
和賬戶相關文件
- /etc/passwd、/etc/shadow
和組相關文件
- /etc/group、/etc/gshadow
賬戶宿主目錄中文件來源
- 新建用戶帳號時,從
/etc/skel
目錄中複製而來 # 注:初始化用戶家目錄
默認賬戶的屬性文件
- /etc/login.defs
用於保存用戶的帳號基本信息
-
文件位置:
/etc/passwd
-
每一行對應一個用戶的帳號記錄
-
字段 1:用戶帳號的名稱
-
字段 2:用戶密碼字串或者密碼佔位符 “
x
” -
字段 3:用戶帳號的 UID 號
-
字段 4:所屬基本組帳號的 GID 號
-
字段 5:用戶描述信息
-
字段 6:家目錄
-
字段 7:登錄 Shell 信息
五。用戶和組的相關文件#
用戶賬戶:
- 超級用戶
root
- 程序用戶
- 普通用戶
UID (User Identity,用戶標識號)
- 超級用戶 root 的 UID 為
0
- 程序用戶的 UID
1-999
- 普通用戶的 UID 大於等於
1000
六。添加與刪除用戶#
useradd 命令
- 格式:
useradd [選項]... 用戶名
常用命令選項
-u:指定 UID 標記號
-d
:指定宿主目錄,缺省為/home/用戶名
-e
:指定帳號失效時間-g
:指定用戶的基本組名(或 GID 號)-G
:指定用戶的附加組名(或 GID 號)- -M:不為用戶建立並初始化宿主目錄
-s
:指定用戶的登錄 Shell- -c:用戶注釋描述信息
- -r: 新建系統用戶,不會有新建家目錄
#注:每次新建用戶,uid 都會在上個用戶 uid 基礎上 + 1
#注:默認新建用戶從 1001 開始
Shell 設置
/bin/bash # 注:系統默認用戶的shell環境信息 --> 正常使用的shell
/bin/sync # 注:將內存里的緩存刷新到磁碟 --> 類似於Python中fp.flush()
/sbin/halt # 注:登錄就關機
/sbin/nologin # 注:用戶不能登錄,ssh和su都不能登錄
/sbin/shutdown # 注:登錄就關機
示例:-s /sbin/nologin
--------------------------------------------------------------------------------------------
#注:本機用來跑服務的,不能登錄
[root@localhost mail]# useradd -s /sbin/nologin sanchuang2
[root@localhost mail]# echo 123456|passwd sanchuang2 --stdin
更改用戶 sanchuang2 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@localhost mail]# ssh sanchuang2@192.168.136.136 #注:ssh 登錄本機sanchuang2
……………………………………
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.136.136' (ECDSA) to the list of known hosts.
sanchuang2@192.168.136.136's password:
This account is currently not available. # 注:提示用戶不可達,因為sanchuang2的Shell是nologin,不能直接登錄
Connection to 192.168.136.136 closed.
[root@localhost ~]# su - sanchuang2 # 注:不能切換
上一次登錄:四 11月 5 11:49:14 CST 2020從 192.168.136.136pts/2 上
This account is currently not available.
--------------------------------------------------------------------------------------------
[root@localhost ~]# usermod -s /bin/bash sanchuang2 # 注:usermod -s 更改用戶的shell信息
[root@localhost ~]# cat /etc/passwd|grep sanchuang2
sanchuang2:x:1001:1001::/home/sanchuang2:/bin/bash
練習:顯示出系統中 uid 大於 1000 並且用戶名包含 sanchuang 的用戶信息(用戶名,用戶 Id,用戶家目錄)#
顯示出系統中 uid 大於 1000 並且用戶名包含 sanchuang 的用戶信息(用戶名,用戶 Id,用戶家目錄)
[root@localhost ~]# awk -F: '$3>1000{print $1,$3,$6}' /etc/passwd
sanchuang2 1001 /home/sanchuang2
方法1
[root@localhost ~]# awk -F: '$3>1000{print $1,$3,$6}' /etc/passwd |grep sanchuang
sanchuang2 1001 /home/sanchuang2
方法2
[root@localhost ~]# awk -F: '$3>1000 && $1 ~ /sanchuang/{print $1,$3,$6}' /etc/passwd
sanchuang2 1001 /home/sanchuang2 # 注:$1 ~ /sanchuang/ 匹配sanchuang
七。進程#
進程:正在運行中的程序
程序:代碼集合,放在磁碟上的
進程是計算機進行資源分配的基本單位
進程的組成核心:進程控制塊(PCB)
PCB 一般包括
1、pid 進程唯一標識符
2、有效用戶信息 -euid,egid (通常情況下就是 uid,gid) # 注:就是進程屬於哪個用戶
3、程序的狀態
4、程序的優先級
5、程序的上下文
八. Python 中使用 os 模塊查看當前進程的用戶信息#
Python 中使用 os 模塊查看當前進程的用戶信息
>>> import os
>>> os.geteuid() # 注:獲取當前進程用戶的用戶uid信息
0 # 注:為0的都是root用戶 root用戶的uid
>>> os.getuid() # 注:通常情況下,uid和euid都是一樣的
0
--------------------------------------------------------------------------------------------
普通用戶導入 os模塊
[sanchuang2@localhost ~]$ python3
>>> import os
>>> os.geteuid()
1001
>>> os.getuid()
1001
[sanchuang2@localhost ~]$ id sanchuang2
uid=1001(sanchuang2) gid=1001(sanchuang2) 組=1001(sanchuang2)
九. ftp 協議(文件傳輸協議)#
9.1#
vsftpd 服務與本地用戶
ftp 的服務 做文件傳輸的,上傳或下載一個文件到指定的地方
ftp 是一個文件傳輸服務,主要用於上傳和下載文件,實現文件共享
匿名用戶和本地用戶都可以登錄 ftp 服務,它們登錄進去之後只能操作家目錄下的文件或者文件夾
三種用戶:
1、匿名用戶
2、本地用戶 # 注:ftp 傳輸可以使用 linux 本地用戶;ssh 登錄也可以用本地用戶
3、虛擬用戶
============================================================================================
1、服務安裝
[root@sanchuang-linux ~]# yum install vsftpd
--------------------------------------------------------------------------------------------
2、啟動服務
[root@sanchuang-linux ~]# service vsftpd restart
Redirecting to /bin/systemctl restart vsftpd.service
[root@sanchuang-linux ~]# ps -ef |grep vsftp # 注:默認root用戶啟動
root 3377 1 0 14:51 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 3379 3184 0 14:52 pts/1 00:00:00 grep --color=auto vsftp
--------------------------------------------------------------------------------------------
3、安裝客戶端
#注:centos8里vsftpd服務默認不允許匿名用戶登錄
使用匿名用戶(ftp)登錄的話,修改/etc/vsftpd/vsftpd.conf里的配置 anonymous_enable=YES
#注:修改完配置文件重啟vsftpd服務
登錄上去之後,默認讀取系統中ftp這個用戶的家目錄文件
-----------------------------------------------------
[root@sanchuang-linux ~]# yum install lftp -y # 注:lftp是vsftpd的客戶端
[root@sanchuang-linux ~]# yum install ftp -y # 注:ftp也是vsftpd的客戶端
#注:這兩個都是ftp的客戶端
============================================================================================
[root@sanchuang-linux ~]# lftp ftp@192.168.0.27 # 注:以ftp用戶去登錄程序
密碼: # 注:ftp是默認用戶
[root@localhost ~]# ftp 192.168.136.136 # 注:登錄ftp服務
………………………………
Name (192.168.136.136:root): ftp # 注:匿名用戶ftp登錄
331 Please specify the password.
Password: # 注:回車
230 Login successful.
………………………………
ftp>
============================================================================================
[root@sanchuang-linux ~]# cat /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin # 注:vsftpd的匿名用戶,公共用戶
#注:/var/ftp ftp這個用戶的家目錄文件
============================================================================================
[root@sanchuang-linux ~]# vim /etc/vsftpd/vsftpd.conf # 注:Centos8中開啟匿名用戶允許登錄
anonymous_enable=YES # 注:centos7不用設置
#注:修改完配置文件重啟vsftpd服務
============================================================================================
登錄上去之後,默認讀取系統中ftp這個用戶的家目錄文件
/var/ftp
-----------------------------------------------------
[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# ls
pub
[root@localhost ftp]# cd pub
[root@localhost pub]# ls # 注:/var/ftp/pub/下為空
[root@localhost pub]# touch aa bb # 注:創建文件aa bb
--------------------------------------------------------------------------------------------
ftp> ls # 注:當前路徑 /var/ftp
…………………………
drwxr-xr-x 2 0 0 26 Nov 05 07:20 pub
ftp> cd pub
…………………………
ftp> ls # 注:顯示出文件aa bb
…………………………
-rw-r--r-- 1 0 0 0 Nov 05 07:20 aa
-rw-r--r-- 1 0 0 0 Nov 05 07:20 bb
226 Directory send OK.
--------------------------------------------------------------------------------------------
ftp> get aa # 注:下載文件
local: aa remote: aa
…………………………
ftp> !ls # 注:查看當前所在系統命令有哪些文件
aa addstr.py
ftp> !pwd # 注:查看當前所在系統命令路徑
/root
#注:匿名用戶不能上傳
============================================================================================
[root@localhost ~]# ftp 192.168.136.136
Name (192.168.136.136:root): sanchuang # 注:本地用戶sanchuang登錄
Password:
230 Login successful. # 注:230 代表登錄成功
--------------------------------------------------------------------------------------------
ftp> put first.py # 注:上傳文件
local: first.py remote: first.py # 注:匿名用戶不能上傳
…………………………
1097 bytes sent in 0.0157 secs (69.83 Kbytes/sec)
ftp> ls
…………………………
-rw-r--r-- 1 1000 1000 1097 Nov 05 07:34 first.py
226 Directory send OK.
============================================================================================
[root@localhost pub]# less /etc/services # 注:# less /etc/services 查看默認端口號
ftp 21/tcp # 注:ftp服務默認是21號端口
ftp 21/udp fsp fspd
9.2 匿名用戶和本地用戶都可以登錄 ftp 服務,它們登錄進去之後只能操作家目錄下的文件或者文件夾#
匿名用戶和本地用戶都可以登錄 ftp 服務,它們登錄進去之後只能操作家目錄下的文件或者文件夾
三種用戶:
1、匿名用戶 # 注:匿名用戶 ftp ; 無需密碼;家目錄 /var/ftp ; ftp 也是系統的本地用戶,系統自動創建 ftp 用戶,nologin,可以通過 ftp 登錄
2、本地用戶 # 注:就是 linux 系統上的用戶;ftp 登錄之後在本地用戶家目錄下
3、虛擬用戶 # 注:建立出一個虛擬的用戶,映射到本地用戶
#注:/etc/passwd 第 6 個字段 是用戶的家目錄
#注:看用戶的家目錄 看 /etc/passwd 文件
9.3 ftp 常用命令#
ftp 常用命令
ftp 常用命令:
上傳文件:put # 注:匿名用戶不能上傳
下載文件:get
查看:ls
切換路徑:cd
9.4* ftp 的 2 種工作模式#
ftp 的 2 種工作模式(面試)
問的時候:總結(要提到端口號)
主動模式和被動模式都會開啟 21 號端口進行連接
區別是數據連接的方式
主動模式:服務器主動開啟 20 號端口去和客戶機主動建立數據連接,傳輸數據
被動模式:客戶機拿到隨機開放端口後向服務器進行一個數據傳輸,客戶端向這個隨機端口去建立連接,進行數據傳輸
一、主動模式(默認情況下是主動模式)
1、客戶端登錄時請求 ftp 服務器 命令連接端口(21 號端口)
2、21 號端口返回信息登錄成功或者登錄失敗
3、登錄成功後客戶端請求傳輸數據(對 21 號端口發起一個請求),開啟一個隨機端口
4、服務器主動開啟它的 20 號端口去把它的數據傳遞給客戶端的隨機端口
服務器主動開啟 20 號端口,向客戶機主動發送數據
二、被動模式
1、客戶端登錄時請求 ftp 服務器 開啟 命令連接端口(21 號端口)
#注:21 號端口都是用來做命令連接的
2、21 號端口返回信息登錄成功或者登錄失敗
3、客戶機請求數據傳輸(客戶機向服務器請求數據傳輸時,向服務器發送一個 pasv 命令,告訴服務器端要以被動模式取接收命令。這時服務器端就開放一個端口,可以指定範圍,返回給客戶機,把這個端口號返回給客戶機)
4、收到服務器開放端口號
5、開始連接服務器端口,進行數據傳輸(和 5555 號端口建立連接)
假設開放的是 5555,服務器就會把 5555 端口起來,端口處於監聽狀態,別人就可以連接過來,就可以和這個主機建立連接,就可以通過 5555 號端口傳遞數據
#注:被動模式需要配置,默認主動模式
無論主動模式,還是被動模式,21 號端口都必須起來
主動模式 20 號端口起來,被動模式 20 號端口不一定起來
#注:數據請求和命令請求不是同一個端口的
十. usermod userdel#
usermod#
usermod 命令
格式:usermod [選項]... 用戶名
常用命令選項
- -l:更改用戶帳號的登錄名稱
- -L:鎖定用戶賬戶
- -U:解鎖用戶賬戶
- 以下選項與 useradd 命令中的含義相同
-u、-d、-e、-g、-G、-s
userdel#
userdel 命令
- 格式:
userdel [-r] 用戶名
- 添加 -r 选项时,表示连用户的宿主目录一并删除 # 注:建議接上
示例
--------------------------------------------------------------------------------------------
[root@localhost ~]# useradd stu01
[root@localhost ~]# ls -ld /home/stu01/
drwx------ 2 stu01 stu01 4096 09-09 12:38 /home/stu01/
[root@localhost ~]# userdel -r stu01 # 注:刪除用戶帳號stu01
[root@localhost ~]# ls -ld /home/stu01/
ls: /home/stu01/: 沒有那個文件或目錄
十一. useradd#
useradd 命令
- 格式:
useradd [選項]... 用戶名
常用命令選項
-u:指定 UID 標記號
-d
:指定宿主目錄,缺省為/home/用戶名
-e
:指定帳號失效時間-g
:指定用戶的基本組名(或 GID 號) # 注:基本組只能有一個-G
:指定用戶的附加組名(或 GID 號) # 注:附加組可以用很多個 無論基本組 / 附加組 用戶都可以獲得所有權限- -M:不為用戶建立並初始化宿主目錄
-s
:指定用戶的登錄 Shell- -c:用戶注釋描述信息
- -r: 新建系統用戶,不會有新建家目錄
十二。用戶#
12.1#
用戶賬戶:
- 超級用戶
root
# 注:擁有最高權限 - 程序用戶 # 注:程序運行過程中需要使用的用戶
- 普通用戶 # 注:手動創建的用戶
UID (User Identity,用戶標識號)
- 超級用戶 root 的 UID 為
0
- 程序用戶的 UID
1-999
- 普通用戶的 UID 大於等於
1000
示例:mysql uid
--------------------------------------------------------------------------------------------
[root@localhost ~]# id mysql
uid=1000(mysql) gid=1000(mysql) 組=1000(mysql)
[root@localhost ~]# id sanchuang2
uid=1001(sanchuang2) gid=1001(sanchuang2) 組=1001(sanchuang2)
示例
--------------------------------------------------------------------------------------------
#注:默認情況不指定uid 在上個用戶前+1
[root@localhost ~]# useradd -u 1100 chenpeng1 # 注:指定用戶id
[root@localhost ~]# id chenpeng1
uid=1100(chenpeng1) gid=1100(chenpeng1) 組=1100(chenpeng1)
[root@localhost ~]# useradd -u 1101 -g 1100 chenpeng2 # 注:指定用戶id、基本組
[root@localhost ~]# id chenpeng2 # 注:在chenpeng1這個組裡面
uid=1101(chenpeng2) gid=1100(chenpeng1) 組=1100(chenpeng1)
示例
--------------------------------------------------------------------------------------------
[root@localhost ~]# usermod -u 1200 chenpeng2 # 注:修改用戶id
[root@localhost ~]# id chenpeng2
uid=1200(chenpeng2) gid=1100(chenpeng1) 組=1100(chenpeng1)
示例
--------------------------------------------------------------------------------------------
[root@localhost ~]# useradd -d /var/log/sanchuang6 sanchuang6 # 注:指定用戶家目錄
[root@localhost ~]# cd /var/log/sanchuang6/
[root@localhost sanchuang6]# ls
[root@localhost sanchuang6]# less /etc/passwd
sanchuang6:x:1201:1201::/var/log/sanchuang6:/bin/bash # 注:第6列 用戶家目錄
示例:指定附加組
--------------------------------------------------------------------------------------------
[root@localhost sanchuang6]# useradd -g chenpeng1 -G sanchuang,sanchuang2 sanchuang7
[root@localhost sanchuang6]# id sanchuang7
uid=1202(sanchuang7) gid=1100(chenpeng1) 組=1100(chenpeng1),1000(sanchuang),1001(sanchuang2)
#注:基本組chenpeng1 附屬組 sanchuang sanchuang2
#注:-g指定基本組 -G指定附加組
============================================================================================
·-c:用戶注釋描述信息
/etc/passwd 第5列可以查看描述信息
12.2 userdel 刪除用戶#
userdel 命令
格式:userdel [-r] 用戶名
添加 -r 选项时,表示连用户的宿主目录一并删除
示例1
--------------------------------------------------------------------------------------------
[root@localhost ~]# useradd stu01
[root@localhost ~]# ls -ld /home/stu01/
drwx------ 2 stu01 stu01 4096 09-09 12:38 /home/stu01/
[root@localhost ~]# userdel -r stu01 # 注:刪除用戶帳號stu01
[root@localhost ~]# ls -ld /home/stu01/
ls: /home/stu01/: 沒有那個文件或目錄
示例2
--------------------------------------------------------------------------------------------
[root@localhost sanchuang6]# userdel sanchuang7
[root@localhost sanchuang6]# less /etc/passwd # 注:刪除了
[root@localhost sanchuang6]# cd /home/sanchuang7 # 注:沒刪
[root@localhost sanchuang7]# ls /var/spool/mail/sanchuang7 # 注:沒刪
/var/spool/mail/sanchuang7
十三. usermod 用戶修改#
usermod 命令
格式:usermod [選項]... 用戶名
常用命令選項
- -l:更改用戶帳號的登錄名稱
- -L:鎖定用戶賬戶
- -U:解鎖用戶賬戶
- 以下選項與 useradd 命令中的含義相同
-u、-d、-e、-g、-G、-s
示例:-L:鎖定用戶賬戶
--------------------------------------------------------------------------------------------
#注:鎖上之後不能密碼登錄
#注:本質就是在shadow密碼前面加一個!號,使得登錄的時候密碼驗證失敗
[root@localhost sanchuang7]# id sanchuang6
uid=1201(sanchuang6) gid=1201(sanchuang6) 組=1201(sanchuang6)
[root@localhost sanchuang7]# usermod -L sanchuang6 # 注:鎖定用戶賬戶
[root@localhost sanchuang7]# less /etc/shadow # 注:密碼密文前面加了1個感嘆號
chenpeng2:!$6$P3yFUy.H$UOfUIbl8V3h1ng4J/OdVV1aWc3Cx3s5bldkysl33aDyrigsgK0VQ3nzrC4mojDNotpE9w61NbVQmZFqDDRfpl.:18571:0:99999:7:::
[root@localhost sanchuang7]# diff /etc/shadow /etc/shadow-
25c25
< chenpeng2:!$6$P3yFUy.H$UOfUIbl8V3h1ng4J/OdVV1aWc3Cx3s5bldkysl33aDyrigsgK0VQ3nzrC4mojDNotpE9w61NbVQmZFqDDRfpl.:18571:0:99999:7:::
---
> chenpeng2:$6$P3yFUy.H$UOfUIbl8V3h1ng4J/OdVV1aWc3Cx3s5bldkysl33aDyrigsgK0VQ3nzrC4mojDNotpE9w61NbVQmZFqDDRfpl.:18571:0:99999:7:::
#注:sha512加密技術 密文 明文
--------------------------------------------------------------------------------------------
[root@localhost ~]# ssh chenpeng2@192.168.0.188
chenpeng2@192.168.0.188's password: # 注:鎖上之後不能密碼登錄
Permission denied, please try again.
…………………………
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
十四. /etc/shadow#
用於保存密碼字串、密碼有效期等信息
-
文件位置:
/etc/shadow
# 注:存放用戶密碼的文件,只能 root 用戶查看 -
每一行對應一個用戶的密碼記錄
-
字段 1:用戶帳號的名稱
-
字段2:加密的密碼字串信息
# 注:字段 2 就是存放密碼的字段存放的密碼是加密的 密文,sha512 算法加密 -
字段 3:上次修改密碼的時間
-
字段 4:密碼的最短有效天數,默認值為 0
-
字段 5:密碼的最長有效天數,默認值為 99999
-
字段 6:提前多少天警告用戶口令將過期,默認值為 7
-
字段 7:在密碼過期之後多少天禁用此用戶
-
字段 8:帳號失效時間,默認值為空
-
字段 9:保留字段(未使用)
十五. passwd#
passwd 命令
- 格式:
passwd [選項]... 用戶名
常用命令選項
- -d:清空用戶的密碼,使之無需密碼即可登錄
- -l:鎖定用戶帳號
- -S:查看用戶帳號的狀態(是否被鎖定)
- -u:解鎖用戶帳號
- --stdin:接收別的命令 stdout 做為 stdin 標準輸入設置密碼
root用戶可以修改所有用戶密碼,不要求複雜性
普通用戶只能改自己的密碼,要求複雜性
示例
--------------------------------------------------------------------------------------------
[root@localhost sanchuang7]# passwd -d sanchuang6 # 注:清空用戶密碼
清除用戶的密碼 sanchuang6。
passwd: 操作成功
[root@localhost sanchuang7]# useradd sanchuang5 # 注:註冊 未給密碼
[root@localhost mail]# less /etc/shadow
sanchuang6::18571:0:99999:7::: # 注:清除用戶密碼,密碼字段為空
sanchuang5:!!:18571:0:99999:7::: # 注:未給密碼 密碼字段默認2個感嘆號
#usermod和passwd鎖定賬戶都是修改賬戶的shadow加密字段信息,使他們登錄的時候密碼匹配不上,達到一個鎖定狀態
#usermod -L 加一個!號 # 注:鎖定用戶在shadow密碼字段前加一個!號
#passwd -l 加兩個!號 # 注:鎖定用戶在shadow密碼字段前加兩個!號
#注:查看用戶有沒有設置密碼 看/etc/shadow信息
示例:usermod -L 和 passwd -l 鎖定用戶
--------------------------------------------------------------------------------------------
[root@localhost mail]# useradd chen001
[root@localhost mail]# useradd chen002
[root@localhost mail]# useradd chen003
[root@localhost mail]# echo 123456|passwd chen001 --stdin
[root@localhost mail]# echo 123456|passwd chen002 --stdin
[root@localhost mail]# echo 123456|passwd chen003 --stdin
[root@localhost mail]# usermod -L chen002 # 注:chen002做 usermod -L 操作
[root@localhost mail]# passwd -d chen003 # 注:chen003做 passwd -d 操作
清除用戶的密碼 chen003。
passwd: 操作成功
[root@localhost mail]# less /etc/shadow
chen001:$6$y……k1q.yk8U1gOGp/:18571:0:99999:7:::
chen002:!$6$u……YF0.:18571:0:99999:7:::
chen003::18571:0:99999:7:::
------------------------------------------------------------------------
[root@localhost ~]# ssh chen003@192.168.136.136 # 注:登錄不上去
chen003@192.168.136.136's password:
…………
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[root@localhost ~]# ssh chen002@192.168.136.136 # 注:登錄不上去
chen002@192.168.136.136's password:
…………
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[root@localhost ~]# ssh chen001@192.168.136.136 # 注:沒做操作的 遠程登錄成功
chen001@192.168.136.136's password:
[chen001@localhost ~]$
十六. /etc/group#
/etc/group
字段一:組名
字段二:密碼字段
字段三:組 id
字段四:存放是當前組為附屬組時,有哪些用戶
示例
--------------------------------------------------------------------------------------------
[root@localhost ~]# less /etc/group
tech:x:200:b1,b2,a1,a2