系統環境:
該博文以CentOS6.8_x86_64和CentOS7.2_x86_64系統為基礎,Xshell5遠程登錄CentOS6.8和CentOS7.2系統,分別以root身份和sjsir用戶身份登錄系統。
學習的重要問題:
一、為什么要學習用戶和組?
首先Linux區別于其他的系統的最重要的特性就是多用戶,多任務的特性。這也是Linux重要的知識之一,多用戶就是可以在系統上面建立多個用戶,多個用戶可以在同一時間內登錄同一個系統執行各自不同的人,而且每個用戶之間都是直接對于系統的訪問,兩個用戶之間的操作不受影響。不同用戶都會擁有不同的權限,每個用戶在自己指定的范圍之內完成屬于自己的任務,Linux應用這種思想,實現了多用戶和多任務的特性。
二、linux系統中的用戶有哪些分類?
a.超級用戶:擁有系統中的最高的權限,默認是root用戶,區分用戶是不是超級用戶的重點是該用戶的UID是否為0。
b.普通用戶:對于自己的目錄下的文件可以任意的訪問和修改,但是自己權限外面的文件操作時會顯示:Permission denied(權限被拒絕。),例如自己建立的sjsir用戶,系統默認的第一個用戶的UID:CentOS6的UID為500,CentOS7的UID為1000。
c.虛擬用戶:該用戶的bash為/sbin/nologin,最大的特點就是不能登錄系統,他們存在的原因就是為了方便系統管理,滿足相對應的系統進程對于文件屬性的要求。
三、用戶和組的重要概念
a.用戶:我們要想使用Linux系統,就必須向系統管理員去申請一個賬號,通過每個用戶唯一的用戶名和用戶口令,只有用戶輸入正確的賬戶名和用戶口令,才允許進入系統和用戶的家目錄下。我們通過建立不同屬性的用戶(超級用戶,普通用戶,虛擬用戶),利用用戶組的知識,去構建不同的用戶組,通過權限的區分,達到用戶分類的目的。
b.組:用戶組是多個相同特征用戶的組合(相當于公司中的一個單獨的部門),假設我們有一個文件需要一個組的用戶都去訪問,若沒有用戶組的這個概念,這些用戶都必須一遍又一遍的服務文件的權限,然后才能讓這些用戶去訪問,但是,若系統中有用戶組的概念,只需將用戶添加到組之后,然后給于文件一個組的訪問權限,所有被添加到用戶組的都會獲得這個組的權限,即可實現多用戶訪問該文件。通過去定義用戶組,在工作程度上面大大簡化了管理工作。
四、用戶和組之間的關系:
用戶和用戶組之間的對應的關系:一對一、一對多、多對一、多對多。
a.一對一:一個用戶可以存在一個組中,也是組中的唯一的成員。(該用戶存在主組中)
b.一對多:一個用戶可以存在多個組中,該用戶擁有多個組中共同的權限。(但每個用戶,主組只有一個(primary group),輔助組(secondary group)有多個)
c.多對一:多個用戶存在一個組中,這些用戶擁有和組相同的權限。
d.多對多:多個用戶可以存在多個組中,相當于上面的關系的一種擴展。
五、相關密碼的一些知識點:
1.shadow的文件格式:(man 5 shadow)
login name:登錄用名;
encrypted password:用戶密碼: 一般用sha512 加密(加密算法后面介紹);
date of last password change:從1970 年1 月1 日起到密碼最近一次被更改的時間;
minimum password age:密碼再過幾天可以被變更(0 表示隨時可被變更);
maximum password age:密碼再過幾天必須被變更(99999 表示永不過期);
password warning period:密碼過期前幾天系統提醒用戶(默認為一周);
password inactivity period:密碼過期幾天后帳號會被鎖定;
account expiration date:從1970 年1 月1 日算起,多少天后帳號失效;
reserved field:保留字段,以后未來可能使用;
2.密碼加密的知識:
a.密碼加密的機制:
加密:明文–> 密文
解密:密文–> 明文
單向加密:哈希算法,原文不同,密文必不同;相同算法定長輸出,獲得密文不可逆推出原始數據
雪崩效應:初始條件的微小改變,引起結果的巨大改變
b.加密算法的幾種主要的類型:
md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha224相比sha256,sha224算法的哈希值大小為256位。
sha256: 256bits
sha384: 384bits
sha384相比sha256,sha384算法的哈希值大小為384位
sha512: 512bits
※Linux系統中更改加密算法 authconfig –passalgo=sha256 — update(將默認的算法更改為sha256)
因為我們以后不會是密碼研究的人員,只可知道加密算法的原理即可,無需知道加密算法是如何進行和完成的,所以,我們就去了解一些hash加密算法即可,學會使用authconfig去切換不同的加密算法即可。
3.密碼的復雜性策略
a.使用數字、大寫字母、小寫字母及特殊字符中至少3種
b.足夠長(一般為8-20位)
c.使用隨機密碼(無規律的密碼)
d.定期更換,不要是使用原來使用過的密碼
學習的重要的命令:
一、用戶管理命令:
a.創建用戶:useradd [options] LOGIN
-u UID : [UID_MIN, UID_MAX] 定義在/etc/login.defs(為用戶指定特定的uid默認為上一個用戶的UID+1,CentOs6普通用戶的UID從500開始一直到60000結束,CentOs7普通用戶的UID默認從1000開始一直到60000結束。) 創建用戶peter,指定peter用戶的uid為1001.
-o 配合-u 選項,不檢查UID 的唯一性
使用-o選項不去檢查UID為1001的用戶是否存在,直接創建UID為1001的用戶tom,通過倒序查看/etc/passwd文件可以發現剛才創建的peter用戶和剛創建的用戶tom的UID相同,所以加上 -o之后不會檢查UID的唯一性;
-g GID :指明用戶所屬基本組,可為組名,也可以GID
-G GROUP1[,GROUP2,…] :為用戶指明附加組,組必須事先存在
關于組創建的兩個命令一起說,-g是指定用戶所屬的基本組的,基本組必須事先存在,用戶必須要有基本組,若不使用-g特殊指明,用戶創建時默認的創建于用戶同名的組,基本組在用戶創建時必須創建(為上面說的情況的用戶和組的對應關系為一對一)。-G是指定用戶的附加組,可以同時為一個用戶指定多個用戶附加組,也不為用戶指明用戶組,但是為用戶指明基本組的時候,基本組必須實現存在,要不無法指明。
創建用戶jerry 為jerry用戶創建基本組為sjsir,創建附加組為 bin,root
-c "COMMENT" :用戶的注釋信息
創建用戶可以直接給用戶添加注釋信息,可以方便以后對用戶進行管理,例,創建hello用戶,添加hello的用戶的注釋信息為“i am hello.”
-d HOME_DIR: 以指定的路徑( 不存在) 為家目錄
創建用戶時為用戶指定特定的家目錄,一般的用戶的家目錄為/home/xxx,我特意將hi用戶的家目錄創建到/bin/xixi,可以發現,用戶的目錄并非一定存在/home下,可以隨意指定,但是用戶的默認的家目錄設置的配置文件在/etc/default/useradd,修改配置文件后,即可實現將用戶的家目錄更改到任意位置。
-s SHELL : 指明用戶的默認shell 程序,可用列表在/etc/shells 文件中
添加用戶xixi并指明xixi使用的shell類型為 /bin/csh
系統中可以使用的shell的類型;
-N 不創建私用組做主組,使用users 組做主組
添加用戶hadoop,不創建私有組,使用users(GID=100)組作為主組
useradd hadoop -N :創建之后我們可以發現,hadoop的主組為GID100的users組
-r: 創建系統用戶 CentOS 6: ID<500 ,CentOS 7: ID<1000
b.修改用戶屬性usermod
usermod [OPTION] login
-u UID:給已經存在的用戶指定一個新的UID
-g GID:給已經存在的用戶變更一個新的GID
-G GROUP1[,GROUP2,…[,GROUPN]]] :新附加組,原來的附加組將會被覆蓋;
若保留原有,則要同時使用-a 選項,表示append;
-s SHELL :變更用戶現在使用shell類型;具體的shell類型參考/etc/shells
-c 'COMMENT' :新的注釋信息;
-d HOME: 新家目錄不會自動創建,原家目錄中的文件不會同時移動至新的家目錄;
若要創建新家目錄并移動原家數據,同時使用-m 選項
-l login_name: 新的名字;
-L: lock 指定用戶, 在/etc/shadow 密碼欄的增加!
-U: unlock 指定用戶,將 /etc/shadow 密碼欄的!拿掉
-e YYYY-MM-DD: 指明用戶賬號過期日期;
-f INACTIVE: 設定非活動期限;
對于部分選項的解釋:
①由于該命令和useradd的部分命令是相同的,對于-u -g -G -s -c -d 的使用方法就簡單以一種表現方式給出: usermod gentoo -u 502 -g xixi -G harry -s /bin/csh -c "i am gentoo." -d /home/hello
表示為gentoo用戶的uid更改為502,基本組改為xixi,附加組改為harry,腳本的shell改為了/bin/csh,注釋信息更改為“i am gentoo.”,家目錄改為/home/hello.
②usermod -i newname:將已經存在的用戶的名更改新的,下面的是將gentoo更改為hello,但是可以發現uid gid 等還是原來的。
③用戶密碼相關:
-L: lock 指定用戶, 在/etc/shadow 密碼欄的增加!
-U: unlock 指定用戶,將 /etc/shadow 密碼欄的!拿掉
說明:默認直接添加用戶時,用戶是沒有的,在密碼的位置取代的是!!默認的無法直接登錄,但是早期CentOS5.x系列可以直接使用usermod -U username兩次的時候,可以清空密碼,讓用戶無密碼直接登錄,這樣是不安全的,但是現在的6 7系列就已經修改了這種模式,取消兩次的時候就會報錯。
usermod -L username:系統認為!已經挺安全的了,所以以后給用戶添鎖還是只能添加一個!
c.刪除用戶 userdel
userdel [OPTION]… login
-r:遞歸刪除用戶,連同用戶的家目錄和用戶的郵箱,包括所創建的組都會刪除,但是注意,當他所在的組的中間還有別的用戶存在時,不會全部都刪除,僅僅會刪除單用戶,不會刪除用戶組。
d.查看用戶的id相關的信息:
id [OPTION]… [USER]
-u: UID 獨立查看用戶的UID號(超級用戶的默認UID號為0)
-g: GID 獨立查看用戶的GID號(hello用戶的GID為506)
-G: Groups 獨立查看用戶所屬的組(hello為504 506)
-n: Name 上面的命令是顯示的是用戶的GID UID號,加上-n之后,顯示的是用戶的名稱和組的名稱,需要配合-ugG使用。
id username:直接使用id username 的時候,會直接的顯示上述的所有信息
e.切換用戶或以其他用戶身份執行命令
su [options…] [-] [user [args…]]
切換用戶的兩種方式:
su UserName :非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄
su – UserName :登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換
注意:root su 至其他用戶無須密碼;非root 用戶切換時需要密碼
二、密碼相關命令
a.設置密碼
passwd [OPTIONS] UserName: 修改指定用戶的密碼,只有超級用戶root(UID為0)才能修改其它指定用戶的密碼,其余用戶只能修改自己的密碼,無權去修改其他用戶的密碼;
利用root用戶身份,去修改sjsir用戶的密碼:(因為給sjsir用戶一個基于字典的密碼,所以系統會提示密碼太簡單了,但是root身份強大,無論什么密碼都可以被設置。)
passwd: 修改自己的密碼;
常用選項:
-l: 鎖定指定用戶(鎖定hadoop用戶,passwd -l hadoop)
-u: 解鎖指定用戶(解鎖hadoop用戶,passwd -u hadoop,但是因hadoop用戶之前沒有被賦予密碼,所以顯示一個警告)
-e: 強制用戶下次登錄修改密碼(強制系統中的sjsir用戶在下次登錄的時候修改密碼)
sjsir用戶終端顯示的內容:(提示用戶先輸入原來的密碼,然后讓用戶去輸入兩邊新的密碼,密碼的強度在前面已經說過了,修改之后,系統會強制用戶下線,然后讓用戶重新登錄系統。)
-n mindays: 指定最短使用期限(指定hadoop用戶的最短使用期限為42天,默認為0天)
-x maxdays :最大使用期限(hadoop用戶密碼最長的使用期限為1000天,過了這個期限必須修改密碼,默認為99999天)
-w warndays :提前多少天開始警告(提前3天告訴hadoop用戶需要修改密碼,默認的提醒時間為7天。)
-i inactivedays :非活動期限;到什么時候用戶禁用(設置hadoop用戶可以使用1200天)
–stdin :從標準輸入接收用戶密碼;
echo " PASSWORD " | passwd –stdin USERNAME
echo "centos" | passwd –stdin hadoop
給hadoop用戶創建密碼,密碼為標準輸入進的字符,設置為centos;
※:-n -x -w -i 的執行結果顯示:(hadoop用戶)
b.修改用戶密碼策略
chage [OPTION]… LOGIN
-d LAST_DAY :設置密碼最后一次修改的時間距離1970年1月1日的天數,當last_day設置為0時,用戶下次登錄時必須修改密碼。
root終端:執行chage -d 0 hadoop命令
hadoop終端顯示的內容:
-E, –expiredate EXPIRE_DATE:設置用戶被禁止登錄的時間,時間采取的是距離1970年1月1日的時間,也可以使用YYYY-MM-DD這個格式,賬戶被禁止后只有聯系管理員接觸禁止后才能登錄,當設置chage -E -1 username時,取消設置用戶禁止登錄時間。
chage -E 2017-10-10 hadoop
-I, –inactive INACTIVE:設置在用戶被鎖定之前,密碼過期之后設置的還能使用的天數,被鎖定后需和管理員聯系進行解鎖。
chage -I 10 hadoop
-m, –mindays MIN_DAYS:更改用戶密碼的最短使用期限
chage -m 10 hadoop
-M, –maxdays MAX_DAYS:更改用戶密碼的最長使用期限
chage -M 1000 hadoop
-W, –warndays WARN_DAYS:更改用戶密碼的提醒時間啊
chage -W 4 hadoop
–l ,顯示密碼策略,下一次登錄強制重設密碼
三、組管理的命令(組的管理命令和用戶的管理命令差不多,所以不做過多的介紹,直講重要的配置文件。)
a.創建組
groupadd [OPTION]… group_name
-g GID: 指明GID號;默認的組的GID號為500-60000(6),1000-60000(7)
-r: 創建系統組;組的GID默認小于CentOS 6: ID<500 CentOS 7: ID<1000
b.修改和刪除組
組屬性修改:groupmod
groupmod [OPTION]… group
-n group_name: 新名字
-g GID: 新的GID
組刪除:groupdel
groupdel GROUP
c.更改組密碼
組密碼:gpasswd
gpasswd [OPTION] GROUP
-a user: 將user 添加至指定組中;
-d user: 從指定組中移除用戶user
-A user1,user2,…: 設置有管理權限的用戶列表
newgrp 命令:臨時切換基本組;如果用戶本不屬于此組,則需要組密碼
d.更改和查看組成員
groupmems [options] [action]
options:
-g, –group groupname 組 更改為指定組 ( 只有root)
Actions:
-a, –add username 指定用戶加入組
-d, –delete username 從組中刪除用戶
-p, –purge 從組中清除所有成員
-l, –list 顯示組成員列表
groups [OPTION].[USERNAME]… 查看用戶所屬組列表
原創文章,作者:sjsir,如若轉載,請注明出處:http://www.www58058.com/27142