3、用戶和用戶組

1、一些概念
1.安全3A算法

  • Authentication :認證 (密碼、指紋等)
  • Authorization : 受權
  • Accouting|Audition :審計 (時候審計,監控)

2.用戶usershell

  • 令牌 token, identity

用戶登陸系統,成功後,系統會分配給用戶一個令牌token,在該用戶訪問系統中的文件時,文件會審覈這個令牌來決定是否給予權限訪問該文件。要想得到最新的token,從新登陸。vim

  • Linux用戶:username、UID (Linux中用戶權限看UID)
  管理員:root,0
  普通用戶:1-65535
      系統用戶:1-4991-999(centos7)通常指各個進程
      登陸用戶:500+,1000+(centos7)

3.組groupcentos

Linxu組:Groupname、GID
管理員組:root,0
  普通組
    系統用戶:1-4991-999(centos7)通常指各個進程
    登陸用戶:500+,1000+(centos7)

4.Linux安全上下文(context)
進程所可以訪問資源的權限取決於進程的運行者的身份(用戶身份,用戶組身份)。即程序可否訪問某個文件是由用戶身份決定的而非程序自己。安全

5.group組的類別bash

  • 用戶的主要組(primary group)
    • 用戶必須屬於一個且只有一個主要組
    • 組名同用戶名,且僅包含一個用戶,又稱私有組
  •   用戶的附加組(supplementary group)
    •   一個用戶能夠屬於0個或多個附加組

即,一個用戶能夠加入多個組,該用戶的權限是組權限的累加;一個組也能夠擁有多個用戶less

2、用戶和組的配置文件
1./etc/passwd 用戶及其屬性信息(名稱、UID/主組id等)
  cat /etc/passwdssh

以最後一行songtai爲例:ide

login name:登陸用名(songtai)
passwd:密碼(x)
UID:用戶身份編號(500)
GID:登陸默認所在組編號(501)
GECOS:用戶全名或註釋
home directory:用戶主目錄(/home/wang)
shell:用戶默認使用shell (/bin/bash)

說明:ui

1.幫助文檔: man 5 passwd
2.可用chfn命令添加修改第5行的信息
3.uid爲1-499的爲系統程序進程,最後的shell類型爲/sbin/nologin,給程序服務使用的shell,用於建立給服務用的帳號,其能夠限制某些用戶經過ssh登錄到shell上。
4.chsh -s /bin/csh songtai songtai帳號更改shell爲csh
5.第二列x爲密碼,其信息記錄在/etc/shadow文件下

2./etc/group 組及其屬性信息
  cat /etc/group

man 5 group 幫助文檔
group_name:the name of the group
password: the (encrypted) group password. If this field is empty, no password is needed.
GID:the numerical group ID.
附加組名單user_list:a list of the usernames that are members of this group, separated by commas.附加組的用戶列表,用「,」隔開

注意:對一個正在登錄中的用戶,對其修改組等相關信息並不會實時更改,須要從新登錄(背後原理:token令牌原理,只有從新登錄系統纔會分配其一個最新的令牌,其拿着新的令牌纔有訪問一些配置文件的權限)

3./etc/shadow 用戶密碼及其相關屬性
  cat /etc/shadow

從左至右:

  用戶名:加密了的密碼:最近一次更改密碼的日期:密碼的最小使用期限:最大密碼使用期限:密碼警告時間段:密碼禁用期:用戶過時日期:保留字段

一、登錄用名
二、用戶密碼:通常用sha512加密
  !!:表示帳號鎖定(useradd sst命令新增的sst用戶的密碼就是這種狀況)
  解鎖方法:
  ①nano /etc/shadow 將sst用戶第二列的兩個!!刪除掉,這樣便可登陸;
  ②usermod -U sst 表示sst這個用戶解鎖一個!,連續操做兩次。(centos6和7 已不支持此類操做)
  ③passwd -e username 表示將第三列的數值變爲默認0,意味着下次登陸時必須更改密碼(也即讓當前口令失效)或chage -d 0 username 效果同passwd -e username
三、從1970年1月1日起到密碼最近一次被更改的時間
   echo `date +%s`/3600/24 | bc #表示目前距1970年1月1日的天數

當第三列數值爲0時表示用戶再下一次登錄時須修改密碼 四、密碼再過幾天能夠被變動(0表示隨時可被變動)
五、密碼再過幾天必須被變動(99999表示永不過時)
六、密碼過時前幾天系統提醒用戶(默認爲一週) 七、密碼過時幾天後賬號會被鎖定
八、從1970年1月1日算起,多少天后賬號失效

        

4./etc/gshadow 組密碼及其相關屬性
cat /etc/gshadow

共四列:
羣組名稱:就是羣組名稱
羣組密碼:
組管理員列表:組管理員的列表,更改組密碼和成員
以當前組爲附加組的用戶列表:(分隔符爲逗號)

 

相關文件操做處理命令
vipw (與nano /etc/passwd 相同,但具有語法檢查功能,vi=vim)

pwck 檢查passwd文件語法

vigr (與nano /etc/passwd 相同,但具有語法檢查功能,vi=vim)

grpck 檢查group文件語法

 

5. /etc/default/useradd 新建用戶時默認的一些默認屬性配置文件夾

1 GROUP=100 #默認的user組的 GID 
2 HOME=/home #默認的家目錄
3 INACTIVE=-1
4 EXPIRE= #默認帳戶有效期
5 SHELL=/bin/bash #默認使用的shell
6 SKEL=/etc/skel #默認的一些模板文件夾 (新建帳號的模板文件夾)
7 CREATE_MAIL_SPOOL=yes #默認容許建立郵箱文件夾

注意:可用useradd -D命令可顯示或更改默認設置
useradd -D -s SHELL 修改shell類型6
useradd -D -g GROUP 修改默認組

6./etc/skel 默認文件夾相關
每次新建用戶時,都會將此文件夾複製到新建用戶的家目錄下。默認只有3個環境配置文件,能夠修改這裏面的內容,或者添加幾個文件在該文件目錄中,之後新建用戶時就會自動獲取到這些環境和文件。

ll -a /etc/skel/
-rw-r--r--. 1 root root 18 Apr 11 2018 .bash_logout
-rw-r--r--. 1 root root 193 Apr 11 2018 .bash_profile
-rw-r--r--. 1 root root 231 Apr 11 2018 .bashrc

注意:由於刪除/etc/skel目錄下的文件出現的問題,咱們從新複製一個完整的文件進去便可解決。

 

7.cat /etc/login.defs 密碼的默認配置文件
設置用戶賬號限制的文件。該文件裏的配置對root用戶無效。
若是/etc/shadow文件裏有相同的選項,則以/etc/shadow裏的設置爲準,也就是說/etc/shadow的配置優先級高於/etc/login.defs。
該文件有不少配置項,文件的默認內容只給出了一小部分,若想知道所有的配置項以及配個配置項的詳細說明,能夠"man 5 login.defs"查看。

 1 less /etc/login.defs
 2 #QMAIL_DIR Maildir # QMAIL_DIR是Qmail郵件的目錄,因此能夠不設置它
 3 MAIL_DIR /var/spool/mail # 默認郵件根目錄,即信箱
 4 #MAIL_FILE .mail # mail文件的格式是.mail
 5 
 6 # Password aging controls:
 7 PASS_MAX_DAYS 99999 # 密碼最大有效期(天)
 8 PASS_MIN_DAYS 0 # 兩次密碼修改之間最小時間間隔
 9 PASS_MIN_LEN 5 # 密碼最短長度
10 PASS_WARN_AGE 7 # 密碼過時前給警告信息的時間
11 
12 # 控制useradd建立用戶時自動選擇的uid範圍
13 # Min/max values for automatic uid selection in useradd
14 UID_MIN 1000
15 UID_MAX 60000
16 # System accounts
17 SYS_UID_MIN 201
18 SYS_UID_MAX 999
19 
20 # 控制groupadd建立組時自動選擇的gid範圍
21 # Min/max values for automatic gid selection in groupadd
22 GID_MIN 1000
23 GID_MAX 60000
24 # System accounts
25 SYS_GID_MIN 201
26 SYS_GID_MAX 999
27 
28 # 設置此項後,在刪除用戶時,將自動刪除用戶擁有的at/cron/print等job
29 #USERDEL_CMD /usr/sbin/userdel_local
30 
31 # 控制useradd添加用戶時是否默認建立家目錄,useradd -m選項會覆蓋此處設置
32 CREATE_HOME yes
33 
34 # 設置建立家目錄時的umask值,若不指定則默認爲022
35 UMASK 077
36 
37 # 設置此項表示當組中沒有成員時自動刪除該組
38 # 且useradd是否同時建立同用戶名的主組。(該文件中並無此項說明,來自於man useradd中-g選項的說明)
39 USERGROUPS_ENAB yes
40 
41 # 設置用戶和組密碼的加密算法
42 ENCRYPT_METHOD SHA512

3、用戶及用戶組的相關命令

 

開始建立
shell> echo "userX:x:666" >> /etc/group
shell> echo "userX:x:666:666::/home/userX:/bin/bash" >> /etc/passwd
shell> echo 'userX:!!:17121:0:99999::::' >> /etc/shadow
shell> cp -r /etc/skel /home/userX
shell> chown -R userX:userX /home/userX
shell> chmod -R go= /home/userX
shell> passwd --stdin userX <<< '123456'

 

 用戶管理命令:
  useradd
  usermod
  userdel
 組帳號管理命令:
   groupadd
   groupmod
   groupdel

一、useradd 添加用戶

 1 useradd -u 66666 songtai   # 表示新建用戶songtai,並指定其uid爲66666
 2 useradd -o  # 與u一塊兒用,id不惟一,用於建立同id用戶
 3 useradd -g GID # 指明用戶所屬基本組(主要組),可爲組名,也能夠GID  4     useradd -g  songtai  sst   # 建立sst這個用戶,並將songtai做爲其主組
 5 useradd -c  hello  sst3  # 建立sst3這個用戶,並添加hello這個信息在帳戶裏
 6 useradd -d HOME_DIR   # 以指定的路徑(不存在)爲家目錄
 7 useradd -s SHELL # 指明用戶的默認shell程序  8     useradd -s /bin/csh sst4
 9 useradd -G GROUP1[,GROUP2,...] #爲用戶指明附加組,組須事先存在 10 useradd -N    # 不建立私用組作主組,使用users組作主組
11 useradd -r    # 建立系統用戶CentOS 6: ID<500,CentOS 7: ID<1000   用於安裝系統應用
12 useradd -m    # 建立家目錄,用於系統用戶
13 useradd -M    # 不建立家目錄,用於非系統用戶

 

二、usermod

usermod [options] LOGIN
# option
    -u UID: 新UID
    -g GID: 新主組
    -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項
    -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: 設定非活動期限

3.userdel
  userdel -r USERNAME: 刪除用戶家目錄

4.grooupadd、groupmod、groupdel
5.chpasswd 批量修改用戶口令
第一步:
  建立passwd文件(名字任意、目錄任意)
第二步:
  nanopasswd 添加統一格式
  名戶名:口令,例如:
  sst1:woshisst1
  sst2:woshisst2
  sst3:woshisst3
第三步:
  cat passwd | chpasswd 批量修改用戶口令

6.newusers 批量建立用戶
newusers passwd格式文件
實驗場景:假如想在要在centos7上建立已經在centos6上存在的批量帳號,怎麼作?

1.第一步:cat /etc/passwd 將chentos6上要建立的帳號都複製
2.建立一個list.txt 的文件,將上面的文件複製進這個文件,並保存

3.scp list.txt ip: /data 遠程複製附件。
例如:scp list.txt 192.168.199.134: /data 表示將list.txt這個文件複製進192這個ip地址裏data這個文件目錄下
4.newusers /data/list.txt 批量建立list.txt中的用戶

7. id 查看用戶相關的ID信息

-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶所屬的組的ID
-n: 顯示名稱,需配合ugG使用

 

8. su 切換用戶或以其餘用戶身份執行命令
su [options...] [-] [user [args...]]
su UserName:非登陸式切換,即不會讀取目標用戶的配置文件,不改變當前工做目錄
su - UserName:登陸式切換,會讀取目標用戶的配置文件,切換至家目錄,徹底切換(等價於從新登錄一個帳號)
su [-] UserName -c 'COMMAND' 換個身份執行命令

9.passwd 設置密碼
passwd: 修改本身的密碼
passwd [OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限

passwd -l:鎖定指定用戶
passwd -u:解鎖指定用戶
passwd -e:強制用戶下次登陸修改密碼
passwd -n mindays: 指定最短使用期限
passwd -x maxdays:最大使用期限
passwd -w warndays:提早多少天開始警告
passwd -iinactivedays:非活動期限
passwd --stdin:從標準輸入接收用戶密碼 echo "PASSWORD" | passwd--stdin USERNAME

 

10.修改用戶密碼策略
chage [OPTION]... LOGIN

-d LAST_DAY
-E --expiredateEXPIRE_DATE
-I --inactive INACTIVE
-m --mindaysMIN_DAYS
-M --maxdaysMAX_DAYS
-W --warndaysWARN_DAYS
–l 顯示密碼策略

示例:
chage-d 0 tom 下一次登陸強制重設密碼
chage-m 0 –M 42 –W 14 –I 7 tom
chage-E 2016-09-10 tom

11.gpasswd 更改組密碼
gpasswd [OPTION] GROUP

-a user 將user添加至指定組中
-d user 從指定組中移除用戶user
-A user1,user2,… 設置有管理權限的用戶列表

12.newgrp 臨時切換主組
若是用戶本不屬於此組,則須要此組密碼

13.groups、groupmems 更改和查看組成員
groupmems [options] [action]

-g, --group groupname更改成指定組(只有root)

Actions:
-a, --add username 指定用戶加入組 -d, --delete username 從組中刪除用戶 -p, --purge 從組中清除全部成員 -l, --list 顯示組成員列表

 

groups [OPTION] [USERNAME]...查看用戶所屬組列表

14.getent passwd/shadow/group/gshadow
查看passwd/shadow/group/gshadow這幾個文件夾

4、練習
一、建立用戶gentoo,附加組爲bin和root,默認shell爲/bin/csh,註釋信息爲"Gentoo Distribution"
useradd -G root,bin -s /bin/csh -c "Gentoo Distribution" gentoo
注意:
-G 後邊跟的附加組之間用,隔開;
註釋信息用""
要建立的用戶放在最後

二、建立下面的用戶、組和組成員關係
名字爲admins 的組
用戶natasha,使用admins 做爲附屬組
用戶harry,也使用admins 做爲附屬組
用戶sarah,不可交互登陸系統,且不是admins 的成員,natasha,harry,sarah密碼都是centos

1 groupadd admins 先建立組admins
2 useradd -G admins natasha
3 useradd -G admins harry
4 useradd -s /sbin/nologin sarah
5 echo centos |passwd --stdin ntatsha 
6 echo centos |passwd --stdin natasha
7 echo centos |passwd --stdin sarah

3.分析安裝一個應用時的相關組信息


5、實驗
實驗:centos6,7上修改/etc/passwd root的UID非0,沒法啓動,修復之

1. centos6:
第一步,啓動時,此界面按a進入

第二步,按a進入下面這個界面,最後敲入init=/bin/bash

第三步,進入到/bin/sh界面,
mount –o rw,remount / 從新掛載/目錄
nano /etc/passwd 修改root的UID

第四步,重啓便可正常進入centos6

2. centos7:
第一步,啓動界面按e進入

第二步,在Linux16那一行的最後敲入 init=/bin/bash,再按ctrl+x

第三步,

mount -orw,remount /
nano /etc/passwd

第四部,將root的uid改成0,重啓便可

轉自:https://blog.csdn.net/tai20031229/article/details/83824983

相關文章
相關標籤/搜索