第二周(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 GID use GID for the new group,-----指定组ID 创建组
-K --key KEY=VALUE override /etc/login.defs defaults ---覆盖配置文件 "/ect/login.defs"
-o --non-unique allow to create groups with duplicate(non-unique) GID---允许添加组ID号不是唯一的组
-r --system create 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选项,删除所有扩展访问控制列表条目

浙公网安备 33010602011771号