用戶與用戶組管理
目錄:
關於/etc/passwd
chfn更改用戶附加信息
finger 查看用戶附加信息
pwunconv
pwconv
關於/etc/shadow
chage 更改密碼各種時間
關於/etc/group和gshadow
用戶管理
創建用戶useradd
用設置戶usermod
刪除用戶userdel
修改密碼 passwd
切換用戶su
查看附加組信息groups
chsh 指定shell
組的管理
創建組groupadd
更改組屬性groudmod
刪除組groupdel
成員管理groupmems(root)
組密碼及組管理員gpasswd
關於/etc/passwd
用戶與權限管理是
1 /etc/passwd:用戶及其屬性信息(名稱、 UID、主組ID等) 2 /etc/group:組及其屬性信息 3 /etc/shadow:用戶密碼及其相關屬性 4 /etc/gshadow:組密碼及其相關屬性
這幾個文件對於用戶管理無比重要,因為它們記錄著有關用戶的所有信息,在/etc/passwd中,有:
1 login name:登錄用名(wang) 2 passwd:密碼 (x) 3 UID:用戶身份編號 (1000) 4 GID:登錄默認所在組編號 (1000) 5 GECOS:用戶全名或註釋 6 home directory:用戶主目錄 (/home/wang) 7 shell:用戶默認使用shell (/bin/bash)
看到這些信息你覺得重不重要嘞,當然,我們的密碼並不是真正在這裏面存放著這個文件裏,這是因為這個文件時所有用戶都可以進去的,雖然我們的密碼是經過加密的,但是還是無法保證有些牛人對密碼進行破解,所以我們在設置密碼的時候一定要設置的復雜些,最好使用數字,字母,特殊字符,最好保證自己的密碼足夠長,來保證自己的機器足夠安全
不過,話說回來,現在我們的密碼已經很難破解了呢,為啥呢,因為在2009年的時候,我國的一個牛人王小雲將MD5加密算法破解了,而後,Linux采用了加密性能更強的sha512加密算法,當然加密算法不值一種,但是我們的linux好多都是默認sha512這種加密算法。我們也可以修改我們的加密算法authconfig --passalgo=sha256 –update就可以更改我們的加密算法,我們可以通過man 3 crypt來查看我們可以采用的加密算法less /etc/login.defs跳到最後一行我們可以查看我們采用的那種加密算法。
講到/etc/passwd,我們先講一個命令,可以修改我們linux機器上的附加信息,非常好用。
更改用戶附加信息
命令:chfn 格式:chfn [option] username 選項: -f full-name:修改全名 -o office :修改辦公室信息 -p office-phone:修改辦公電話 -h home-phone:修改個人電話
當然了,我們也可以通過直接敲入 chfn username 可以進行交互式修改信息。
我們可以通過finger命令來查看我們用戶的具體信息格式:finger username
pwunconv將密碼保存到/etc/passwd中,刪除/etc/shadow文件
pwconv(默認) 將密碼映射到了/etc/shadow
finger username (默認沒有安裝) 查看用戶的信息
關於/etc/shadow
Next,我們來說下關於/etc/shadow裏面的東西:
登錄用戶名
用戶密碼:一般用sha512加密
從1970年1月1日起到密碼最近一次被更改的時間
密碼再過幾天可以被變更(0表示隨時可被變更)
密碼再過幾天必須被變更(99999表示永不過期)
密碼過期前幾天系統提醒用戶(默認為一周)
密碼過期幾天後帳號會被鎖定
從1970年1月1日算起,多少天後帳號失效
話說回來,這個文件才是保存的用戶的密碼信息,非常重要,我們先看一下它的權限
我就問你可怕不可怕,我們所有人都無法訪問這個文件,所以,在linux,這個文件是有多重要,我們驚奇的發現就連root都沒有訪問權限,不過嘛,root生起氣來連自己都刪,所以權限什麽的對root一般無效。接下來我們在介紹一個命令,用於修改密碼的各種事件,都有那些時間呢,指定密碼的上次修改時間(yyyy-mm-dd),指定賬戶的過期時間,密碼過期之後多少天帳戶過期,最小存活時間,最大存活時間,設置密碼過期前的提醒時間,我們通過一個命令:chage –l username來查看用戶的以上的密碼時間信息,當然,它可以修改上面的各種信息的呢。
修改密碼信息
1 命令:chage 2 格式:chage [option] username 3 選項: 4 -d 指定密碼的上次修改時間(yyyy-mm-dd) 5 -E 指定賬戶的過期時間 6 -I 密碼過期之後多少天帳戶過期 7 -m 設置最小存活時間 8 -M 設置最大存活時間 9 -W 設置密碼過期前的提醒時間
我們也可以使用chage username交互式修改用戶的密碼策略
1 vipw = vim /etc/passwd 2 vipw -s = vim /etc/shadow 3 vigr = vim /etc/group 4 vigr -s = vim /etc/gshadow 5 pwck 檢查/etc/passwd /etc/shadow 6 grpck 檢查/etc/group /etc/gshadow
關於/etc/group和gshadow
在linux中,我們有所有者和所屬組的概念,一般情況下,我們在添加用戶的時候,都會默認的有一個自己的所屬組且和自己的用戶名稱一樣(在沒有添加參數設置的情況下)。話說,組有什麽用呢?想象一下,如果我們在一臺服務器上工作,而很多時候都是幾個人圍著一個項目跑,我們的項目文件該放在那裏,使得大家都可以看到,參與,修改呢?這時候就體現出來組的重要性了,我們可以創建一個項目組,凡是參加這個項目的人員都可以加到這個組中去,一起完成一個項目,豈不是美滋滋。
而且,就像我們一個班一樣,有班長,有老師,有組長,有學委,在linux中也是一樣,我們創建完組之後,可以給組添加管理員,管理員可以對這個組進行各種操作,添加用戶,刪除用戶,等等。這些,一會我會繼續介紹,現在我們就看看在這兩個配置文件中有些啥東西。
/etc/group
群組名稱:就是群組名稱
群組密碼:通常不需要設定,密碼是被記錄在/etc/gshadow
GID:就是群組的 ID
以當前組為附加組的用戶列表(分隔符為逗號)
和用戶密碼一樣,我們的組也是有密碼的,主要是,但是為了安全,密碼映射的位置是/etc/gshadow中。
/etc/gshadow
群組名稱:就是群組名稱
群組密碼:
組管理員列表:組管理員的列表,更改組密碼和成員
以當前組為附加組的用戶列表: (分隔符為逗號)
對於用戶組的管理,我們一會再說,現在我們先來學習如何創建用戶,更改用戶信息和刪除用戶,以及一些其他的查詢和更改命令。
用戶管理
創建用戶
1 命令:useradd 2 格式:useradd [option] newuser 3 選項: 4 -u UID: [UID_MIN, UID_MAX]定義在/etc/login.defs 5 -o 配合-u 選項,不檢查UID的唯一性 6 -g GID:指明用戶所屬基本組,可為組名,也可以GID 7 -c "COMMENT":用戶的註釋信息 8 -d HOME_DIR: 以指定的路徑(不存在)為家目錄 9 -s SHELL: 指明用戶的默認shell程序 10 可用列表在/etc/shells文件中 11 -G GROUP1[,GROUP2,...]:為用戶指明附加組,組須事先存在 12 -N 不創建私用組做主組,使用users組做主組 13 -r: 創建系統用戶 CentOS 6: ID<500, CentOS 7: ID<1000
我們可以看到,創建用戶的參數有很多,這只是其中的一部分,也算是比較重要的呢。我們看到-u選項後面有一個配置文件,在這個配置文件中,設置的是我們在創建用戶時的默認信息,包括密碼的各種信息,采用的加密算法,UID,GID的範圍,初始郵箱,初始的默認權限等。接下來,我們將對一些參數進行了解:
-u 和 –o選項一起來用可以在創建用戶時不再檢查UID的唯一性,這就意味著我們以這種方式創建用戶時可能和其他用戶的UID重復,這樣的話,當我們在切入新創建的用戶時可能導致我們進的是之前已經存在的具有相同UID的用戶。
-g選項可以幫助我們在創建用戶時直接指定一個用戶組為自己的私有組,但是如果這個組不存在的話,就會報錯,從而無法創建,因此,我們在指定組的時候,要知道我們指定的組是否存在。
-d選項可以幫助我們在某一個目錄下設置自己的家目錄
-s選項用來設置我們的登錄shell,其實還有一個命令chsh也可以在我們用戶創建完成後更改shell。
-G選項可以為我們增加一些附加組,以便我們可以進入到某些目錄下進行工作,如果進入多個附加組,我們可以用“,”將附加組隔開
-N選項是一個什麽呢,這是一個默認的user組,如果我們在創建用戶時加上-N選項,就會把user(GID=100)作為用戶的主要組。
我們的用戶都是創建過程都是默認執行的,很多信息都是通過默認設置的,比如說我們的提示符,其實我們所創建的家目錄裏面的隱藏文件都是在/etc/skel/中復制並改變所有者和所屬組的呢。
默認值設定: /etc/default/useradd文件中
顯示或更改默認設置:
1 useradd -D 2 useradd –D -s SHELL 3 useradd –D –b BASE_DIR 4 useradd –D –g GROUP
我們可以通過useradd –D選項來查看我們的默認設置,當然我們還可以更改默認設置(root)
用戶設置
1 命令:usermod 2 格式:usermod [option] username 3 選項: 4 -u UID: 新UID 5 -g GID: 新主組 6 -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項 7 -s SHELL:新的默認SHELL 8 -c ‘COMMENT‘:新的註釋信息 9 -d HOME: 新家目錄不會自動創建;若要創建新家目錄並移動原家數據,同時使用-m選項 10 -l login_name: 新的名字; 11 -L: lock指定用戶,在/etc/shadow 密碼欄的增加 ! 12 -U: unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉 13 -e YYYY-MM-DD: 指明用戶賬號過期日期 14 -f INACTIVE: 設定非活動期限
用戶設置是在用戶創建後可以進行的活動,好多選項是和用戶創建時的選項和功能是一致的我就對不同的選項加以說明。
-l選項可以更改用戶名,一個我覺得用起來爽歪歪的選項,想想要是在公司一員工走了,但是他的家目錄下還有好多重要文件,我們可以將名字換成其他人的名字使用,這樣文件也能保存下來,但是有一點,他的組和無法通過這個選項進行同步。
-L選項和-U選項是一對,我們可以給某個用戶的密碼上鎖,使得該用戶無法登陸
-e選項可以設置用戶的過期時間,讓某一用戶到某個時間就無法再使用
-f選項是密碼過期後的天數,直到帳戶被永久禁用為止
刪除用戶
1 userdel [OPTION]... login 2 -r: 刪除用戶家目錄
我們可以刪除一個賬號,如果不加-r選項的話,這個用戶的家目錄包括郵箱等都不會被刪除,如果加上-r選項,就能刪除這個賬戶的家目錄等
修改用戶密碼
1 passwd [OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限 2 passwd: 修改自己的密碼
常用選項: -l:鎖定指定用戶 -u:解鎖指定用戶 -e:強制用戶下次登錄修改密碼 -n mindays: 指定最短使用期限 -x maxdays:最大使用期限 -w warndays:提前多少天開始警告 -i inactivedays:非活動期限 --stdin:從標準輸入接收用戶密碼 echo "PASSWORD" | passwd --stdin USERNAME
我們一般用這個命令來更改密碼,這個命令每個用戶都能使用,但是只有root用戶才可以在passwd後面跟上名字,普通用戶只能修改密碼。當然他還有一下重要選項,我們來介紹一下。
-e選項是為了防止一些用戶過於懶惰,設置的初始密碼就用初始密碼,一點也不改,這樣可不好,所以管理員就可以使用這個選項讓用戶在第一次登錄時就去修改密碼。
-n,-x,-w,-i選項可以用chage這個命令代替,使用起來很方便,不過在這我們給演示一下passwd的用法。
--stdin選項通常用在我們的腳本批量設置用戶中。
看用戶相關的ID信息
1 id [OPTION]... [USER] 2 -u: 顯示UID 3 -g: 顯示GID 4 -G: 顯示用戶所屬的組的ID 5 -n: 顯示名稱,需配合ugG使用
切換用戶
1 su [options...] [-] [user [args...] 2 切換用戶的方式: 3 su UserName:非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄 4 su - UserName:登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全 5 root su至其他用戶無須密碼;非root用戶切換時需要密碼
換個身份執行命令:
查看自己的附加組
命令:groups 格式:groups username
更換shell
命令:chsh
格式:chsh -s /path/shell
組的管理
組的存在對於linux來說很重要,因為我們的很多工作都不是一個人來完成的,為了能使大家在一個區域內共享文件,修改文件,可以讓大家都進入待一個組裏面,這樣就能夠合作完成繁重的工作,我們現在說如何創建組:
1 groupadd [OPTION]... group_name 2 -g GID: 指明GID號; [GID_MIN, GID_MAX] 3 -r: 創建系統組 4 CentOS 6: ID<500 5 CentOS 7: ID<1000
對於用戶再說,基本上每個人都有必須有一個私有組,可以有零個或多個附加組,我們的很多工作都是在附加組中完成的。
當然我們還可以通過groupmod對屬性進行修改,比如更改組名,更改組ID等
組屬性修改:
groupmod [OPTION]... group -n group_name: 新名字 -g GID: 新的GID
當我們不在使用某個組的時候,我們就會刪除這個組,刪除組的命令如下:
組刪除:
groupdel
groupdel GROUP
在創建完組以後,我們就要向組內添加新成員,對於root來說可以使用groupmems來管理組成員:
1 groupmems [options] [action] 2 options: 3 -g, --group groupname 更改為指定組 (只有root) 4 Actions: 5 -a, --add username 指定用戶加入組 6 -d, --delete username 從組中刪除用戶 7 -p, --purge 從組中清除所有成員 8 -l, --list 顯示組成員列表
通過上面的參數我們可以看到,root可以通過groupmems來添加,刪除和顯示組成員,但是如果我們的服務器裏面有很多個組的時候還是讓root一個人來管理嗎,不是的,我們的組還是有組管理員的。組管理員有root在指定或刪除,對於一個組來說,組管理員的權利是最大的,如何添加管理員呢,有一個命令gpasswd同時也可以設置組的密碼:
1 命令:gpasswd 2 格式:gpasswd [OPTION] GROUP 3 選項: 4 -a user: 將user添加至指定組中 5 -d user: 從指定組中移除用戶user 6 -A user1,user2,...: 設置有管理權限的用戶列表
我們可以通過-A選項來給一個組添加管理員,管理員可以用gpasswd命令來對這個組進行管理,管理員可以是不在這個組的成員,如果需要,管理員可以將自己增加到組內
對於gpasswd,主要是為了限制其他人來進這個組,如果要進這個組,可以臨時切換成組成員,這樣,這個人的主要組也會臨時變成他所要進組,創建的文件也會是屬於他所進的組:
newgrp命令:臨時切換主組
如果用戶本不屬於此組,則需要組密碼
作為一個非組用戶想進此組:
用戶與用戶組管理