【linux】循序漸進學運維-用戶管理篇

小手一抖,點贊走起!

寫在前面:
博主是一名投身教培事業的標準八零後,叛逆而且追求自由,暱稱取自於蘇軾的《水調歌頭》中的“高處不勝寒”,時刻提醒自己要耐得住寂寞,受的了孤獨,在技術的道路上,不畏艱難,勇往直前。
我已經將全部的linux運維體系整理到了gitee上,內有福利: 點擊領取
歡迎star,投稿,交流,後續還會有python系列和java系列。

1. Linux下的用戶

Linux是一個多用戶的系統,我們可以多個用戶同時登陸Linux,在Linux中用戶有三種角色:

  • 超級用戶: root 擁有對系統的最高的管理權限 ID=0
  • 普通用戶:(普通用戶又包含系統用戶和本地用戶)
  • 系統用戶 UID:1-999(centos7版本) 1-499(centos6版本)
  • 本地用戶 UID:1000+

這個有個UID: 即每個用戶的身份標示,類似於每個人的身份證號碼.
虛擬用戶: 虛擬用戶:僞用戶 一般不會用來登錄系統的,它主要是用於維持某個服務的正常運行.如:ftp,apache

備註: 把Linux操作系統比作皇宮,root就相當於皇帝,系統用戶就是皇宮裏的太監,宮女,確保皇宮裏的一些設施(服務)正常運行,打掃庭院。
而本地用戶,就是外地官員或者大臣,偶爾被root授予尚方寶劍,可以行使皇帝的權利。
在這裏插入圖片描述

2. 配置文件

每個用戶有三個信息可以證明自己: 一個是配置文件,一個是用戶組文件,一個是用戶對應的密碼信息

名稱 賬號信息 說明
用戶配置文件 /etc/passwd 記錄每個用戶的基本屬性,並且對所有用戶可讀,每一行記錄一個用戶,每行記錄用冒號分割。
用戶組文件 /etc/group 用戶組的所有信息存放地
用戶對應密碼文件 /etc/shadow 用戶密碼單獨分離出來放在了shadow下,該文件只有root用戶擁有讀的權限。

3. 用戶管理

1) useradd

使用方法

使用方法: useradd -d -u “UID” -g “初始組” -s “/bin/bash” 用戶

參數:
-c comment 給新用戶添加備註 
-d home_dir 爲主目錄指定一個名字(如果不想用登錄名作爲主目錄名的話) 
-e expire_date 用YYYYY-MM-DD格式指定一個賬戶過期的日期 
-f inactive_days 指定這個帳戶密碼過期後多少天這個賬戶被禁用;0表示密碼一過期就立即禁 
用,-1表示禁用這個功能 
-g initial_group 指定用戶登錄組的GID或組名 
-G group ... 指定用戶除登錄組之外所屬的一個或多個附加組 
-k 必須和-m一起使用,將/etc/skel目錄的內容複製到用戶的HOME目錄 
-m 創建用戶的HOME目錄 
-M 不創建用戶的HOME目錄(當默認設置裏指定創建時,纔用到) 
-n 創建一個同用戶登錄名同名的新組 
-r 創建系統賬戶 
-p passwd 爲用戶賬戶指定默認密碼 
-s shell 指定默認登錄shell ,有時候禁止登陸使用/sbin/nologin
-u uid 爲賬戶指定一個唯一的UID 

useradd 命令背後發生了什麼?

  1. 創建一個唯一的UID
  2. 添加一個用戶名相同的用戶組和一個唯一的GID,並將用戶設置爲該組
  3. 在/home目錄下創建一個與用戶同名的目錄
  4. 設置shell爲/bin/bash
  5. 唯獨沒有設密碼,需要使用passwd設置
使用舉例:
  • 添加一個名爲gaosh的用戶,並使用bash作爲登陸的shell
[root@zmgaosh ~]# useradd gaosh
[root@zmgaosh ~]# tail -1 /etc/passwd
gaosh:x:1000:1000::/home/gaosh:/bin/bash

在這裏插入圖片描述
每一部分的作用:(文字版)

gaosh:用戶名
x:密碼佔位符
1001:用戶的UID,它都是用數字來表示的
1001:用戶所屬組的GID,它都是用數字來表示的
用戶描述信息:對用戶的功能或其它來進行一個簡要的描述
/home/goash:用戶主目錄(shell提示符中“~”代表的那個)
/bin/bash:用戶登錄系統後使用的shell,默認是/bin/bash
  • 創建用戶並指定用戶ID
[root@zmgaosh ~]# useradd -u 1111 xinsz08  # 創建用戶指定UID1111
[root@zmgaosh ~]# id xinsz08   #查看用戶所屬組,及uid和組ID信息
uid=1111(xinsz08) gid=1111(xinsz08)=1111(xinsz08)
[root@zmgaosh ~]# tail -1 /etc/passwd  #查看/etc/passwd新建用戶 
xinsz08:x:1111:1111::/home/xinsz08:/bin/bash
[root@zmgaosh ~]# ls /home/xinsz08/ -a  #查看家目錄默認模板
.  ..  .bash_logout  .bash_profile  .bashrc

  • 指定用戶的主目錄
[root@zmgaosh ~]# useradd -d /opt/xinsz xinsz
[root@zmgaosh ~]# ls -a /opt/xinsz/   #可以看到家目錄跑/opt/xinsz下了
.  ..  .bash_logout  .bash_profile  .bashrc
[root@zmgaosh ~]# tail -1 /etc/passwd
xinsz:x:1112:1112::/opt/xinsz:/bin/bash
  • 指定用戶的主組
    就相當於一個財務加到前臺組,讓財務偶爾也幹前臺
[root@zmgaosh ~]# useradd qiantai  #創建了一個前臺
[root@zmgaosh ~]# id qiantai
uid=1113(qiantai) gid=1113(qiantai)=1113(qiantai)  
[root@zmgaosh ~]# useradd -g qiantai caiwu # 把財務放在前臺的組裏
[root@zmgaosh ~]# id caiwu 
uid=1114(caiwu) gid=1113(qiantai)=1113(qiantai)  #可以看到財務屬於前臺組,萬一前臺請假,財務頂上幹前臺

2) adduser

adduser是創建用戶的另外一個命令,使用方法相同

[root@zmgaosh ~]#  which adduser
/usr/sbin/adduser
[root@zmgaosh ~]# ll /usr/sbin/adduser
lrwxrwxrwx 1 root root 7 4月  27 22:17 /usr/sbin/adduser -> useradd

由此可見,adduser是useradd的軟連接

3) 刪除用戶: usedel

選項: -r 匯聯通家目錄和/var/mail的目錄一同刪除
userdel 用戶名 皇帝下令斬立決

userdel -r 用戶名 皇帝下令斬立決並抄家滅族

[root@zmgaosh ~]# userdel -r xinsz08

4) 密碼文件

密碼文件放在/etc/shadow下:

[root@zmgaosh ~]# head -3 /etc/shadow
root:$6$SlVomD$EBjlGVUUOnCCk.lupiqnL58ESGeVJBNCvIc7IE6LNQ9J66OEhNSvlZQvk8EJkx6laSHDeDnuVN3NnJgqZxZid.:18430:0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::

同 /etc/passwd 文件一樣,文件中每行代表一個用戶,同樣使用 “:” 作爲分隔符,不同之處在於,每行用戶信息被劃分爲 9 個字段。每個字段的含義如下:

用戶名:加密密碼:最後一次修改時間:最小修改時間間隔:密碼有效期:密碼需要變更前的警告天數:密碼過期後的寬限時間:賬號失效時間:保留字段

1)每一段的具體含義如下:

  1. 賬戶名稱
  2. 加密後的密碼,如果這一欄的第一個字符爲!或者*的話,說明這是一個不能登錄的賬戶,從上面可以看出,ubuntu默認的就不啓用root賬戶。
  3. 最近改動密碼的日期(這個是從1970年1月1日算起的總的天數)
  4. 密碼不可被變更的天數:設置了這個值,則表示從變更密碼的日期算起,多少天內無法再次修改密碼,如果是0的話,則沒有限制
  5. 密碼需要重新變更的天數:如果爲99999則沒有限制
  6. 密碼過期預警天數
  7. 密碼過期的寬恕時間:如果在5中設置的日期過後,用戶仍然沒有修改密碼,則該用戶還可以繼續使用的天數
  8. 賬號失效日期,過了這個日期賬號就無法使用
  9. 保留的

2)給用戶添加密碼

方法1:

[root@zmgaosh ~]# useradd gaosh1 
[root@zmgaosh ~]# passwd gaosh1
更改用戶 gaosh1 的密碼 。
新的 密碼:
無效的密碼: 密碼未通過字典檢查 - 它沒有包含足夠的不同字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[root@zmgaosh ~]# 

方法2:

[root@zmgaosh ~]# echo 123456 |passwd --stdin gaosh2
更改用戶 gaosh2 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@zmgaosh ~]# 

這裏有個問題,如果兩個不同的用戶,他們的密碼一樣,在/etc/shadow中加密的hash值一樣嗎

  • 一樣
  • 不一樣
    很明顯這裏選不一樣,要不然太容易破解了

在這裏插入圖片描述

3) 這裏補充一下與用戶相關的命令:

命令 作用
id 用戶和組的信息
whoami 查看當前有效用戶名
who 顯示目前登入系統的用戶信息。
w 顯示已經登陸系統的用戶列表
users 用於顯示當前登錄系統的所有用戶的用戶列表

4. 修改用戶的信息

1)usermod

語法:usermod 【參數】用戶名
常用參數:
-u UID
-d 宿主目錄
-g 起始組
-G 附加組
-s 登錄shell
-L 鎖定

2) 舉例

修改UID
[root@zmgaosh ~]# id xinsz
uid=1112(xinsz) gid=1112(xinsz)=1112(xinsz)
[root@zmgaosh ~]# usermod -u 2222 xinsz
[root@zmgaosh ~]# id xinsz
uid=2222(xinsz) gid=1112(xinsz)=1112(xinsz)
[root@zmgaosh ~]# 

修改shell
[root@zmgaosh ~]# grep  xinsz /etc/passwd
xinsz:x:2222:1112::/opt/xinsz:/bin/bash
[root@zmgaosh ~]# usermod -s /sbin/nologin xinsz
[root@zmgaosh ~]# grep xinsz /etc/passwd   
xinsz:x:2222:1112::/opt/xinsz:/sbin/nologin   #可以看到變成了nologin
[root@zmgaosh ~]# 
更改用戶主目錄
[root@zmgaosh ~]# usermod -m -d /opt/xinsz1 xinsz
[root@zmgaosh ~]# grep xinsz /etc/passwd
xinsz:x:2222:1112::/opt/xinsz1:/sbin/nologin
#可以看到家目錄變成了/opt/xinsz1

5. 關於用戶管理常見的面試題

1) 查找當前系統下能夠登陸系統的用戶

[root@zmgaosh ~]# grep /bin/bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
gaosh:x:1000:1000::/home/gaosh:/bin/bash
qiantai:x:1113:1113::/home/qiantai:/bin/bash
caiwu:x:1114:1113::/home/caiwu:/bin/bash
sanwu:x:1115:1115::/home/sanwu:/bin/bash
sanwu1:x:1116:1116::/home/sanwu1:/bin/bash
gaosh1:x:1117:1117::/home/gaosh1:/bin/bash
gaosh2:x:1118:1118::/home/gaosh2:/bin/bash
[root@zmgaosh ~]# 

2) 統計當前系統下能夠登陸系統的用戶個數

[root@zmgaosh ~]# grep /bin/bash /etc/passwd |wc -l
8

3) 增加一個新用戶admin,權限是root

[root@zmgaosh ~]# grep admin /etc/passwd
admin:x:0:1119::/home/admin:/bin/bash

總結:

今年,我有一個夢想:

我在gitee上彙總了一份運維的知識體系,包含了運維大大小小的知識點,準備用一年的時間來完成寫作,目前正在進行,如果你有興趣,可以看一下gitee上的知識框架,然後加我微信報名一起來寫。

所有文章寫完後,我會錄製視頻,視頻收入會分給參與的小夥伴。
這份知識體系,是你從零基礎入行運維的不二選擇,歡迎小夥伴的加入夢想團隊。

白嫖不好,創作不易,各位的點贊就是勝寒創作的最大動力,我們下篇文章再見!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章