就业第二周-练习
1、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
[root@Rocky8-mini3 etc]# !mkdir
mkdir _al
[root@Rocky8-mini3 etc]# ls -d /etc/[^[:alpha:]][[:alpha:]]*
/etc/_al
2、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@Rocky8-mini3 ~]# mkdir /tmp/mytest1
[root@Rocky8-mini3 ~]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1
[root@Rocky8-mini3 ~]# ls /tmp/mytest1/
pam.d passwd passwd- pki plymouth pm popt.d prelink.conf.d printcap profile profile.d protocols
3、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
[root@Rocky8-mini3 ~]# tr 'a-z' 'A-Z' < /etc/issue > /tmp/issue.out
[root@Rocky8-mini3 ~]# cat /tmp/issue.out
\S
KERNEL \R ON AN \M
4、请总结描述用户和组管理类命令的使用方法并完成以下练习:
(1)、创建组distro,其GID为2019;
[root@Rocky8-mini3 ~]# groupadd -g 2019 distro
[root@Rocky8-mini3 ~]# getent group distro
distro:x:2019:
(2)、创建用户mandriva, 其ID号为1005;基本组为distro;
[root@Rocky8-mini3 ~]# useradd -u 1005 -g distro mandriva
[root@Rocky8-mini3 ~]# id mandriva
uid=1005(mandriva) gid=2019(distro) groups=2019(distro)
(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
[root@Rocky8-mini3 ~]# useradd -u 1005 -g distro mandriva
[root@Rocky8-mini3 ~]# grep mageia /etc/passwd
mageia:x:1100:1100::/home/linux:/bin/bash
(4)、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期
[root@Rocky8-mini3 ~]# echo "mageedu" | passwd -x 7 --stdin mageia
Adjusting aging data for user mageia.
passwd: Success
(5)、删除mandriva,但保留其家目录;
[root@Rocky8-mini3 ~]# userdel mandriva
[root@Rocky8-mini3 ~]# ls /home/
linux mandriva
(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
[root@Rocky8-mini3 ~]# groupadd peguin
[root@Rocky8-mini3 ~]# useradd slackware -u 2002 -g distro -G peguin
[root@Rocky8-mini3 ~]# id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin)
(7)、修改slackware的默认shell为/bin/tcsh;
[root@Rocky8-mini3 ~]# usermod -s /bin/tcsh slackware
[root@Rocky8-mini3 ~]# grep slackware /etc/passwd
slackware:x:2002:2019::/home/slackware:/bin/tcsh
(8)、为用户slackware新增附加组admins,并设置不可登陆。
[root@Rocky8-mini3 ~]# groupadd admins
[root@Rocky8-mini3 ~]# usermod -aG admins -s /sbin/nologin slackware
[root@Rocky8-mini3 ~]# grep slackware /etc/passwd
slackware:x:2002:2019::/home/slackware:/sbin/nologin
[root@Rocky8-mini3 ~]# id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin),2021(admins)
5、创建用户user1、user2、user3。在/data/下创建目录test
(1)、目录/data/test属主、属组为user1
[root@Rocky8-mini3 data]# chown user1:user1 /data/test/
[root@Rocky8-mini3 data]# ll -d /data/test/
drwxr-xr-x 2 user1 user1 4096 Mar 13 05:11 /data/test/
(2)、在目录属主、属组不变的情况下,user2对文件有读写权限
[root@Rocky8-mini3 test]# touch test
[root@Rocky8-mini3 test]# setfacl -m u:user2:rw /data/test/test
(3)、user1在/data/test目录下创建文件a1.sh, a2.sh, a3.sh, a4.sh,设置所有用户都不可删除1.sh,2.sh文件、除了user1及root之外,所有用户都不可删除a3.sh, a4.sh
[user1@Rocky8-mini3 test]$ ll
total 0
-rw-rw-r-- 1 user1 user1 0 Mar 13 07:44 a1.sh
-rw-rw-r-- 1 user1 user1 0 Mar 13 07:44 a2.sh
-rw-rw-r-- 1 user1 user1 0 Mar 13 07:44 a3.sh
-rw-rw-r-- 1 user1 user1 0 Mar 13 07:44 a4.sh
[root@Rocky8-mini3 test]# chattr +i /data/test/a1.sh a2.sh
[root@Rocky8-mini3 test]# getfacl /data/test/a3.sh a4.sh
getfacl: Removing leading '/' from absolute path names
# file: data/test/a3.sh
# owner: user1
# group: user1
user::rw-
group::rw-
other::r--
# file: a4.sh
# owner: user1
# group: user1
user::rw-
group::rw-
other::r--
(4)、user3增加附加组user1,同时要求user1不能访问/data/test目录及其下所有文件
[root@Rocky8-mini3 test]# usermod -aG user1 user3
[root@Rocky8-mini3 test]# id user3
uid=2005(user3) gid=2005(user3) groups=2005(user3),2003(user1)
[root@Rocky8-mini3 ~]# chmod -R 044 /data/test/
(5)、清理/data/test目录及其下所有文件的acl权限
[root@Rocky8-mini3 test]# setfacl -Rb /data/test/
[root@Rocky8-mini3 test]# chattr -i /data/test/a1.sh a2.sh
用户和组管理类命令
(1)useradd 用户创建
useradd [options] LOGIN
-u UID: [UID_MIN, UID_MAX], 定义在/etc/login.defs
-g GID:指明用户所属基本组,可为组名,也可以GID;
-c "COMMENT":用户的注释信息;
-d /PATH/TO/HOME_DIR: 以指定的路径为家目录;
-s SHELL: 指明用户的默认shell程序,可用列表在/etc/shells文件中;
-G GROUP1[,GROUP2,...[,GROUPN]]]:为用户指明附加组;组必须事先存在;
-r:创建系统用户
CentOS 6: ID<500
CentOS 7: ID<1000
默认值设定:/etc/default/useradd文件中
useradd -D
-s SHELL
练习:创建用户 gentoo,附加组为distro和linux,默认shell为 /bin/csh,注释信息为"Gentoo Distribution"
[root@laptop-u5s7ejrh ~]# useradd gentoo -G distro,linux -s /bin/csh -c "Gentoo Distribution"
(2)groupadd 组的创建
groupadd [OPTION]... group_name
-g GID: 指明GID号;[GID_MIN, GID_MAX]
-r: 创建系统组;
CentOS 6: ID<500
CentOS 7: ID<1000
(3)id 查看用户相关的ID信息
id [OPTION]... [USER]
-u: UID
-g: GID
-G: Groups
-n: Name
(4)su 用户的切换或以其他用户身份执行命令
su [options...] [-] [user [args...]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件;
su -UserName:登录式切换,会读取目标用户的配置文件;完全切换;
注:root su至其他用户无须密码;非root用户切换时需要密码;
换个身份执行命令:
su [-] UserName -c 'COMMAND'
-l:“su -l UserName”相当于“su -UserName”
(5)usermod 用户属性修改
usermod [options] LOGIN
-u UID: 新UID
-g GID: 新基本组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL;
-c 'COMMENT':新的注释信息;
-d HOME: 新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项;
-l login_name: 新的名字;
-L: lock指定用户
-U: unlock指定用户
-e YYYY-MM-DD: 指明用户账号过期日期;
-f INACTIVE: 设定非活动期限;
(6)passwd 给用户添加密码
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
passwd: 修改自己的密码;
常用选项:
-l: 锁定指定用户
-u: 解锁指定用户
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限;
--stdin:从标准输入接收用户密码;
echo "PASSWORD" | passwd
--stdin USERNAME
Note: /dev/null, bit buckets
/dev/zero
(7)userdel 删除用户
userdel [OPTION]... login
-r: 删除用户家目录;
(8)groupmod 组属性修改
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
(9)groupdel 组删除
groupdel GROUP
(10)gpasswd 组密码
gpasswd [OPTION] GROUP
-a user: 将user添加至指定组中;
-d user: 删除用户user的以当前组为组名的附加组
-A user1,user2,...: 设置有管理权限的用户列表
newgrp命令:临时切换基本组;
如果用户本不属于此组,则需要组密码
(11)chage 修改用户属性
chage [OPTION]... LOGIN
-d LAST_DAY
-E, --expiredate EXPIRE_DATE
-I, --inactive INACTIVE
-m, --mindays MIN_DAYS
-M, --maxdays MAX_DAYS
-W, --warndays WARN_DAYS
用户及权限管理
1、文件的权限主要针对三类对象进行定义
owner:属主,u group:属组,g other:其它,o
2、每个文件针对没类访问者都定义了三种权限(括号中为对应的数字表示法):
r:读(4) w:写(2) x:执行(1)
3、chmod 修改文件权限
[root@laptop-u5s7ejrh mnt]# chmod 721 file1
[root@laptop-u5s7ejrh mnt]# ll file1
-rwx-w---x. 1 root root 41 Aug 3 02:59 file1
[root@laptop-u5s7ejrh mnt]# chmod u-w,g+r file1
[root@laptop-u5s7ejrh mnt]# ll file1
-r-xrw---x. 1 root root 41 Aug 3 02:59 file1
4、chown 修改文件的属主和属组
[root@laptop-u5s7ejrh home]# ll /mnt/file1
-r-xrw---x. 1 root root 41 Aug 3 02:59 /mnt/file1
[root@laptop-u5s7ejrh home]# chown wuhao.wh /mnt/file1
[root@laptop-u5s7ejrh home]# ll /mnt/file1
-r-xrw---x. 1 wuhao wh 41 Aug 3 02:59 /mnt/file1
5、chgrp 修改文件的属组
[root@laptop-u5s7ejrh home]# chgrp root /mnt/file1
[root@laptop-u5s7ejrh home]# ll /mnt/file1
-r-xrw---x. 1 wuhao root 41 Aug 3 02:59 /mnt/file1
6、umask 文件或目录创建时的遮罩码,表示要减去的权限
Note:创建的是文件,会自动减去它的执行权限,目录则不会
[root@laptop-u5s7ejrh mnt]# umask
0022
[root@laptop-u5s7ejrh ~]# ll /mnt/file1 // 777 - 022 - x = 644
-rw-r--r--. 1 root root 170 Aug 4 04:37 /mnt/file1
[root@laptop-u5s7ejrh ~]# ll -d /mnt // 777 - 022 = 754
drwxr-xr-x. 10 root root 181 Aug 4 05:07 /mnt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」