M20 – 1- 第三周博客(1):Linux用戶、組

Linux是個多用戶多任務的分時操作系統,因此要使用系統資源的用戶都必須先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。用戶的賬號一方面能幫助系統管理員對使用系統的用戶進行跟蹤,并控制他們對系統資源的訪問與限制,并為用戶提供安全性保護。每個用戶賬號都擁有一個惟一的用戶名(UID)和用戶口令(PASSWD)。用戶在登錄時鍵入正確的用戶名和口令后,才能進入系統和自己的主目錄。

實現用戶賬號的管理,要完成的工作主要有如下幾個方面:

  1. 用戶賬戶的添加、刪除、管理

  2. 用戶口令的管理

  3. 用戶以及組的管理

一、Linux用戶的添加、刪除、管理

1、Linux用戶的添加

Linux如何添加用戶呢,添加用戶后如何認證呢

Linux添加用戶自帶著兩個命令useradd和adduser,接下來將的是如何使用命令創建用戶

useradd 命令

簡介:
useradd - create a new user or update default new user information
格式:
useradd [options] LOGIN
useradd -D
useradd -D [options]
選項:
-c"COMMENT":用戶的注釋信息,例如用戶的家庭地址、電話、公司地址等
-d HOME_DIR:指定的用戶的家目錄,必須事先不存在
-g GID:指明用戶所屬基本組,可為命名為組名或GID
-G GROUP1[,GROUP2,...]:為用戶指明附加組,組必須事先存在
-N:不創建私用組做主組,使用users組做主組
-u uid:設置用戶的ID值。必須為唯一的ID值,除非用-o選項。數字不可為負值。預設為最小不得小于99而逐次增加。0~99傳統上是保留給系統帳號使用
-o:配合-u 選項,不檢查UID的唯一性
-r: 創建系統用戶(CentOS 6: ID<500,CentOS 7: ID<1000)
-s SHELL:指明用戶的默認使用的shell程序;可用列表在/etc/shells文件
實例1:
[root@centos7 ~]# useradd -c "new" -d /home/gentoo -u 1055 -s /bin/sh gentoo  #創建普通用戶gentoo,設置uid號為1055,并且設置注釋為“new”,并指定家目錄為路徑為/home/gentoo,使用shell類型為/bin/sh
[root@centos7 ~]# id gentoo
uid=1055(gentoo) gid=1055(gentoo) groups=1055(gentoo)
實例2:
[root@centos7 ~]# useradd -c "system" -r -s /bin/bash -d /home/nginx nginx  #創建系統用戶nginx,并設置注釋為“system”,并指定家目錄為路徑為/home/nginx,使用shell類型為/bin/bash
[root@centos7 ~]# id nginx
uid=991(nginx) gid=986(nginx) groups=986(nginx)
實例3
[root@localhost ~]# id gentoo
uid=1055(gentoo) gid=1055(gentoo) groups=1055(gentoo)
[root@localhost ~]# useradd -G gentoo hardoop    #創建普通用戶hardoop,并將gentoo組作為hardoop的附加組
[root@localhost ~]# id hardoop
uid=1056(hardoop) gid=1056(hardoop) groups=1056(hardoop),1055(gentoo)

adduser命令實際是一個軟鏈接,引用useradd創建用戶

[root@localhost ~]# whereis adduser
adduser: /usr/sbin/adduser /usr/share/man/man8/adduser.8.gz
[root@localhost ~]# ls -ld /usr/sbin/adduser 
lrwxrwxrwx. 1 root root 7 Aug  3  2016 /usr/sbin/adduser -> useradd
[root@localhost ~]#

從上面的講解是否已經對創建用戶得心應手了呢,接下來講的是介紹安全3A,為什么要講3A呢,因為并不是創建用戶后就能使用系統的資源,那又跟3A有什么關系呢,接下來就是了解3A:

安全3A

Authentication(認證):對用戶的身份進行驗證

Authorization(授權):用戶認證后,可以系統上使用那些權限

Accouting|Audition(審計):用戶權限后做了哪些操作,都是有監控和記錄的

為了更方便理解3A的概念,接下來講個例子:假設你在某國企上班,你上班需要進入辦公室,這時就需要出示你的工牌,這就是認證(Authentication),當你認證后進入辦公室后,并登錄你
的辦公電腦系統后,系統會識別該用戶對該系統有哪些資源可以使用,那些是不能使用,這就是授權(Authorization),接下來是你在使用資源后,系統會每時每刻監控你的操作記錄,這就是
審計(Accouting|Audition)。

2、用戶的刪除

當有些員工辭職后,會留下用戶的一些信息,而這些信息對公司有著一些至關重要的機密,因此需要將用戶的信息刪除,如何刪除用戶的信息,接下來將的就是刪除用戶信息的命令:

userdel 命令

簡介:
userdel - delete a user account and related files
格式:
userdel [options] LOGIN
選項:
-r:刪除用戶家目錄
實例1:
[root@localhost ~]# man userdel
[root@localhost ~]# id gentoo
uid=1055(gentoo) gid=1055(gentoo) groups=1055(gentoo)
[root@localhost ~]# userdel gentoo
userdel: group gentoo not removed because it has other members.  #因為沒有使用-r選項,導致沒有刪除用戶的家目錄,以及mail郵箱目錄
[root@localhost ~]# id gentoo                                    #但是用戶確實已經刪除了
id: gentoo: no such user
[root@localhost ~]# ls -ld /home/gentoo
drwx------ 3 1055 gentoo 74 Aug  3 20:00 /home/gentoo
[root@localhost ~]# ls -l /var/spool/mail/gentoo 
-rw-rw---- 1 1055 mail 0 Aug  3 20:00 /var/spool/mail/gentoo
實例2:
[root@localhost ~]# 
[root@localhost ~]# id centos
uid=1001(centos) gid=1001(centos) groups=1001(centos),1003(admin)
[root@localhost ~]# userdel -r centos             #直接使用-r選項即可刪除用戶的家目錄和和mail郵箱目錄,建議刪除用戶使用-r選項
[root@localhost ~]# id centos
id: centos: no such user
[root@localhost ~]# ls -l /home/
total 0
drwx------  5 a       a       121 Aug  3 16:35 a
drwx------  5 b       a       121 Aug  3 16:35 b
drwx------  3    1055 gentoo   74 Aug  3 20:00 gentoo
drwx------  3 hardoop hardoop  74 Aug  3 20:10 hardoop
drwx------. 3 mageedu mageedu  74 Aug  3  2016 mageedu
[root@localhost ~]# ls -l /var/spool/
total 4
drwxr-x--x.  2 root   abrt      6 Dec  1  2015 abrt
drwx------.  2 abrt   abrt      6 Dec  1  2015 abrt-upload
drwxr-xr-x.  2 root   root     60 Aug  3  2016 anacron
drwx------.  3 daemon daemon   29 Aug  3  2016 at
drwx------.  2 root   root      6 Jul 27  2015 cron
drwx--x---.  3 root   lp       16 Aug  3  2016 cups
drwxr-xr-x.  2 root   root      6 Aug 12  2015 lpd
drwxrwxr-x.  2 root   mail     73 Aug  3 21:00 mail
drwxr-xr-x.  2 root   root      6 Nov 20  2015 plymouth
drwxr-xr-x. 16 root   root   4096 Aug  3  2016 postfix

是不是覺得刪除用戶特簡單呢

3、用戶賬戶的管理

是否覺得在創建用戶的時候,創建用戶的信息以及密碼還有一起創建出來的組信息等都放置在那個目錄呢,接下來將的就是用戶的管理信息:

當管理員在創建用戶的時候,用戶的信息以及密碼實際存放在passwd命令的配置文件中,配置文件為"/etc/passwd"和"/etc/share"下,下面是講的是兩個配置文件的詳解:

/etc/passwd里面的格式為:(直接man 5 passwd 即可查看格式)

以冒號為分隔符

name:password:UID:GID:GECOS:directory:shell
用戶名:密碼:用戶的uid:用戶的基本組id:用戶的注釋信息:用戶的家目錄:用戶使用的shell

/etc/share里面的格式為:(直接man 5 shadow 即可查看格式)

以root為樣板

root:$6$4w4LEKnT$zOs9se3YgGE.5mPA4u.pTR9/Wl7mItDe8gYKUG7zIWdpHshP6wCvvHQkWgzevTYGqNc2KP7TyvqyZIiYDxGNs.:17016:0:99999:7:::
用戶名:加密了的密碼:最近一次更改密碼的日期:密碼的最小使用期限:最大密碼使用期限:密碼警告時間段:密碼禁用期:賬戶過期日期:保留字段

4、用戶的密碼以及其它屬性更改

用戶平常會有丟失密碼的情況,這時可以用超級管理員更改用戶的密碼即可再次登陸,如何更改用戶的密碼呢,接下來講的是更改用戶的密碼以及用戶的屬性

passwd 命令

簡介:
passwd - update user's authentication tokens
格式:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
選項:
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-iinactivedays:非活動期限
--stdin:從標準輸入接收用戶密碼;echo "PASSWORD" | passwd--stdinUSERNAME
實例1:
[root@localhost ~]# id centos
uid=1057(centos) gid=1057(centos) groups=1057(centos)
[root@localhost ~]# passwd centos       #更改用戶centos密碼(只有root才能更改別人用的密碼)
Changing password for user centos.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.   #提示更改成功
實例2
[root@localhost ~]# echo "1234567" | passwd --stdin "centos"   #此種方式也能更改用戶的密碼,這種方式容易暴露密碼(在實際生產環境中,建議不適用此種方法改密)
Changing password for user centos.
passwd: all authentication tokens updated successfully.
[root@localhost ~]#

usermod 命令

簡介:
usermod - modify a user account
格式:
usermod [options] LOGIN
選項:
-u UID:更改uid號
-g GID:更改用戶的基本組
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項,表示append
-s SHELL:更改用戶的默認SHELL
-c 'COMMENT':更改用戶的注釋信息
-d HOME:新家目錄不會自動創建,原家目錄中的文件不會同時移動至新的家目錄;若要創建新家目錄并移動原家數據,同時使用-m選項
-l login_name:更改用戶的名稱
-L:lock指定用戶,在/etc/shadow 密碼欄的增加
-U:unlock指定用戶,將/etc/shadow 密碼欄的! 拿掉
-e YYYY-MM-DD:指明用戶賬號過期日期
-f INACTIVE:設定非活動期限
實例1:
[root@localhost ~]# getent passwd centos
centos:x:1057:1057::/home/centos:/bin/bash
[root@localhost ~]# id centos
uid=1057(centos) gid=1057(centos) groups=1057(centos)
[root@localhost ~]# usermod -u 1058 -g hardoop -G mageedu -c 'system' -s /bin/sh -l 'apache' centos  #更改用戶的uid為1058、基本組為hardoop,覆蓋附加組為mageedu,注釋信息更改為‘system’,shell更改為/bin/sh,并更改用戶的名稱為apache
[root@localhost ~]# id centos  #已經更改為apache,因此查詢不到
id: centos: no such user
[root@localhost ~]# id apache
uid=1058(apache) gid=1056(hardoop) groups=1056(hardoop),1000(mageedu)  #已經顯示更改成功
[root@localhost ~]# getent passwd apache   #已經顯示更改成功
apache:x:1058:1056:system:/home/centos:/bin/sh
實例2:
[root@localhost ~]# id apache
uid=1058(apache) gid=1056(hardoop) groups=1056(hardoop),1000(mageedu)
[root@localhost ~]# usermod -aG nginx,mysql apache  #將組nginx、mysql添加為apache的附加組
[root@localhost ~]# id apache
uid=1058(apache) gid=1056(hardoop) groups=1056(hardoop),27(mysql),1000(mageedu),986(nginx)  #以顯示添加成功,附加組有多個的話,由,分隔

chage 命令

簡介:
chage - change user password expiry information
格式:
chage [options] LOGIN
選項:
-d:上一次更改的日期
-E:帳號到期的日期,過了這天,此帳號將不可用    
-I:停滯時期。如果一個密碼已過期這些天,那么此帳號將不可用    
-m:密碼可更改的最小天數,為零時代表任何時候都可以更改密碼    
-M:密碼保持有效的最大天數  
-W:用戶密碼到期前,提前收到警告信息的天數
-l:顯示密碼策略
實例1:
[root@localhost ~]# chage -l apache
Last password change					: Aug 03, 2016   #最近一次密碼修改時間
Password expires					: never          #密碼過期時間
Password inactive					: never          #密碼失效時間
Account expires						: never          #帳戶過期時間
Minimum number of days between password change		: 0              #兩次改變密碼之間相距的最小天數 
Maximum number of days between password change		: 99999          #兩次改變密碼之間相距的最大天數
Number of days of warning before password expires	: 7              #在密碼過期之前警告的天數

blob.png

5、用戶相關的其他命令

chfn 命令

簡介:
chfn - change your finger information
格式:
chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [username]
選項:
-f:設置真實姓名
-h:設置家中的電話號碼
-o:設置辦公室的地址
-p:設置辦公室的電話號碼
-u --help:在線幫助
-v -version:顯示版本信息
實例1:
[root@localhost ~]# chfn
Changing finger information for root.
Name [apache]: tom 
Office []:       
Office Phone []: ^C
[root@localhost ~]# chfn
Changing finger information for root.
Name [apache]: tom  
Office []: mageedu
Office Phone []: 110
Home Phone []: 119

Finger information changed.

chsh 命令

簡介:
chsh - change your login shell
格式:
chsh - change your login shell
選項:
-s --shell:更改系統預設的shell環境
-l --list-shells:列出目前系統可用的shell清單
-u --help:在線幫助
-v -version:顯示版本信息
實例1
[zabbix@localhost ~]$ chsh
Changing shell for zabbix.
New shell [/bin/bash]: /bin/sh
Password: 
Shell changed.

finger 命令

簡介:
finger — user information lookup program
格式:
finger [-lmsp] [user ...] [user@host ...]
選項:
-l:列出該用戶的帳號名稱,真實姓名,用戶專屬目錄,登入所用的Shell,登入時間,轉信地址,電子郵件狀態,還有計劃文件和方案文件內容
-m:排除查找用戶的真實姓名
-s:列出該用戶的帳號名稱,真實姓名,登入終端機,閑置時間,登入時間以及地址和電話
-p:列出該用戶的帳號名稱,真實姓名,用戶專屬目錄,登入所用的Shell,登入時間,轉信地址,電子郵件狀態,但不顯示該用戶的計劃文件和方案文件內容
實例1:
[root@localhost ~]# finger
Login     Name       Tty      Idle  Login Time   Office     Office Phone
root      tom        tty1     6:42  Aug  3 15:53 mageedu    110
root      tom        pts/0          Aug  3 15:56 (10.1.250.48)
root      tom        pts/1      39  Aug  3 15:59 (10.1.250.48)

6、用戶的其他信息

Linux用戶中是否uid是無限制的呢,其實是有限制的,下面將的是與用戶一些相關信息:

6.1、 Linux用戶:Username/UID

管理員:root, 0

普通用戶:1-65535

系統用戶:1-499(CENTOS6), 1-999

   對守護進程獲取資源進行權限分配

登錄用戶:500(CENTOS6)+, 1000+

   交互式登錄

6.2、Linux用戶的配置文件

/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)

/etc/shadow:用戶密碼及其相關屬性

6.3、密碼加密

加密機制:

加密:明文--> 密文
解密:密文--> 明文

單向加密:

哈希算法:原文不同,密文必不同,相同算法定長輸出,獲得密文不可逆推出原始數
雪崩效應:初始條件的微小改變,引起結果的巨大改變
md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha256: 256bits
sha384: 384bits
sha512: 512bits

更改加密算法

authconfig--passalgo=sha256 --update

6.4、密碼的復雜性策略

(1)使用數字、大寫字母、小寫字母及特殊字符中至少3種
(2)足夠長
(3)使用隨機密碼
(4)定期更換;不要使用最近曾經使用過的密碼

6.5、用戶的配置文件操作

使用vipw和pwck命令更改用戶的"/etc/passwd"和"/etc/share"文件,可以檢測更改的語法是否有錯

6.7、普通用戶提權的三種方式

(1)將普通用戶的UID更改

(2)將普通用戶加入到某個有權限組中

(3)利用su命令切換到超級管理員賬號執行

實例1:
[root@localhost ~]# man su
[root@localhost ~]# id centos
id: centos: no such user
[root@localhost ~]# id zabbix
id: zabbix: no such user
[root@localhost ~]# useradd zabbix   #創建普通用戶zabbix
[root@localhost ~]# id zabbix
uid=1001(zabbix) gid=1001(zabbix) groups=1001(zabbix)
[root@localhost ~]# usermod -ou 0 zabbix   #更改普通用戶的的uid為0
[root@localhost ~]# id zabbix
uid=0(root) gid=0(root) groups=0(root)     #因此查詢zabbix用戶,顯示為root,實際原因為系統只識別10,而人識別的是用戶的名稱,因此顯示的是0
[root@localhost ~]# getent passwd zabbix   
zabbix:x:0:1001::/home/zabbix:/bin/bash
[root@localhost ~]# ls -l /home/ /var/spool/mail/   #但是zabbix原先的家目錄以及郵箱實際還存在,這是一種提權的方法(建議:實際生產環境中不適用)
/home/:
total 0
drwx------. 3 mageedu mageedu 74 Aug  3  2016 mageedu
drwx------  3 root    zabbix  74 Aug  3 16:02 zabbix

/var/spool/mail/:
total 0
-rw-rw----. 1 mageedu mail 0 Aug  3  2016 mageedu
-rw-rw----. 1 rpc     mail 0 Aug  3  2016 rpc
-rw-rw----  1 root    mail 0 Aug  3 16:02 zabbix
實例2:
[root@localhost ~]# id nginx         
id: nginx: no such user
[root@localhost ~]# useradd nginx     #創建普通用戶nginx
[root@localhost ~]# usermod -G root nginx     #設置nginx用戶添加附加組root,而Linux系統中的很多文件,屬組都是root組
[root@localhost ~]# id nginx
uid=1001(nginx) gid=1002(nginx) groups=1002(nginx),0(root)   #顯示添加成功
[root@localhost ~]#
實例3:
su 命令
簡介:
su - run a command with substitute user and group ID
格式:
su [options...] [-] [user [args...]]

切換用戶的方式:
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄
su - UserName:登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換

注意:root su至其他用戶無須密碼;非root用戶切換時需要密碼

換個身份執行命令:
su [-] UserName -c 'COMMAND'
su - l UserName 相當于su-UserName

[nginx@localhost ~]$ whoami
nginx
[nginx@localhost ~]$ su - root   #切換到超級管理員root下執行操作,需要輸入root密碼
Password: 
[root@localhost ~]#

[nginx@localhost ~]$ su - root -c "getent passwd nginx"   #不登錄超級管理員root,而是用root用戶執行命令操作,需要輸入root密碼
Password: 
nginx:x:1001:1002::/home/nginx:/bin/bash
[nginx@localhost ~]$

原創文章,作者:Aleen,如若轉載,請注明出處:http://www.www58058.com/28199

(0)
AleenAleen
上一篇 2016-08-03
下一篇 2016-08-04

相關推薦

  • 正則表達式及其用法

    正則表達式及其用法 1.   什么是正則表達式 正則表達式是Global search REgular expression and Print out the line的縮寫。是一類用字符所書寫的模式,其中許多字符并不表示其字面意義,而是表達控制或通配等功能。 在Linux中,用正則表達式搜索文本的常用命令: grep: 使用基本正則表…

    Linux干貨 2015-09-14
  • 選擇判斷專題腳本編程_第九周練習

    Q1:寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # declare -i y=0 declare -i n=0 for i in $(cut…

    Linux干貨 2016-12-25
  • 馬哥教育網絡班21期-第一次課程作業

    計算機組成部分及其作用 1.總線 電子管道,攜帶信息字節并在各個部件間傳輸。分為地址總線,數據總線,控制總線。 CPU最大可尋址范圍:2^N*M,  N為地址總線數量,M為數據總線數量。 2.I/O設備 I/O設備及輸入輸出設備,最常見的輸入設備就是我們非常熟悉的鍵盤,鼠標,我們通過我們通過這些設備向計算機傳達指令,讓計算機完成我們想要它完成的工作…

    Linux干貨 2016-06-29
  • gitlab-ce白名單設置杜絕并發數過大引起的封ip故障

    gitlab-ce 7.9安裝手札以及上篇文章的問題解決 鳴謝 感謝ruby大神===》章魚的一路指點,才能撥開迷霧見云天! 章魚大人:     國內Ansible部落原創翻譯之一!     資深運維!     ROR大神!  &…

    Linux干貨 2015-09-06
  • 利用keepalived實現nginx七層負載均衡器雙主模型高可用集群

    nginx通過ngx_http_upstream_module可以實現七層http服務的負載均衡,同時還自帶RS的健康監測功能,但是也有弊端,nginx負載均衡器如果發生故障則整個集群失效,此文通過keepalived構建nginx負載均衡器的高可用集群。 一、實驗環境: 實驗需要4臺服務器: nginx負載均衡器1:192.168.11.100 nginx…

    2017-07-03
  • vim編輯器的用法

    vim編輯器的用法 1、vi的基本概念     vi可以分為三種模式,分別是命令模式(command mode)、輸入模式(Insert mode)和末行模式(last line mode),各模式的功能如下:     1) 命令行模式command mode)         …

    Linux干貨 2015-09-14
欧美性久久久久