馬哥網絡教育22期第三周練習
Linux用戶及用戶組管理
Linux是個多用戶多任務的分時操作系統,所有一個要使用系統資源的用戶都必須先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。用戶的賬號一方面能幫助系統管理員對使用系統的用戶進行跟蹤,并控制他們對系統資源的訪問;另一方面也能幫助用戶組織文件,并為用戶提供安全性保護。每個用戶賬號都擁有一個惟一的用戶名和用戶口令。用戶在登錄時鍵入正確的用戶名和口令后,才能進入系統和自己的主目錄。
實現用戶賬號的管理,要完成的工作主要有如下幾個方面:
a.用戶賬號的添加、刪除和修改。
b.用戶口令的管理。
c.用戶組的管理。
Linux用戶組管理
用戶組(group)就是具有相同特征的用戶(user)的集合體;每個用戶都有一個用戶組,系統能對一個用戶組中的所有用戶進行集中管理。
用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就對/etc/group文件的更新。
系統文件
完成用戶管理的工作有許多種方法,不過每一種方法實際上都是對有關的系統文件進行修改。與用戶和用戶組相關的信息都存放在一些系統文件中,這些文件包括/etc/passwd,/etc/shadow,/etc/group等。
-
/etc/passwd :是用戶管理工作涉及的最重要的一個文件;記錄了每個用戶的一些基本屬性;這個文件對所有用戶都是可讀的;
用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄Shell root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
-
/etc/shadow :記錄行和/etc/passwd中的一一對應;由pwconv命令根據/etc/passwd中的數據自動產生;
登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標志 bin:*:16659:0:99999:7::: daemon:*:16659:0:99999:7:::
-
/etc/group :用戶組的所有信息都存放在此文件中;
組名:口令:組標識號:組內用戶列表 mail:x:12:postfix man:x:15:
用戶組管理命令
-
groupadd命令:添加用戶組
-
使用格式:
-
groupadd [選項] GROUP
-
選項:
-
-g GID :指定用戶的用戶號,如果同時有-o選項,則能重復使用其他用戶的標識號;
-
-G :用戶能夠支持的用戶組;
-
-o :一般和-g選項同時使用,表示新用戶組的GID能和系統已有用戶組的GID相同;
示例:創建組distro,其GID為2016;
~]# groupadd -g 2016 distro
-
groupdel命令:刪除用戶組
-
使用格式:
-
groupdel [選項] GROUP
示例:刪除用戶組test1
~]# cat /etc/group | grep test test1:x:2017: test2:x:2018: test3:x:2019: ~]# groupdel test1 ~]# cat /etc/group | grep test test2:x:2018: test3:x:2019:
-
groupmod命令:修改用戶組屬性
-
使用格式:
-
groupmod [選項] GROUP
-
選項:
-
-g GID :為用戶組指定新的組標識號;
-
-o :和-g選項同時使用,用戶組的新GID能和系統已有用戶組的GID相同;
-
-n :新用戶組,將用戶組的名字改為新名字;
示例:將test2的組標識號改為3329
~]# groupmod -g 3329 test2 ~]# cat /etc/group | grep test test2:x:3329: test3:x:2019:
用戶管理命令
-
useradd命令:添加用戶
-
使用格式:
-
useradd [選項] 用戶
-
選項:
-
-c :指定一段注釋性描述;
-
-d :目錄,指定用戶主目錄,如果此目錄不存在,則同時使用-m選項,能創建主目錄;
-
-g :用戶組,指定用戶所屬的用戶組;
-
-G :用戶組,用戶組,指定用戶所屬的附加組;
-
-s :Shell文件,指定用戶的登錄Shell;
-
-u :用戶號,指定用戶的用戶號,如果同時有-o選項,則能重復使用其他用戶的標識號;
-
-p :這個命令是需求提供md5碼的加密口令,普通數字是不行的;
-
-r :創建一個系統賬戶;
示例:創建用戶mandriva,其ID號為1005,基本組為distro
~]# useradd -g distro -u 1005 mandriva ~]# less /etc/passwd | grep mandriva mandriva:x:1005:2016::/home/mandriva:/bin/bash
-
userdel命令:刪除用戶
-
使用格式:
-
userdel [選項] 用戶
-
選項:
-
-r :用戶主目錄中的文件將隨用戶主目錄一起刪除;
-
-f :強制刪除用戶賬戶,甚至用戶仍然在登錄狀態;
-
注意:此選項危險,可能會破壞系統的穩定性;
示例:刪除用戶mageia及其父目錄
~]# userdel -r mageia
-
usermod命令:修改用戶賬戶
-
使用格式:
-
usermod [選項] 用戶
-
選項:
-
-a :將用戶添加到附加組;只能和 -G 選項一起使用;
-
-d :用戶新的登錄目錄;
-
-e :用戶將被禁用的日期;
-
-f :密碼過期之后,賬戶被徹底禁用之前的天數;
-
-g :用戶的新初始登錄組的組名或數字代號;
-
-G :用戶還屬于的附加組列表;組之間使用逗號分隔,沒有空格;
-
-L :鎖定用戶的密碼;
-
-m :將用戶的主目錄移動到新位置;
-
-o :可以將用戶 ID 改為非唯一的值;
-
-s :用戶的新登錄 shell 的名稱;
-
-u :用戶 ID 的新數值;
示例:修改用戶UID號
~]# id -u yuanfei 2000 ~]# usermod -u 3000 yuanfei ~]# id -u yuanfei 3000
用戶口令管理
用戶管理的一項重要內容是用戶口令的管理。用戶賬號剛創建時沒有口令,是被系統鎖定的,無法使用,必須為其指定口令后才能使用,即使是空口令。超級管理員用戶能為自己和其他用戶指定口令,普通用戶只能修改自己的口令;
-
passwd命令:添加及修改用戶口令
-
使用格式:
-
passwd [選項] [用戶]
-
選項:
-
-f :強制執行;
-
-g :修改群組密碼;
-
-i :過期后停止用戶賬號;
-
-k :用于更改用戶的有效口令,無效口令則保留原來的狀態
-
-l :鎖定用戶的口令
-
-u :解鎖,linux不允許創建密碼為空的用戶,-f可以解除這種保護;
-
-d :刪除使用者的密碼, 只有具備超級用戶權限的使用者方可使用;
-
-n :修改密碼的最小天數;
-
-x :修改密碼的最大天數;
-
-i :密碼有效期;
-
-w :密碼過期警告時間;
-
-S :顯示簡短密碼的信息;
-
–stdin:從標準輸入中讀入新密碼(此時可以看見設置的密碼);
示例:為用戶yuanfei添加口令optios@123
~]# passwd yuanfei 更改用戶 yuanfei 的密碼 。 新的 密碼: 重新輸入新的 密碼: passwd:所有的身份驗證令牌已經成功更新。
用戶、用戶組及口令組合使用示例
示例1:創建組distro,其GID為2016;
~]# groupadd -g 2016 distro ~]# less /etc/group | grep distro distro:x:2016:
示例2:創建用戶mandriva, 其ID號為1005;基本組為distro;
~]# useradd -u 1005 -g distro mandriva ~]# less /etc/passwd | grep mandriva mandriva:x:1005:2016::/home/mandriva:/bin/bash
示例3:創建用戶mageia,其ID號為1100,家目錄為/home/linux;
~]# useradd -u 1100 -d /home/linux mageia ~]# less /etc/passwd | grep mageia mageia:x:1100:1100::/home/linux:/bin/bash
示例4:給用戶mageia添加密碼,密碼為mageedu;
~]# passwd mageia 更改用戶 mageia 的密碼 。 新的 密碼: 無效的密碼: 密碼少于 8 個字符 重新輸入新的 密碼: passwd:所有的身份驗證令牌已經成功更新。
示例5:刪除mandriva,但保留其家目錄;
~]# userdel mandriva ~]# ls /home linux mandriva
示例6:創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
~]# useradd -u 2002 -g distro -G peguin slackware ~]# groups slackware slackware : distro peguin
示例7:修改slackware的默認shell為/bin/tcsh;
~]# usermod -s /bin/tcsh slackware ~]# less /etc/passwd |grep slackware slackware:x:2002:2016::/home/slackware:/bin/tcsh
示例8:為用戶slackware新增附加組admins;
~]# usermod -a -G admins slackware ~]# groups slackware slackware : distro peguin admins
示例9:為slackware添加密碼,且要求密碼最短使用期限為3天,最長為180天,警告為3天;
~]# passwd slackware 更改用戶 slackware 的密碼 。 新的 密碼: 重新輸入新的 密碼: passwd:所有的身份驗證令牌已經成功更新。 ~]# passwd -n 3 -x 180 -w 3 slackware 調整用戶密碼老化數據slackware。 passwd: 操作成功 ~]# cat /etc/shadow | grep slackware slackware:$6$qCKs38NU$5zBGHNAKeD75hhI55kcZ82uciLI/fJEwPM6PZCymVnZpFqd5jwYdU3CrWk2d3SmN4XPUMYKa46DnjLV/m2ItO0:17060:3:180:3:::
示例10:添加用戶openstack,其ID號為3003, 基本組為clouds,附加組為peguin和nova;
~]# useradd -u 3003 -g clouds -G peguin,nova openstack
示例11:添加系統用戶mysql,要求其shell為/sbin/nologin;
~]# useradd -r mysql -s /sbin/nologin ~]# id mysql uid=996(mysql) gid=994(mysql) 組=994(mysql)
示例12:使用echo命令,非交互式為openstack添加密碼;
~]# echo "test1@123" | passwd --stdin openstack 更改用戶 openstack 的密碼 。 passwd:所有的身份驗證令牌已經成功更新。
linux常用命令使用示例
常用命令介紹
cut命令:文本截取工具
-
使用格式:
-
cut OPTION… [FILE]…
-
選項:
-
-d: 表示以什么作為分隔符,進行切割,默認是空格;
-
-f: 選擇哪幾項進行輸出,如:f1表示切割出來的第一項;
uniq命令:用于報告或忽略文件中的重復行;
-
使用格式:
-
uniq [OPTION]… [INPUT [OUTPUT]]
-
選項:
-
-c或——count:在每列旁邊顯示該行重復出現的次數;
-
-d或–repeated:僅顯示重復出現的行列;
-
-f<欄位>或–skip-fields=<欄位>:忽略比較指定的欄位;
-
-s<字符位置>或–skip-chars=<字符位置>:忽略比較指定的字符;
-
-u或——unique:僅顯示出一次的行列;
-
-w<字符位置>或–check-chars=<字符位置>:指定要比較的字符;
sort命令:將文件進行排序,并將排序結果標準輸出
-
使用格式:
-
sort [OPTION]… [FILE]…
-
sort [OPTION]… –files0-from=F
-
選項:
-
-b :忽略每行前面開始出的空格字符;
-
-c :檢查文件是否已經按照順序排序;
-
-d :排序時,處理英文字母、數字及空格字符外,忽略其他的字符;
-
-f :排序時,將小寫字母視為大寫字母;
-
-i :排序時,除了040至176之間的ASCII字符外,忽略其他的字符;
-
-m :將幾個排序號的文件進行合并;
-
-M :將前面3個字母依照月份的縮寫進行排序;
-
-n :依照數值的大小排序;
-
-u :在輸出行中去除重復行;
-
-o<輸出文件> :將排序后的結果存入制定的文件;
-
-r :以降序排序;
-
-t<分隔字符> :指定排序時所用的欄位分隔字符;
-
-k<number> :指定按第幾列排序,一般和 -t 一起使用;
-
+<起始欄位>-<結束欄位> :以指定的欄位來排序,范圍由起始欄位到結束欄位的前一欄位;
tail命令:輸入文件中的尾部內容
-
使用格式:
-
tail [OPTION]… [FILE]…
-
選項:
-
–retry:即是在tail命令啟動時,文件不可訪問或者文件稍后變得不可訪問,都始終嘗試打開文件。使用此選項時需要與選項“——follow=name”連用;
-
-c<N> :輸出文件尾部的N(N為整數)個字節內容;
-
-f<name/descriptor> :顯示文件最新追加的內容?!皀ame”表示以文件名的方式監視文件的變化?!?f”與“-fdescriptor”等效;
-
-F:與選項“-follow=name”和“–retry"連用時功能相同;
-
-n<N> :輸出文件的尾部N(N位數字)行內容。
-
–pid=<進程號>:與“-f”選項連用,當指定的進程號的進程終止后,自動退出tail命令;
-
-q :當有多個文件參數時,不輸出各個文件名;
-
-s<秒數> :與“-f”選項連用,指定監視文件變化時間隔的秒數;
-
-v :當有多個文件參數時,總是輸出各個文件名;
head命令:顯示文件的開頭的內容
-
使用格式:
-
head [OPTION]… [FILE]…
-
選項:
-
-n<數字>:指定顯示頭部內容的行數;
-
-c<字符數>:指定顯示頭部內容的字符數;
-
-v:總是顯示文件名的頭信息;
-
-q:不顯示文件名的頭信息;
last命令:顯示用戶最近登錄信息
-
使用格式:
-
last [選項] [name…] [tty…]
-
選項:
-
-a:把從何處登入系統的主機名稱或ip地址,顯示在最后一行;
-
-d:將IP地址轉換成主機名稱;
-
-f <記錄文件>:指定記錄文件。
-
-n <顯示列數>或-<顯示列數>:設置列出名單的顯示列數;
-
-R:不顯示登入系統的主機名稱或IP地址;
-
-x:顯示系統關機,重新開機,以及執行等級的改變等信息;
find命令:用來在指定目錄下查找文件
-
使用格式:
-
find [options] [expression]
-
選項:
-
-amin<分鐘>:查找在指定時間曾被存取過的文件或目錄,單位以分鐘計算;
-
-anewer<參考文件或目錄>:查找其存取時間較指定文件或目錄的存取時間更接近現在的文件或目錄;
-
-atime<24小時數>:查找在指定時間曾被存取過的文件或目錄,單位以24小時計算;
-
-cmin<分鐘>:查找在指定時間之時被更改過的文件或目錄;
-
-cnewer<參考文件或目錄>查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄;
-
-ctime<24小時數>:查找在指定時間之時被更改的文件或目錄,單位以24小時計算;
-
-daystart:從本日開始計算時間; -depth:從指定目錄下最深層的子目錄開始查找;
-
-expty:尋找文件大小為0 Byte的文件,或目錄下沒有任何子目錄或文件的空目錄;
-
-exec<執行指令>:假設find指令的回傳值為True,就執行該指令;
-
-false:將find指令的回傳值皆設為False;
-
-fls<列表文件>:此參數的效果和指定“-ls”參數類似,但會把結果保存為指定的列表文件;
-
-follow:排除符號連接;
-
-fprint<列表文件>:此參數的效果和指定“-print”參數類似,但會把結果保存成指定的列表文件;
-
-fprint0<列表文件>:此參數的效果和指定“-print0”參數類似,但會把結果保存成指定的列表文件;
-
-fprintf<列表文件><輸出格式>:此參數的效果和指定“-printf”參數類似,但會把結果保存成指定的列表文件;
-
-fstype<文件系統類型>:只尋找該文件系統類型下的文件或目錄;
-
-gid<群組識別碼>:查找符合指定之群組識別碼的文件或目錄;
-
-group<群組名稱>:查找符合指定之群組名稱的文件或目錄;
-
-ilname<范本樣式>:此參數的效果和指定“-lname”參數類似,但忽略字符大小寫的差別;
-
-iname<范本樣式>:此參數的效果和指定“-name”參數類似,但忽略字符大小寫的差別;
-
-inum<inode編號>:查找符合指定的inode編號的文件或目錄;
-
-ipath<范本樣式>:此參數的效果和指定“-path”參數類似,但忽略字符大小寫的差別;
-
-iregex<范本樣式>:此參數的效果和指定“-regexe”參數類似,但忽略字符大小寫的差別;
-
-links<連接數目>:查找符合指定的硬連接數目的文件或目錄;
-
-iname<范本樣式>:指定字符串作為尋找符號連接的范本樣式;
-
-ls:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出;
-
-maxdepth<目錄層級>:設置最大目錄層級;
-
-mindepth<目錄層級>:設置最小目錄層級;
-
-mmin<分鐘>:查找在指定時間曾被更改過的文件或目錄,單位以分鐘計算;
-
-mount:此參數的效果和指定“-xdev”相同;
-
-mtime<24小時數>:查找在指定時間曾被更改過的文件或目錄,單位以24小時計算;
-
-name<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式;
-
-newer<參考文件或目錄>:查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄;
-
-nogroup:找出不屬于本地主機群組識別碼的文件或目錄;
-
-noleaf:不去考慮目錄至少需擁有兩個硬連接存在;
-
-nouser:找出不屬于本地主機用戶識別碼的文件或目錄;
-
-ok<執行指令>:此參數的效果和指定“-exec”類似,但在執行指令之前會先詢問用戶,若回答“y”或“Y”,則放棄執行命令;
-
-path<范本樣式>:指定字符串作為尋找目錄的范本樣式;
-
-perm<權限數值>:查找符合指定的權限數值的文件或目錄;
-
-print:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出。格式為每列一個名稱,每個名稱前皆有“./”字符串;
-
-print0:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出。格式為全部的名稱皆在同一行;
-
-printf<輸出格式>:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出。格式可以自行指定;
-
-prune:不尋找字符串作為尋找文件或目錄的范本樣式;
-
-regex<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式;
-
-size<文件大小>:查找符合指定的文件大小的文件;
-
-true:將find指令的回傳值皆設為True;
-
-typ<文件類型>:只尋找符合指定的文件類型的文件;
-
-uid<用戶識別碼>:查找符合指定的用戶識別碼的文件或目錄;
-
-used<日數>:查找文件或目錄被更改之后在指定時間曾被存取過的文件或目錄,單位以日計算;
-
-user<擁有者名稱>:查找符和指定的擁有者名稱的文件或目錄;
-
-xdev:將范圍局限在先行的文件系統中;
-
-xtype<文件類型>:此參數的效果和指定“-type”參數類似,差別在于它針對符號連接檢查。
wc命令:用來計算數字。利用wc指令我們可以計算文件的Byte數、字數或是列數,若不指定文件名稱,或是所給予的文件名為“-”,則wc指令會從標準輸入設備讀取數據。
-
使用格式:
-
wc [OPTION]… [FILE]…
-
wc [OPTION]… –files0-from=F
-
選項:
-
-c或–bytes或——chars:只顯示Bytes數;
-
-l或——lines:只顯示列數;
-
-w或——words:只顯示字數;
命令使用示例
1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。
~]# who | cut -d " " -f1 | uniq root
2、取出最后登錄到當前系統的用戶的相關信息。
~]# last | head -n 1 root pts/0 192.168.1.105 Fri Sep 16 18:10 still logged in
3、取出當前系統上被用戶當作其默認shell的最多的那個shell。
~]# cut -d ":" -f7 /etc/passwd | uniq -c | sort -n | tail -1 13 /sbin/nologin
4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。
~]# sort -t ":" -k 3 -n /etc/passwd | tail -10 | tr [a-z] [A-Z] > /tmp/maxusers.txt ~]# cat /tmp/maxusers.txt NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN AVAHI-AUTOIPD:X:170:170:AVAHI IPV4LL STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGIN MYSQL:X:996:994::/HOME/MYSQL:/SBIN/NOLOGIN POLKITD:X:997:995:USER FOR POLKITD:/:/SBIN/NOLOGIN SYSTEMD-NETWORK:X:998:996:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD BUS PROXY:/:/SBIN/NOLOGIN MAGEIA:X:1100:1100::/HOME/LINUX:/BIN/BASH SLACKWARE:X:2002:2016::/HOME/SLACKWARE:/BIN/TCSH OPENSTACK:X:3003:3332::/HOME/OPENSTACK:/BIN/BASH INUX:X:3004:3004::/HOME/INUX:/BIN/BASH
5、取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
~]# ifconfig eth0 |grep "inet addr" | cut -d ":" -f2 |cut -d " " -f1 192.168.1.108
6、列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。
~]# find /etc -name *.conf |tr [a-z] [A-Z] > /tmp/etc.conf ~]# cat /tmp/etc.conf /ETC/RESOLV.CONF /ETC/PKI/CA-TRUST/CA-LEGACY.CONF /ETC/YUM/PLUGINCONF.D/FASTESTMIRROR.CONF
7、顯示/var目錄下一級子目錄或文件的總個數。
~]# ls /var |wc -l 20
8、取出/etc/group文件中第三個字段數值最小的10個組的名字。
~]# sort -t ":" -k 3 -n /etc/group | head -10 | cut -d ":" -f1 root bin daemon sys adm tty disk lp mem kmem
9、將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。
~]# cat /etc/{fstab,issue} > /tmp/etc.test
原創文章,作者:N22-無錫-沉默,如若轉載,請注明出處:http://www.www58058.com/41208
很好,把一些常用的命令都列出來了,不過排版還可以在稍微的改一些,加油