一、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
[root@localhost ~]#mkdir /etc/123456 创建文件夹
[root@localhost ~]#touch /etc/1209867 创建文件
[root@localhost ~]# ls /etc/[^[:alpha:]]* 筛选出非字母开头的文件或目录
/etc/1209867
/etc/123456:
二、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@localhost ~]# mkdir /tmp/mytest1 先创建目录mytest1
[root@localhost ~]# ls -d /tmp/mytest1/ 查看是否创建成功
/tmp/mytest1/
[root@localhost mytest1]# cp -r /etc/p*[:digit:] /tmp/mytest1/ 或cp -r /etc/p*[^0-9] /tmp/mytest1/ 递归复制以p开头,非0个或多个数字结尾到/tmp/mytest1/
[root@localhost mytest1]# ll /tmp/mytest1/ 查看文件
总用量 12
drwxr-xr-x. 2 root root 4096 7月 18 21:00 pam.d
-rw-r--r--. 1 root root 2322 7月 18 21:00 passwd
drwxr-xr-x. 12 root root 151 7月 18 21:00 pki
drwxr-xr-x. 2 root root 6 7月 18 21:00 popt.d
drwxr-xr-x. 2 root root 105 7月 18 21:00 prelink.conf.d
drwxr-xr-x. 2 root root 4096 7月 18 21:00 profile.d
三、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
[root@localhost ~]# cat /etc/issue 查看源文件信息
\S
Kernel \r on an \m
方法一:
[root@localhost ~]# tr 'a-z' 'A-Z' < /etc/issue | tee /tmp/issue.out > /dev/null 转换小写变大写输入到/etc/issue,通过管道符再输入到/tmp/issue.out,输出内容不显示再终端
方法二:
[root@localhost ~]# tr '[:lower:]' '[:upper:]' </etc/issue >/tmp/issue.out 转换任意小写变大写 输入到/etc/issue,再输出到指定文件夹
[root@localhost ~]# cat /tmp/issue.out 查看转换后的信息
\S
KERNEL \R ON AN \M
四、请总结描述用户和组管理类命令的使用方法并完成以下练习:
1.用户概述
用户常见分类
超级用户:root uid和gid值为0 权限最大
普通用户: uid>500 一般权限的系统管理,权限有限
程序用户:1=uid<500 为提升系统安全性,支持所对应的服务对系统资源的使用,不能用于登录及管理
组账号文件:/etc/passwd:保存用户名称、宿主目录、登录shell等信息
/etc/shadow:保存用户密码及有限期等信息
添加用户:useradd
-u:指定uid标记号
-d:指定宿主目录,默认/home/用户名
-g:指定用户基本组名(或gid号)
-s 指定用户的登录shell
设置或更改用户口令:passwd
-d:清空用户密码
-i:锁定用户密码
-S:查看用户账号状态
-u:解锁用户账号
-e:强制用户下次登录修改密码
修改用户属性:usermod
-c:修改用户帐号的备注文字。
-d:修改用户登入时的目录。
-e:修改帐号的有效期限。
-f: 修改在密码过期后多少天即关闭该帐号。
-g:修改用户所属的群组。
-G:修改用户所属的附加群组。
-l:修改用户帐号名称。
-L:锁定用户密码,使密码无效。
-s:修改用户登入后所使用的shell。
-u:修改用户ID。
-U:解除密码锁定。
修改用户密码策略:chage
-d:指定密码最后修改日期
-E:密码到期的日期,到期后将不可用。0表示马上过期,-1表示永不过期。
-I:密码过期后,锁定账号的天数
-l:列出用户以及密码的有效期
-m:密码可以更改的最小天数。为零代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-W:密码过期前,提前收到警告信息的天数。
删除用户:userdel
-r:删除用户同事删除用户宿主目录
-f:强制删除用户,即时用户当前已登录
用户身份切换:su、sudo
su用户之间切换,root向普通用户切换不需要密码,而普通用户切换到其它任何用户都需要密码验证。
-:选项只使用"-"代表连带用户的环境变量一起切换
-c:仅执行一次命令,而不切换用户身份
sudo 命令用于切换用户执行权限,可使其它非 root 用户具有 root 权限。默认情况下,要求用户使用密码进行身份验证,这是用户密码,不是 root 密码
-i:以目标用户身份运行登录shell
注:需修改/etc/sudoers下在Allow root to run any commands anywhere下添加用户名 ALL=(ALL) NOPASSWD:ALL
显示用户的及所属群组信息:id
-g:显示用户所属群组的ID。
-G:显示用户所属附加群组的ID。
-n:显示用户,所属群组或附加群组的名称。
-r:显示实际ID。
-u:显示用户ID
2.用户组概述
组账号分类:两种
基本组(私有) 附加组(公共)
Gid:组标识号
组账号文件:/etc/group:保存组账号基本信息
/etc/gshadow:保存组账号密码
添加组账号:groupadd
-g:指定新建工作组的 id。
-r:创建系统工作组,系统工作组的组ID小于 500。
-K:覆盖配置文件 "/ect/login.defs"。
-o:允许添加组 ID 号不唯一的工作组。
设置组账号密码、添加、删除组成员:gpasswd
-a:向组内添加一个用户
-d:从组内删除一个用户
-M:定义组成员列表,以,号分隔
删除组账号:groupdel
-R, --root CHROOT_DIR chroot 到的目录
查询当前登录用户信息:w
-h:不打印头信息。
-u:当显示当前进程和cpu时间时忽略用户名。
-s:使用短输出格式。
-f:显示用户从哪登录。
查询当前登录的账号名:who
-H:显示各栏位的标题信息列。
-i或-u或--idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如该用户已超过24小时没有任何动作,则标示出"old"
-q:只显示登入系统的帐号名称和总人数。
查询已登录到主机的用户:whoami
-q用来显示当前登录用户的个数。
用来在命令行里设置ACL(访问控制列表):setfacl
-m:添加当前的ACL条目
-x:删除ACL条目
-R:递归recursive,通常与m进行配合对文件夹下的文件统一处理
-b:清空ACL
改变文件属性:chattr
a: 让文件或目录仅供附加用途
b: 不更新文件或目录的最后存取时间
c: 将文件或目录压缩后存放
d:将文件或目录排除在倾倒操作之前
i: 不得任意更动文件或目录
s: 保密性删除文件或目录
S: 即时更新文件或目录
u: 预防意外删除
-R: 递归处理, 将指令目录下的所有文件以及子目录一并处理
+:开启该项属性
-: 关闭该项属性
=:指定属性
用于显示文件属性:lsattr
-a 显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。
-d 显示,目录名称,而非其内容。
-l 此参数目前没有任何作用。
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
3.创建组distro,其GID为2019
[root@localhost ~]# groupadd -g 2019 distor
[root@localhost ~]# tail -1 /etc/group
distor:x:2019:
4.创建用户mandriva, 其ID号为1005;基本组为distro
[root@localhost ~]# useradd -u 1005 -g distor mandriva
[root@localhost ~]# tail -1 /etc/passwd
mandriva:x:1005:2019::/home/mandriva:/bin/bash
5.创建用户mageia,其ID号为1100,家目录为/home/linux
[root@localhost ~]# useradd -u 1100 -d /home/linux mageia
[root@localhost ~]# tail -1 /etc/passwd
mageia:x:1100:1100::/home/linux:/bin/bash
6.给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期
[root@localhost ~]# echo "mageedu" | passwd --stdin mageia
更改用户 madeia 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# tail -1 /etc/shadow
mageia:$6$.KaWRFyc$2dVuqe80.sydJT85XcQvTGANWG3gjp/UI.E8gejjokLUNjW.ReKZXSZmXSRi5ZG.4BxiZahNNyi6uJpFD.dHu0:18826:0:99999:7:::
[root@localhost ~]# passwd -x 7 madeia
调整用户密码老化数据madeia。
passwd: 操作成功
root@localhost ~]# tail -1 /etc/shadow
madeia:$6$.KaWRFyc$2dVuqe80.sydJT85XcQvTGANWG3gjp/UI.E8gejjokLUNjW.ReKZXSZmXSRi5ZG.4BxiZahNNyi6uJpFD.dHu0:18826:0:7:7:::
7.删除mandriva,但保留其家目录
[root@localhost ~]# userdel mandriva
[root@localhost ~]# ll /home/
总用量 4
drwx------. 3 madeia madeia 78 7月 18 23:48 linux
drwx------. 3 1005 distor 78 7月 18 23:46 mandriva
drwx------. 16 shaoguohui shaoguohui 4096 7月 19 2021 shaoguohui
8.创建用户slackware,其ID号为2002,基本组为distro,附加组peguin
[root@localhost ~]# groupadd peguin
[root@localhost ~]# tail -1 /etc/group
peguin:x:2020:slackware
[root@localhost ~]# tail -1 /etc/shadow
slackware:!!:18826:0:99999:7:::
[root@localhost ~]# useradd -u 2002 -g distor -G peguin slackware
[root@localhost ~]# id slackware
uid=2002(slackware) gid=2019(distor) 组=2019(distor),2020(peguin)
[root@localhost ~]# tail -1 /etc/passwd
slackware:x:2002:2019::/home/slackware:/bin/bash
9.修改slackware的默认shell为/bin/tcsh
[root@localhost ~]# usermod -s /bin/tcsh slackware
[root@localhost ~]# tail -1 /etc/passwd
slackware:x:2002:2019::/home/slackware:/bin/tcsh
10.为用户slackware新增附加组admins,并设置不可登陆
[root@localhost ~]# id slackware
uid=2002(slackware) gid=2019(distor) 组=2019(distor),2020(peguin)
[root@localhost ~]# groupadd admins
[root@localhost ~]# gpasswd -a slackware admins
[root@localhost ~]# id slackware
uid=2002(slackware) gid=2019(distor) 组=2019(distor),2020(peguin),2021(admins)
[root@localhost ~]# usermod slackware -s /sbin/nologin
[root@localhost ~]# tail -1 /etc/passwd
slackware:x:2002:2019::/home/slackware:/sbin/nologin
11.创建用户user1、user2、user3。在/data/下创建目录test
root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# useradd user3
[root@localhost ~]# tail -3 /etc/passwd
user1:x:2003:2003::/home/user1:/bin/bash
user2:x:2004:2004::/home/user2:/bin/bash
user3:x:2005:2005::/home/user3:/bin/bash
[root@localhost ~]# mkdir -p /data/test
12.目录/data/test属主、属组为user1
[root@localhost ~]# ll -d /data/test/
drwxr-xr-x. 2 user1 user1 6 7月 19 00:28 /data/test/
13.在目录属主、属组不变的情况下,user2对文件有读写权限
[root@localhost ~]# mkdir -p /data/test
[root@localhost ~]# chown user1:user1 /data/test/
[root@localhost ~]# ll -d /data/test/
drwxr-xr-x. 2 user1 user1 6 7月 19 00:28 /data/test/
[root@localhost ~]# su - user2
[user2@localhost ~]$ cd /data/
[user2@localhost data]$ ls
test
[user2@localhost data]$ cd test/
[user2@localhost test]$ touch abc.txt
[user2@localhost test]$ ll
总用量 0
-rw-rw-r--. 1 user2 user2 0 7月 19 00:36 abc.txt
14.user1在/data/test目录下创建文件a1.sh, a2.sh, a3.sh, a4.sh,设置所有用户都不可删除1.sh,2.sh文件、除了user1及root之外,所有用户都不可删除a3.sh, a4.sh
user2@localhost ~]$ su - root
密码:
上一次登录:日 7月 18 22:38:52 CST 2021pts/2 上
最后一次失败的登录:一 7月 19 00:41:14 CST 2021pts/2 上
最有一次成功登录后有 1 次失败的登录尝试。
[root@localhost ~]# su - user1
[user1@localhost root]$ cd
[user1@localhost ~]$ cd /data/test/
[user1@localhost test]$ touch a{1..4}\.sh
[user1@localhost test]$ ll
总用量 0
-rw-rw-r--. 1 user1 user1 0 7月 19 00:43 a1.sh
-rw-rw-r--. 1 user1 user1 0 7月 19 00:43 a2.sh
-rw-rw-r--. 1 user1 user1 0 7月 19 00:43 a3.sh
-rw-rw-r--. 1 user1 user1 0 7月 19 00:43 a4.sh
-rw-rw-r--. 1 user2 user2 0 7月 19 00:36 abc.txt
[root@localhost test]# chmod o+x /data/test/a3.sh /data/test/a4.sh
[root@localhost test]# chmod o+t /data/test/a3.sh /data/test/a4.sh
root@localhost test]# chattr +i a1.sh
[root@localhost test]# chattr +i a2.sh
[root@localhost test]# lsattr
---------------- ./abc.txt
----i--------e-- ./a1.sh
----i--------e-- ./a2.sh
-------------e-- ./a3.sh
-------------e-- ./a4.sh
15.user3增加附加组user1,同时要求user1不能访问/data/test目录及其下所有文件
[root@localhost ~]# cd /data/test/ | usermod -a -G user1 user3
[root@localhost ~]# cd /data/test/
[root@localhost test]# id user3
uid=2005(user3) gid=2005(user3) 组=2005(user3),2003(user1)
[root@localhost test]# chmod g-x /data/test
[root@localhost data]# su user1
[user1@localhost data]$ cd test/
bash: cd: test/: 权限不够
16.清理/data/test目录及其下所有文件的acl权限
[root@localhost ~]#setfacl -R -b /data/test/
[root@localhost ~]# chattr -i /data/test/a1.sh /data/test/a2.sh