mycpen

Mycpen

记录学习历程与受益知识
github
telegram
bilibili

14_Linux基礎-用戶與組1

一。練習#

示例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

  • 多個賬戶可以屬於同一個組

image-20220812074315487

四。用戶和組的相關文件#

和賬戶相關文件

  • /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
  • 程序用戶的 UID1-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 號端口不一定起來

#注:數據請求和命令請求不是同一個端口的

image-20220812080812262


十. 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
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。