練習一
1、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄
[root@localhost etc]# ls -d /etc/[^[:alpha:]][:alpha:]*
2、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@localhost etc]# mkdir /tmp/mytest1;cp -r /etc/p*[^0-9] /tmp/mytest1[root@localhost etc]# ls /tmp/mytest1/pam.d passwd passwd- pki plymouth pm popt.d prelink.conf.d printcap profile profile.d protocols[root@localhost etc]#
3、將/etc/issue文件中的內容轉換為大寫后保存至/tmp/issue.out文件中
[root@localhost etc]# cat /etc/issue | tr "[a-z]" "[A-Z]" > /tmp/issue.out[root@localhost etc]# cat /tmp/issue.out /SKERNEL /R ON AN /M[root@localhost etc]#
總結描述用戶和組管理類命令的使用方法并完成以下練習:
linux每個用戶是通過UID來區分的也是用戶得唯一標識
管理員:root 0普通用戶:1-60000自動分配系統用戶:1-499 (CentOS 6以前), 1-999 (CentOS 7以后)登錄用戶:500+ (CentOS6以前), 1000+(CentOS7以后)
Linux中可以將一個或多個用戶加入用戶組中,用戶組是通過GID來唯一標識的。
管理員組:root, 0 普通組: 系統組:1-499(CentOS 6以前), 1-999(CentOS7以后)普通組:500+(CentOS 6以前), 1000+(CentOS7以后)
主要配置文件
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)/etc/shadow:用戶口令及其相關屬性 /etc/group:組及其屬性信息 /etc/gshadow:組口令及其相關屬性### 用戶創建語法```httpuseradd [options] LOGIN
選項
-u UID -o 配合-u 選項,不檢查UID的唯一性-g GID 指明用戶所屬基本組,可為組名,也可以GID-c "COMMENT“ 用戶的注釋信息-d HOME_DIR 以指定的路徑(不存在)為家目錄-s SHELL 指明用戶的默認shell程序,可用列表在/etc/shells文件中-G GROUP1[,GROUP2,...] 為用戶指明附加組,組須事先存在-N 不創建私用組做主組,使用users組做主組-r 創建系統用戶 CentOS 6之前: ID<500,CentOS7 以后: ID<1000-m 創建家目錄,用于系統用戶-M 不創建家目錄,用于非系統用戶-p 指定加密的密碼
例
useradd -r -u 48 -g http -s /sbin/nologin -d /var/www -c "http" http
用戶屬性修改
語法
usermod [OPTION] login
選項
-u UID: 新UID-g GID: 新主組-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項-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: 設定非活動期限,即寬限期
刪除用戶
語法
userdel [OPTION]... Login
選項
-f, --force 強制-r, --remove 刪除用戶家目錄和郵箱
查看用戶ID
id [OPTION]... [USER]
選項
-u: 顯示UID-g: 顯示GID-G: 顯示用戶所屬的組的ID-n: 顯示名稱,需配合ugG使用
切換用戶
su [options...] [-] [user [args...]]
選項
-l --login su -l UserName 相當于 su - UserName-c, --command pass a single command to the shell with -c
切換用戶的方式:
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄,即不完 全切換 su - UserName:登錄式切換,會讀取目標用戶的配置文件,切換至自已的家目錄,即完全切換 說明:root su至其他用戶無須密碼;非root用戶切換時需要密碼
注意:su 切換新用戶后,使用 exit 退回至舊的用戶身份,而不要再用 su 切換至舊用戶,否則會生成很 多的bash子進程,環境可能會混亂。
修改口令
passwd [OPTIONS] UserName
選項
-d:刪除指定用戶口令-l:鎖定指定用戶-u:解鎖指定用戶-e:強制用戶下次登錄修改口令-f:強制操作-n mindays:指定最短使用期限-x maxdays:最大使用期限-w warndays:提前多少天開始警告-i inactivedays:非活動期限--stdin:從標準輸入接收用戶口令,Ubuntu無此選項
修改用戶口令策略
chage [OPTION]... LOGIN
選項
-d LAST_DAY #更改口令的時間-m --mindays MIN_DAYS-M --maxdays MAX_DAYS-W --warndays WARN_DAYS-I --inactive INACTIVE #口令過期后的寬限期-E --expiredate EXPIRE_DATE #用戶的有效期-l 顯示口令策略
創建組
groupadd [OPTION]... group_name
選項
-g GID 指明GID號;[GID_MIN, GID_MAX]-r 創建系統組,CentOS 6之前: ID<500,CentOS 7以后: ID<1000
修改組
groupmod [OPTION]... group
選項
-n group_name: 新名字-g GID: 新的GID
刪除組
groupdel [options] GROUP
選項
-f, --force 強制刪除,即使是用戶的主組也強制刪除組,但會導致無主組的用戶不可用無法登錄
更改組口令
gpasswd命令,可以更改組口令,也可以修改附加組的成員關系
gpasswd [OPTION] GROUP
選項
-a user 將user添加至指定組中-d user 從指定附加組中移除用戶user-A user1,user2,... 設置有管理權限的用戶列表
更改和查看組成員
groupmems [options] [action]
選項
-g, --group groupname #更改為指定組 (只有root)-a, --add username #指定用戶加入組-d, --delete username #從組中刪除用戶-p, --purge #從組中清除所有成員-l, --list #顯示組成員列表
練習二
(1)、創建組distro,其GID為2019;
root@localhost /]# groupadd -g 2019 distro
(2)、創建用戶mandriva, 其ID號為1005;基本組為distro;
[root@localhost /]# useradd -u 1005 -g 2019 mandriva[root@localhost /]#
(3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux;
[root@localhost /]# useradd -u 1100 -d /home/linux mageia
(4)、給用戶mageia添加口令,口令為mageedu,并設置用戶口令7天后過期
[root@localhost /]# passwd -x 7 mageiaAdjusting aging data for user mageia.passwd: Success[root@localhost /]# echo mageedu | passwd --stdin mageiaChanging password for user mageia.passwd: all authentication tokens updated successfully.[root@localhost /]#
(5)、刪除mandriva,但保留其家目錄;
[root@localhost home]# userdel mandriva[root@localhost home]# lslinux mandriva shi
(6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
[root@localhost home]# groupadd peguin;useradd -u 2002 -g distro -G peguin slackware [root@localhost home]# id slackwareuid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin)[root@localhost home]#
(7)、修改slackware的默認shell為/bin/tcsh;
[root@localhost home]# usermod -s /bin/tcsh slackware[root@localhost home]# cat /etc/passwd | tail -1slackware:x:2002:2019::/home/slackware:/bin/tcsh[root@localhost home]#
(8)、為用戶slackware新增附加組admins,并設置不可登陸。
[root@localhost home]# groupadd admins;usermod -G admins -s /bin/nologin slackware[root@localhost home]# id slackwareuid=2002(slackware) gid=2019(distro) groups=2019(distro),2021(admins)[root@localhost home]# cat /etc/passwd | tail -1slackware:x:2002:2019::/home/slackware:/bin/nologin[root@localhost home]#
5、創建用戶user1、user2、user3。在/data/下創建目錄test
(1)、目錄/data/test屬主、屬組為user1
[root@localhost date]# chown user1:user1 /datetest/
(2)、在目錄屬主、屬組不變的情況下,user2對文件有讀寫權限
[root@localhost date]# setfacl -m u:user2:6 test/[root@localhost date]# getfacl test/# file: test/# owner: user1# group: user1user::rwxuser:user2:rw-group::r-xmask::rwxother::r-x[root@localhost date]# lltotal 0drwxrwxr-x+ 2 user1 user1 6 Nov 28 06:10 test[root@localhost date]#
(3)、user1在/data/test目錄下創建文件a1.sh, a2.sh, a3.sh, a4.sh,設置所有用戶都不可刪除1.sh,2.sh文件、除了user1及root之外,所有用戶都不可刪除a3.sh, a4.sh
[user1@localhost test]$ touch a{1..4}.sh[user1@localhost test]$ lsa1.sh a2.sh a3.sh a4.sh[root@localhost test]# chattr +i a[1..2].sh [root@localhost test]# lsattr ----i--------------- ./a2.sh-------------------- ./a3.sh-------------------- ./a4.sh----i--------------- ./a1.sh[root@localhost test]# rm -rf a1.sh rm: cannot remove a1.sh: Operation not permitted[root@localhost test]# su - user1Last login: Sun Nov 28 06:32:45 EST 2021 on pts/0[user1@localhost ~]$ cd /date/test[user1@localhost test]$ rm -rf a1.sh rm: cannot remove a1.sh: Operation not permitted[root@localhost test]# chmod o+t a[3-4].sh[root@localhost test]# su - user3[user3@localhost ~]$ cd /date/test[user3@localhost test]$ rm -rf a3.sh rm: cannot remove a3.sh: Permission denied[user3@localhost test]$ rm -rf a4.sh rm: cannot remove a4.sh: Permission denied
(4)、user3增加附加組user1,同時要求user1不能訪問/data/test目錄及其下所有文件
[root@localhost test]# usermod -G user1 user3[root@localhost test]# id user3uid=2005(user3) gid=2005(user3) groups=2005(user3),2003(user1)[root@localhost test]# setfacl -m g::0 /date/test[root@localhost test]#
(5)、清理/data/test目錄及其下所有文件的acl權限
[root@localhost test]# setfacl -b /date/test[root@localhost test]# getfacl /date/testgetfacl: Removing leading / from absolute path names# file: date/test# owner: user1# group: user1user::rwxgroup::---other::r-x[root@localhost test]#