Linux批量創建用戶、passwd、shadow、組管理、group、gshadow、默認配置文件login.defs、切換用戶su、提升權限
在Linux中用戶運行某個程序時,該程序的權限屬於當前用戶,進程所能夠訪問資源的權限取決於進程的運行者的身份。如果用戶的id號爲0,即使不叫root,他也是管理員;就算名字叫root它也可能是普通用戶。當有多個不同名字的管理員時他們的id號都是0,不同名字管理員的操作也會分開記錄,便於查閱。設置id號的另一便捷之處在於用戶文件的交接,即管理員刪除原用戶名並且創建一個id號相同的新用戶,原用戶的文件就屬於新用戶了。在工作中時常要管理用戶信息與部門信息,如批量創建用戶,批量修改密碼等,如果直接修改配置文件則有可能出錯,因爲配置文件都有相應的格式,許多配置文件必須Tab鍵打頭才能被識別,因此最好使用專屬命令修改配置文件。
用戶組合權限管理
資源分配的安全3A
Authentication:認證
Authorization:授權
Accouting|Audition:審計
用戶(user)
令牌token
管理員:root id=0
普通用戶:系統用戶:1-499(cent6),1-999(守護進程獲取資源進行權限分配,是爲某些系統服務準備的),nologin的類型
登錄用戶:(centos6)500+,(centos7)1000+,交互式登錄
創建新建用戶時,自動建立一個同名的私有組(private group),但必須要加入到一個主組(primary group)中
組(Group)
管理員組:root,0
id user #查看用戶uid與名字、gid與名字與groups與所屬組名
groups user #查看用戶所屬組名,無id號
普通組:-499,1-999;普通組:500+,1000+
Linux組名可與用戶名相同,windows不可以#
主組(primary group):一個用戶只有一個,並且必須有一個
輔助組(secondary group):一個用戶可加入多個
私有組(private group):新建用戶自動創建的組
若創建文件的用戶被刪除了,該文件的擁有者和所屬組不顯示創建者。如果新建一個同id的用戶,則該文件將屬於新建用戶,所以方便在工作中給新用戶交接文件。
Linux中識別文件的歸屬不是看用戶名與組名,識別是否管理員不是依據名字,而是依據id號#
用戶信息的配置文件
whatis passwd | man 5 passwd #一般配置文件的幫助信息都在man 5
/etc/passwd#:是一個有特定格式的用戶及其屬性信息文件(名字、UID、GID(primary group號)、描述信息、HOME目錄、Shell類型)
pwconv:用戶密碼被轉換到了/etc/shadow下,只有superuser才能read
pwunconv:不轉換用戶密碼,直接顯示在/etc/passwd的:x:位,此時沒有shadow文件
/etc/shadow#:用戶密碼及其相關屬性(名字、(加密算法.salt.密碼)、改口令時間(從1970到今的日數,如果設置爲0,下次登入時必須改密碼)、最短允許用戶更改密碼時間、最長允許不更改時間(小於最短時間表示永不允許更改密碼),寬限期,賬戶有效期。
不設密碼時爲!!,此時不允許登錄
passwd -e fz #馬上失效密碼,強制用戶登錄時修改
chage -d0 fz #馬上失效密碼,強制用戶登錄時修改
pwck #檢查passwd的錯誤
usermod -U fz #解除:!!:“空密碼”,解除兩次之後可直接login,無需密碼
usermod -L fz #鎖定賬號,不能登錄,root能切換
getent passwd fz #只顯示fz用戶的信息
getent shadow fz #只顯示fz的密碼信息
$6:sha-512 最新的sha512加密算法 $1:md5-128 #已經不安全了 $5sha-256 #哈希算法是單向加密的
authconfig --passalgo=md5 --update #更換加密算法,新用戶生效
chfn fz #增加第五列的描述信息
finger fz #查看fz用戶的信息,包括shell類型和登錄信息
echo jasonmc |passwd --stdin fz #設置密碼,明文的,在history中有記錄
chsh -s /bin/bash fz #更改fz的shell類型
/sbin/nologin #是一個可執行文件,shell類型指定爲nologin將不可登錄
touch /etc/nologin #系統維護,普通用戶不能登錄。在centos7上可 touch /run/nologin
vipw = vi /etc/passwd
組的配置文件
*/etc/group#:組及其屬性信息
*/etc/gshadow#:組密碼及其相關屬性
gpasswd fz #設置組密碼,如果組外用戶知道密碼則可自己加入該組,不安全,一般由root操作
新建文件默認屬於當前用戶的主組
groups user #查看用戶所屬的組
newgrp tom #臨時切換當前用戶的主組,此時新建文件的組屬於tom
grpck #檢查group文件的錯誤
vigr = vi /etc/group
創建用戶
useradd fz
useradd -u 503 fz #創建一個指定uid的用戶
useradd -u 0 -o fz #忽略檢查uid唯一性
useradd -g newgroup fz #指定主組
useradd -G bin,root,ftp #多個輔助組 fz #指定新的輔助組,覆蓋
useradd -aG bin,root,ftp fz #追加輔助組,不覆蓋
useradd -d /home/newhome fz #指定新的家目錄,父目錄必須有,子目錄必須沒有
useradd -c “haha” #添加註釋信息
useradd -N fz #不創建同名的主組,加入到id=100的user組
useradd -D 來自於 /etc/default/useradd文件 #創建普通用戶時的默認選項,如shell類型,密碼期限等,家目錄及其一堆的文件,這些文件從/etc/skel拷貝,還會創建郵箱。創建系統用戶時默認不會創建家目錄與郵箱#。
useradd -r #創建系統用戶
/etc/login.defs# #定義了所有的組與用戶默認信息,包括郵箱、家目錄、密碼有效期、UID、加密算法。實質上通過authconfig –passalgo=sha6 –update修改的密碼就是改了這個文件的信息。
cat <<EOF |newusers #用cat命令逐行輸入,非常好用,EOF是多行重定向,或者這樣:
newusers abc.txt #文件格式fz1:x:3001:3001::/home/fz1:/bin/bash #批量創建用戶,注意不要用空行
cat <<EOF |chpasswd #cat多行重定向,逐行輸入,非常方便,或者這樣:
cat abc_pass.txt |chpasswd #fz1:lanfazong #批量密碼,注意不要又空行
cp /etc/skel/.[^.]* /home/fz #複製skel下的文件到手動創建用戶的家目錄下,否則無法正常登錄
usermod -u 20000 -g root -G bin,tom -s /bin/csh -d /home/new1 -m -c “hehe test” -l
newhehe -f 10 hehe #改了id,組,複製新家,新名字,最後期限(失效通牒)
userdel -r fz #刪除用戶,家目錄,郵箱
組管理
groupmems -l -g root #查看root組的成員
groupmems -a fz -g root #增加fz到root組
groupmems -d fz -g root #刪除
groupmod -G “ ” fz #刪除所有輔助組
id -u fz #uid
id -g fz #gid
id -G fz #輔助組groups id
groups fz #用戶所屬的組
su切換用戶
su user #不完全切換,非登錄式切換,造成無法訪問原來用戶目錄的情況,who am i顯示登錄用戶,而不是切換用戶
su - user #完全切換,登錄式切換
su - root -c ‘cat /etc/passwd’ #方便普通用戶完成root的命令,不必切換
如果普通用戶編程管理員(usermod -og 0 fz)再 改回普通用戶就會出錯#
安全上下文
用戶運行某個程序時,該程序的權限屬於當前用戶,進程所能夠訪問資源的權限取決於進程的運行者的身份。