用戶和組
touch /etc/nologin 系統做維護時不想普通用戶登錄,就可以創建這個文件,也可以在里面寫一些提示。 維護完之后刪除這個文件就可以自動恢復 touch /run/nologin 與上述命令功能相同,但是這個命令只有在CentOS7上可以用。
用戶(USER)
根據所具有權限的不同,用戶分為兩類: 管理員用戶:root,UID為0.(只有管理員用戶才能為0) 普通用戶:UID 1-65535 普通用戶又可以分為兩類: 系統用戶:保障系統運行的用戶,一般不提供密碼登錄系統,其UID為1-499(CentOS6)、1-1000(CentOS7)之間. 登錄用戶:即一般用戶,其使用系統的權限受限,其UID為500-60000(CentOS6)、1000-60000(CentOS7)之間.(一般默認使用到60000) 名稱解析:名稱轉換 Username<-->UID 根據名稱解析庫進行:/etc/passwd
組(group)
Linux組:Groupname / GID 與用戶一樣,組也是分為兩類: 管理員組:root 0 普通組: 系統組:1-499(CentOS6)、1-999(CentOS7) 普通組:500-60000(centos6)、1000-60000(CentOS7) 組的類別: 主組:(主要組,基本組): 用戶必須擁有和屬于一個主組,主組有且只有一個。 主組名與用戶名相同,且僅包含一個用戶:是私有組。 附加組:(輔助組) 一個用戶可以屬于零個或一個或多個附加組 名稱解析:名稱轉換 groupname<--->gid 解析庫:/etc/group
用戶和組的配置文件
Linux 用戶和組的主要配置文件: /etc/passwd :用戶及其屬性信息( 名稱、UID 、主組ID 等) /etc/group :組及其屬性信息 /etc/shadow :用戶密碼及其相關屬性 /etc/gshadow:組密碼及其相關屬性
-
passwd文件格式
login name :登錄用名 passwd :密碼 UID號 :用戶身份編號 GID :用戶所屬主組的ID號 GECOS :用戶全名或注釋 home directory(家目錄) :用戶主目錄 shell :用戶默認使用shell
-
shadow文件格式
登錄用名: 用戶密碼: 一般用sha512 加密 最近一次修改密碼的時間:從1970 年1 月1 日起到密碼最近一次被更改的時間 最短使用期限:密碼再過幾天可以被變更(0 表示隨時可被變更) 最長使用期限:密碼再過幾天必須被變更(99999 表示永不過期) 警告期段:密碼過期前幾天系統提醒用戶(默認為一周) 密碼過期幾天后帳號會被鎖定 從1970 年1 月1 日算起,多少天后帳號失效。
-
group文件格式
群組名稱:就是群組名稱 群組密碼:通常不需要設定,密碼是被記錄在/etc/gshadow GID的 :就是群組的 ID 以當前組為附加組的用戶列表(分隔符為逗號)
-
gshadow文件格式
群組名稱:就是群組名稱 群組密碼: 組管理員列表:組管理員的列表,更改組密碼和成員 以當前組為附加組的用戶列表:(分隔符為逗號)
-
密碼加密
加密機制: 加密:明文--> 密文 解密:密文--> 明文 單向加密:哈希算法,原文不同,密文必不同 相同算法定長輸出,獲得密文不可逆推出原始數據 雪崩效應:初始條件的微小改變,引起結果的巨大改變 md5: message digest, 128bits sha1: secure hash algorithm, 160bits sha224: 224bits sha256: 256bits sha384: 384bits sha512: 512bits 更改加密算法 authconfig --passalgo=sha256 -- update
-
用戶和組的管理命令
用戶管理命令 useradd 增加用戶 usermod 修改用戶屬性 userdel 刪除用戶 組帳號維護命令 groupadd 增加組 groupmod 修改組屬性 groupdel 刪除組
用戶創建
-
useradd
useradd [options] login_name 參數: -u UID:手動指定用戶UID,默認的話是上一個用戶的UID+1 [root@localhost ~]# tail -2 /etc/passwd sarah:x:2009:2010::/home/sarah:/sbin/nologin haha:x:2010:2011::/home/haha:/bin/bash [root@localhost ~]# useradd haha2 [root@localhost ~]# tail -2 /etc/passwd haha:x:2010:2011::/home/haha:/bin/bash haha2:x:2011:2012::/home/haha2:/bin/bash -o 配合-u 選項,不檢查UID 的唯一性 [root@localhost ~]# useradd -ou 2011 haha3 [root@localhost ~]# tail -2 /etc/passwd haha2:x:2011:2012::/home/haha2:/bin/bash haha3:x:2011:2013::/home/haha3:/bin/bash -g GID :指明用戶所屬基本組,可為組名,也可以GID [root@localhost ~]# useradd -g root haha4 [root@localhost ~]# id haha4 uid=2012(haha4) gid=0(root) groups=0(root) -c "COMMENT" :用戶的注釋信息 [root@localhost ~]# useradd -c "kuailederen haha4" haha5 [root@localhost ~]# getent passwd haha5 haha5:x:2013:2014:kuailederen haha4:/home/haha5:/bin/bash -d HOME_DIR: 以指定的路徑( 不存在) 為家目錄 [root@localhost ~]# useradd -d /home/hahatest/ haha6 [root@localhost ~]# getent passwd haha6 haha6:x:2014:2015::/home/hahatest/:/bin/bash -s SHELL : 指明用戶的默認shell 程序可用列表在/etc/shells 文件中 [root@localhost ~]# useradd -s /bin/csh/ haha7 [root@localhost ~]# getent passwd haha7 haha7:x:2015:2016::/home/haha7:/bin/csh/ -G GROUP1[,GROUP2,...] :為用戶指明附加組,組必須事先存在 [root@localhost ~]# usermod -G bin haha6 [root@localhost ~]# getent passwd haha6 haha6:x:2014:2015::/home/hahatest/:/bin/bash [root@localhost ~]# groups haha6 haha6 : haha6 bin -N 不創建私用組做主組,使用users 組做主組 [root@localhost ~]# useradd -N haha8 [root@localhost ~]# groups haha8 haha8 : users -r: 創建系統用戶 CentOS 6: ID<500 ,CentOS 7: ID<1000 [root@localhost ~]# useradd -r haha9 [root@localhost ~]# groups haha9 haha9 : haha9 [root@localhost ~]# id haha9 uid=991(haha9) gid=986(haha9) groups=986(haha9) [root@localhost ~]# getent passwd haha9 haha9:x:991:986::/home/haha9:/bin/bash
-
創建用戶是的默認值在文件:
默認值設定:/etc/default/useradd 文件中 顯示或更改默認設置: useradd -D useradd –D -s SHELL
-
新建用戶相關的文件和命令
/etc/default/useradd /etc/skel/* /etc/login.defs newusers passwd 格式文件 批量創建用戶 chpasswd 批量修改用戶口令
批量創建用戶
newusers file (file 里是要批量創建的用戶的配置信息) file (hehe1:x:2000:2000::/home/hehe1:/bin/bash hehe2:x:2001:2002::/home/hehe2:/bin/bash hehe3:x:2002:2002::/home/hehe3:/bin/bash hehe4:x:2003:2003::/home/hehe4:/bin/bash hehe5:x:2004:2004::/home/hehe5:/bin/bash )
批量修改用戶密碼
cat file | chpasswd file(用戶名 :密碼) (hehe :12345 hehe2:redhat hehe3:centos ) 新創建的家目錄里面沒有配置文件登錄時候會出錯,恢復家目錄文件的方法是: (1) [root@localhost skel]# cp -r /etc/skel/.[^.]* /home/hehe2 [root@localhost skel]# cd /home/hehe3 [root@localhost hehe3]# ls -a . .. [root@localhost hehe3]# cd [root@localhost ~]# [root@localhost ~]# cd /home/hehe2 [root@localhost hehe2]# ls -a . .. .bash_logout .bash_profile .bashrc .mozilla 附加方法: (2)cp -r `ls -A` /home/hehe3/ 此方法只能在進入到skel目錄里才行 不能在其他目錄下操作此命令 (3)cp -r /etc/skel/. /home/hehe3/
用戶屬性修改
usermod [OPTION] login_name -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: 設定非活動期限; [root@localhost ~]# getent passwd haha5 haha5:x:2013:2014:kuailederen haha4:/home/haha5:/bin/bash [root@localhost ~]# id haha5 uid=2013(haha5) gid=2014(haha5) groups=2014(haha5) [root@localhost ~]# groups haha5 haha5 : haha5 [root@localhost ~]# usermod -u 2345 -g root -G bin -s /bin/csh -c "nihaohaha" -d /home/testdir/newhaha5 -m -l newhaha5 haha5 [root@localhost ~]# getent passwd newhaha5 newhaha5:x:2345:0:nihaohaha:/home/testdir/newhaha5:/bin/csh [root@localhost ~]# id newhaha5 uid=2345(newhaha5) gid=0(root) groups=0(root),1(bin) [root@localhost ~]# groups newhaha5 newhaha5 : root bin
查看用戶相關id信息
id [OPTION]... [USER] -u: UID -g: GID -G: Groups -n: Name
刪除用戶
userdel [option]... login_name -r 刪除用戶家目錄
用戶和組相關操作命令
pwunconv 密碼不轉換 passwd unconv pwconv密碼轉換 passwd conv chsh -s :改shell類型 getent passwd 用戶名:看用戶信息 getent shadow 用戶名: usermod -U tom:解鎖用戶密碼限制(創建用戶沒有設置密碼時) usermod -L tom鎖定,鎖定后禁止用戶登錄,但是可以切換 openssl rand -base64 10(位數)自動生成指定位數密碼 chage -d0 用戶名 修改距離1971年天數 passwd -e 用戶名,將用戶距離1971年天數置零 finger gpasswd 組名:給組設置口令
切換用戶或以其他用戶的身份執行命令
su [options...] [-] [user [args...]] 切換用戶的方式: su UserName :非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄 su - UserName:登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換 root su 至其他用戶無須密碼; 非root用戶切換時需要密碼
換個身份執行命令:
su [-] UserName -c 'COMMAND' 選項: -l --login_name: su -l UserName 相當于 su - UserName
設置密碼
passwd [OPTIONS] UserName: 修改指定用戶的密碼,僅root 用戶權限 passwd: 修改自己的密碼; 常用選項: -l: 鎖定指定用戶 -u: 解鎖指定用戶 -e: 強制用戶下次登錄修改密碼 -n mindays: 指定最短使用期限 -x maxdays :最大使用期限 -w warndays :提前多少天開始警告 -i inactivedays :非活動期限; --stdin :從標準輸入接收用戶密碼; echo " PASSWORD " | passwd --stdin USERNAME
修改用戶密碼策略
chage [OPTION]... LOGIN -d LAST_DAY -E, --expiredate EXPIRE_DATE -I, --inactive INACTIVE -m, --mindays MIN_DAYS -M, --maxdays MAX_DAYS -W, --warndays WARN_DAYS –l,顯示密碼策略
組
創建組
groupadd [OPTION]... group_name -g GID: 指明GID 號;[GID_MIN, GID_MAX],默認情況下是上一個組的GID+1 -r: 創建系統組; CentOS 6: ID<500 CentOS 7: ID<1000
修改和刪除組
組屬性修改;groupmod groupmod [OPTION]... group -n group_name: 新名字 -g GID: 新的GID組刪除:groupdel groupdel GROUP_NAME
更改組密碼
組密碼:gpasswd gpasswd [OPTION] GROUP -a user: 將user 添加至指定組中; -d user: 從指定組中移除用戶user -A user1,user2,...:設置有管理權限的用戶列表 newgrp 命令:臨時切換基本組; 如果用戶本不屬于此組,則需要組密碼
原創文章,作者:dxkboke,如若轉載,請注明出處:http://www.www58058.com/28164