第二週(0830~0905)
阿新 • • 發佈:2021-09-05
第二週 作業
1、顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其它任意長度任意字元的檔案或目錄
2、複製/etc目錄下所有以p開頭,以非數字結尾的檔案或目錄到/tmp/mytest1目錄中。
3、將/etc/issue檔案中的內容轉換為大寫後儲存至/tmp/issue.out檔案中
4、請總結描述使用者和組管理類命令的使用方法並完成以下練習:
(1)、建立組distro,其GID為2019;
(2)、建立使用者mandriva, 其ID號為1005;基本組為distro;
(3)、建立使用者mageia,其ID號為1100,家目錄為/home/linux;
(4)、給使用者mageia新增密碼,密碼為mageedu,並設定使用者密碼7天后過期
(5)、刪除mandriva,但保留其家目錄;
(6)、建立使用者slackware,其ID號為2002,基本組為distro,附加組peguin;
(7)、修改slackware的預設shell為/bin/tcsh;
(8)、為使用者slackware新增附加組admins,並設定不可登陸。
5、建立使用者user1、user2、user3。在/data/下建立目錄test
(1)、目錄/data/test屬主、屬組為user1
(2)、在目錄屬主、屬組不變的情況下,user2對檔案有讀寫許可權
(3)、user1在/data/test目錄下建立檔案a1.sh, a2.sh, a3.sh, a4.sh,設定所有使用者都不可刪除1.sh,2.sh檔案、除了user1及root之外,所有使用者都不可刪除a3.sh, a4.sh
(4)、user3增加附加組user1,同時要求user1不能訪問/data/test目錄及其下所有檔案
(5)、清理/data/test目錄及其下所有檔案的acl許可權
學習前,先拜拜大神!
Q1、顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其它任意長度任意字元的檔案或目錄
Q4、請總結描述使用者和組管理類命令的使用方法
總結描述:
(一)3A的含義
Authentication:認證,驗證使用者身份
Authorization:授權,不同的使用者設定不同許可權
Accouting|Audition:審計
(二)UID,GID的規範
Linux中每個使用者是通過 User Id (UID)來唯一標識的(組ID的範圍含義與使用者ID的範圍含義近似)
管理員:root, 0 (系統認為uid 0 為系統管理員)
普通使用者:1-60000 自動分配
系統使用者:1-499 (CentOS 6以前), 1-999 (CentOS 7以後) :對守護程序獲取資源進行許可權分配,供程式使用,非人使用。
登入使用者:500+ (CentOS6以前), 1000+(CentOS7以後) :給使用者進行互動式登入使用,可以理解為普通登入使用者。
(三)配置檔案
/etc/passwd:使用者及其屬性資訊(名稱、UID、主組ID等)
/etc/shadow:使用者密碼及其相關屬性
/etc/group:組及其屬性資訊
/etc/gshadow:組密碼及其相關屬性
(四)passwd檔案資訊格式
login name:登入用名(wangping)
passwd:密碼 (x)
UID:使用者身份編號 (1000)
GID:登入預設所在組編號 (1000)
GECOS:使用者全名或註釋
home directory:使用者主目錄 (/home/wangping)
shell:使用者預設使用shell (/bin/bash)
shadow檔案資訊格式
普通使用者建立賬號,預設給予的賬號配置,有一個配置檔案/etc/login.defs
(五)使用者和組管理的命令,重點需要掌握的命令useradd,usermod
useradd命令用於建立賬號:
useradd [選項] 登入名
-u 指定UID
-g GID 指明使用者所屬基本組,可為組名,也可以GID,使用時需要此組已經存在。
-c COMMENT 使用者的註釋資訊
-d HOME_DIR 以指定的路徑(不存在)為家目錄,通過複製/etc/skel目錄並重命名實現;
指定家目錄如果事先存在,則不會為使用者複製環境配置檔案,登入後,會出現 "-bash-4.2$"現象
-s shell SHELL 指明使用者的預設shell程式,可用列表在/etc/shells檔案中
-G 附加組,GROUP1[,GROUP2,...] 為使用者指明附加組,組須事先存在
-r 建立系統使用者
-m 建立家目錄,用於系統使用者
-M 不建立家目錄,用於非系統使用者
舉例:useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache server" apache
-r 使用系統uid 1000以內
-u 48 指定uid 為48
-s 指定 shell互動方式,/sbin/nologin 不登入,對外服務,程式不需要登入互動
-c 備註這個賬戶的用途,可選項,不寫也無所謂
apache賬戶名稱
useradd -D 顯示建立使用者的環境預設配置,對應檔案是:/etc/default/useradd
普通家目錄環境配置檔案來源:/etc/skel/
usermod命令:修改使用者屬性
usermod [選項] 登入名
-u UID: 指定新的UID
-g GID: 指定新的基本組(主組)
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋,用-a 保留原有組進行追加;
-s 修改新的預設SHELL
-c 修改成新的註釋資訊
-d 修改家目錄,目標家目錄不會自動建立;建立新家目錄並移動原家資料,同時使用-m選項
-l login_name: 新的名字,修改使用者名稱
-e YYYY-MM-DD: 指明使用者賬號過期日期,主要用於臨時賬戶
-f INACTIVE: 設定非活動期限,即寬限期,密碼過期後可以修改的時間週期
-L lock指定使用者,即在/etc/shadow 密碼欄的增加 !
-U unlock指定使用者,將 /etc/shadow 密碼欄的 ! 拿掉
groupadd [options] GROUP
-g --gid GIDuse GID for the new group,-----指定組ID 建立組
-K --key KEY=VALUEoverride /etc/login.defs defaults ---覆蓋配置檔案 "/ect/login.defs"
-o --non-uniqueallow to create groups with duplicate(non-unique) GID---允許新增組ID號不是唯一的組
-r --systemcreate a system account ----建立系統組
getfacl FILE
檢視目錄或檔案訪問控制詳細資訊
setfacl FILE
設定目錄或檔案訪問控制詳細資訊
setfacl [-bkndRLP]{ -m|-M|-x|-X ... } file ...
-m --modify-acl 更改檔案的訪問控制列表 (常用)
-R --recursive 遞迴操作子目錄 (常用)
-b --remove-all 刪除所有擴充套件訪問控制列表條目 (常用)
-M --modify-file=file 從檔案讀取訪問控制列表條目更改
-x --remove=acl 根據檔案中訪問控制列表移除條目
-X --remove-file=file 從檔案讀取訪問控制列表條目並刪除
-k --remove-default 移除預設訪問控制列表
--set=acl 設定替換當前的檔案訪問控制列表
--set-file=file 從檔案中讀取訪問控制列表條目設定
--mask 重新計算有效許可權掩碼
-n --no-mask 不重新計算有效許可權掩碼
-d --default 應用到預設訪問控制列表的操作
-L --logical 依照系統邏輯,跟隨符號連結
-P --physical 依照自然邏輯,不跟隨符號連結
--restore=file 恢復訪問控制列表,和“getfacl -R”作用相反
--test 測試模式,並不真正修改訪問控制列表屬性
練習(註明:以下操作都使用的Centos7.9 作業系統)
(1)建立組distro,其GID為2019
find /etc/ -name "[^[:alpha:]][[:alpha:]]*" -ls
Q2、複製/etc目錄下所有以p開頭,以非數字結尾的檔案或目錄到/tmp/mytest1目錄中
mkdir /tmp/mytest1 cp -a /etc/p*[^0-9] /tmp/mytest1/Q3、將/etc/issue檔案中的內容轉換為大寫後儲存至/tmp/issue.out檔案中
cat /etc/issue|tr '[:lower:]' '[:upper:]' >/tmp/issue.out;cat /tmp/issue.out
/etc/login.defs檔案 | 預設值 | 說明 |
MAIL_DIR | /var/spool/mail | 郵箱,賬戶變化會有郵件。 |
PASS_MAX_DAYS | 99999 | 密碼可以使用的最大天數。 如果密碼超過此值,則會強制修改密碼。 |
PASS_MIN_DAYS | 0 | 密碼修改間隔的最小天數。 在此之前嘗試的任何密碼更改都將被拒絕。 |
PASS_MIN_LEN | 5 | 密碼中的有效字元數。 |
PASS_WARN_AGE | 7 | 密碼到期前的警告天數。 0表示只在過期當天給出警告,負值表示沒有給出警告。 |
UID_MIN | 1000 | 用於通過useradd 建立常規使用者的使用者id範圍 |
UID_MAX | 60000 | |
SYS_UID_MIN | 201 | 用於通過useradd 建立系統使用者的使用者id範圍 |
SYS_UID_MAX | 999 | |
GID_MIN | 1000 | 用於通過groupadd 建立常規使用者的使用者id範圍 |
GID_MAX | 60000 | |
SYS_GID_MIN | 201 | 用於通過groupadd 建立系統使用者的使用者id範圍 |
SYS_GID_MAX | 999 | |
CREATE_HOME | yes | 是否建立家目錄,預設建立 |
UMASK | 77 | 檔案模式建立掩碼初始化為此值。 如果未指定,掩碼將被初始化為022。 |
USERGROUPS_ENAB | yes | 如果uid與gid相同,使用者名稱與主組名相同, 則非root使用者的umask組位設定為與owner位相同 |
ENCRYPT_METHOD | SHA512 | 這定義了用於加密密碼的系統預設加密演算法 |
groupadd -g 2019 distro
(2)建立使用者mandriva, 其ID號為1005,基本組為distro
useradd -u 1005 -g distro mandriva(3)、建立使用者mageia,其ID號為1100,家目錄為/home/linux
useradd -u 1100 -d /home/linux mageia(4)給使用者mageia新增密碼,密碼為mageedu,並設定使用者密碼7天后過期
passwd -x 7 mageia ----設定密碼7天后過期 echo 'mageedu' |passwd --stdin mageia ----設定密碼為mageedu
(5)刪除mandriva,但保留其家目錄
userdel mandriva(6)建立使用者slackware,其ID號為2002,基本組為distro,附加組peguin
useradd -u 2002 -g distro slackware groupadd -g 3000 peguin usermod -aG peguin slackware確認:
[root@centos7 /]# id slackware uid=2002(slackware) gid=2019(distro) groups=2019(distro),3000(peguin)(7)修改slackware的預設shell為/bin/tcsh
usermod -s /bin/tcsh slackware(8)為使用者slackware新增附加組admins,並設定不可登陸
groupadd -g 3001 admins usermod -aG admins -s /sbin/nologin slackware
[root@centos7 /]# id slackware uid=2002(slackware) gid=2019(distro) groups=2019(distro),3000(peguin),3001(admins) [root@centos7 /]# grep slackware /etc/passwd slackware:x:2002:2019::/home/slackware:/sbin/nologinQ5、建立使用者user1、user2、user3。在/data/下建立目錄test (1)目錄/data/test屬主、屬組為user1
[root@centos7 /]# mkdir -p /data/test [root@centos7 /]# ls -ld /data/test drwxr-xr-x. 2 root root 6 Sep 2 23:48 /data/test [root@centos7 /]# chown -R user1.user1 /data/test [root@centos7 /]# ls -ld /data/test drwxr-xr-x. 2 user1 user1 6 Sep 2 23:48 /data/test(2)在目錄屬主、屬組不變的情況下,user2對檔案有讀寫許可權
[root@centos7 data]# setfacl -m u:user2:rwx /data/test [root@centos7 data]# getfacl /data/test getfacl: Removing leading '/' from absolute path names # file: data/test # owner: user1 # group: user1 user::rwx user:user2:rwx group::r-x mask::rwx other::r-x驗證:
[root@centos7 data]# su - user3 Last login: Fri Sep 3 00:00:39 CST 2021 on pts/0 [user3@centos7 ~]$ cd /data/test [user3@centos7 test]$ ll total 4 -rw-rw-r--. 1 user1 user1 8 Sep 3 00:00 user1_file [user3@centos7 test]$ rm -f user1_file rm: cannot remove ‘user1_file’: Permission denied [user3@centos7 test]$ exit logout [root@centos7 data]# su - user2 Last login: Fri Sep 3 00:01:21 CST 2021 on pts/0 [user2@centos7 ~]$ cd /data/test/ [user2@centos7 test]$ ll total 4 -rw-rw-r--. 1 user1 user1 8 Sep 3 00:00 user1_file [user2@centos7 test]$ rm -f user1_file [user2@centos7 test]$ ls [user2@centos7 test]$(3)user1在/data/test目錄下建立檔案a1.sh, a2.sh, a3.sh, a4.sh, A 設定所有使用者都不可刪除1.sh,2.sh檔案、除了user1及root之外 B 所有使用者都不可刪除a3.sh, a4.sh
setfacl -x u:user2 /data/test ---取消原來的user2 acl許可權,所有使用者都不可刪除1.sh,2.sh檔案、除了user1及root之外。 chattr +i a3.sh a4.sh ---所有使用者都不可刪除a3.sh a4.sh(4)user3增加附加組user1,同時要求user1不能訪問/data/test目錄及其下所有檔案
usermod -aG user1 user3 ---root許可權下,給予user3,增加附加組 setfacl -mR u:user1:--- /data/test/ -R, 遞迴操作子目錄,將user1的許可權設定為---,則user1 無法進入test目錄
(5)清理/data/test目錄及其下所有檔案的acl許可權
chattr -i a3.sh a4.sh ---取消a3.sh a4.sh檔案鎖定,恢復到原來的狀態 setfacl -Rb /data/test/ -b選項,刪除所有擴充套件訪問控制列表條目