1. 程式人生 > 其它 >第二週(0830~0905)

第二週(0830~0905)

第二週 作業 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目錄下,以非字母開頭,後面跟了一個字母以及其它任意長度任意字元的檔案或目錄
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
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
/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 這定義了用於加密密碼的系統預設加密演算法
(五)使用者和組管理的命令,重點需要掌握的命令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
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/nologin
Q5、建立使用者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選項,刪除所有擴充套件訪問控制列表條目