1、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

  • ls 命令可以列出当前目录的内容或指定目录 
  • ls -d 列出目录和符号链接信息
  • 通配符:

      [a-z] 小写字母

      [A-Z] 大写字母   

      [:alpha:]: 任意大小写字母 

先在/etc下创建五个文件 :/etc/0f..d     /etc/jk4382   /etc/#djk87743    /etc/#j88992@!   /etc/0987737


  •  方法1:ls -d /etc/[^a-zA-Z][a-zA-Z]*
  • 方法2:ls -d /etc/[^[[:alpha:]][[:alpha:]]*
[ root@ubuntu1804-1 ~]#touch /etc/0f..d /etc/jk4382 /etc/#djk87743 /etc/#j88992@! /etc/0987737
[ root@ubuntu1804-1 ~]#ls -d /etc/[^a-zA-Z][a-zA-Z]*
/etc/0f..d /etc/#djk87743 '/etc/#j88992@!'

[ root@ubuntu1804-1 ~]#ls -d /etc/[^[[:alpha:]][[:alpha:]]*
/etc/0f..d /etc/#djk87743 '/etc/#j88992@!'


2、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

  • mkdir -p : 存在于不报错,且可自动创建所需的各目录。
  • cp -r :递归复制目录及内部的所有内容。
  • rm -rf :   强制递归删除文件。
  • 通配符:

     [0-9]:匹配数字范围。 

     [:digit:]:任意数字,相当于0-9。


  • 先使用ls -d 查看一下/etc目录下以p开头,非数字结尾的文件或者目录,一共11个。

然后验证以下方法的有效性,通过验证,方案是有效的,方法如下:

  • 方法1:cp -r  /etc/[^0-9] /tmp/mytest1
  • 方法2:cp -r  /etc/[^[:digit:]] /tmp/mytest1
[ root@ubuntu1804-1 ~]#ls -d /etc/p*[^0-9]

/etc/pam.conf /etc/passwd /etc/perl /etc/pollinate /etc/profile /etc/protocols
/etc/pam.d /etc/passwd- /etc/pm /etc/popularity-contest.conf /etc/profile.d

[ root@ubuntu1804-1 ~]#mkdir -p /tmp/mytest1 ; cp -r /etc/p*[^0-9] /tmp/mytest1 ; ls /tmp/mytest1
pam.conf pam.d passwd passwd- perl pm pollinate popularity-contest.conf profile profile.d protocols


[ root@ubuntu1804-1 ~]#rm -rf /tmp/mytest1 ; mkdir -p /tmp/mytest1 ; cp -r /etc/p*[^[:digit:]] /tmp/mytest1 ; ls /tmp/mytest1
pam.conf pam.d passwd passwd- perl pm pollinate popularity-contest.conf profile profile.d protocols


3、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中。

  • cat:查看文本内容
  • tr:转换和删除字符 
  • 管道(使用符号“|”表示)用来连接多个命令
  • 通配符

          [:lower:]:小写字母           [:upper:]:大写字母     

          [a-z]:小写字母                 [A-Z]:大写字母  

  • 标准输出重定向:           1> 或 >        把STDOUT重定向到文件 

方法1:cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out

方法2:cat /etc/issue | tr '[:lower:]' '[:upper:]' > /tmp/issue.out

[ root@ubuntu1804-1 ~]#cat /etc/issue
Ubuntu 18.04.5 LTS \n \l

[ root@ubuntu1804-1 ~]#cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out
[ root@ubuntu1804-1 ~]#cat /tmp/issue.out
UBUNTU 18.04.5 LTS \N \L

[ root@ubuntu1804-1 ~]#rm -rf /tmp/issue.out
[ root@ubuntu1804-1 ~]#cat /etc/issue | tr '[:lower:]' '[:upper:]' > /tmp/issue.out
[ root@ubuntu1804-1 ~]#cat /tmp/issue.out
UBUNTU 18.04.5 LTS \N \L


4、请总结描述用户和组管理类命令的使用方法并完成以下练习:

(1)用户

useradd:创建用户

usermod:修改用户

userdel:删除用户

(2)组

groupadd:创建组

groupmod:修改组

groupmems:修改组成员关系

groupdel:删除组

passwd:设置和修改用户密码

gpasswd:设置和修改组密码


(3)身份管理

su:切换用户身份

sudo:查看和赋予用户权限


(1)、创建组distro,其GID为2019;
[ root@ubuntu1804-1 ~]#groupadd -g 2019 distro
[ root@ubuntu1804-1 ~]#getent group distro
distro:x:2019:
(2)、创建用户mandriva, 其ID号为1005;基本组为distro;
[ root@ubuntu1804-1 ~]#useradd -u 1005 -g distro  mandriva ; id mandriva
uid=1005(mandriva) gid=2019(distro) groups=2019(distro)
(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
[ root@ubuntu1804-1 linux]#useradd -u 1100 -d /home/linux mageia
(4)、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期
[ root@ubuntu1804-1 linux]#echo “mageedu” | passwd -x 7 mageia
passwd: password expiry information changed.


[root@centos8 ~]#echo 'mageedu' |passwd --stdin mageia
[root@centos8 ~]# chage -M 7 mageia
[root@centos8 ~]# chage -l mageia
(5)、删除mandriva,但保留其家目录;
[ root@centos8 ~]#userdel mandriva
[ root@centos8 ~]#tree /home
/home
├── linux
├── luo
└── mandriva
(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
[ root@centos8 ~]#groupadd peguin
[ root@centos8 ~]#useradd -u 2002 slackware -g distro -G peguin
[ root@centos8 ~]#id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin)
(7)、修改slackware的默认shell为/bin/tcsh;
[ root@centos8 ~]#usermod -s /bin/tcsh slackware
[ root@centos8 ~]#grep slackware /etc/passwd
slackware:x:2002:2019::/home/slackware:/bin/tcsh
(8)、为用户slackware新增附加组admins,并设置不可登陆。
[ root@centos8 ~]#groupadd admins
[ root@centos8 ~]#usermod -aG admins slackware
[ root@centos8 ~]#usermod -s /bin/false slackware
[ root@centos8 ~]#id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin),2021(admins)

5、创建用户user1、user2、user3。在/data/下创建目录test。

[ root@centos8 ~]#mkdir /data/test
[ root@centos8 ~]#useradd user1 ; useradd user2 ; useradd user3 //方法1

[ root@centos8 ~]#name=user ; for i in{1..3} ; do useradd $name$i ; done //方法2
1)、目录/data/test属主、属组为user1。
[ root@centos8 ~]#chown user1:user1 /data/test
(2)、在目录属主、属组不变的情况下,user2对文件有读写权限。
[ root@centos8 ~]#setfacl -m u:user2:rw- /data/test
(3)、user1在/data/test目录下创建文件a1.sh, a2.sh, a3.sh, a4.sh,设置所有用户都不可删除1.sh,2.sh文件、除了user1及root之外,所有用户都不可删除a3.sh, a4.sh。
[ root@centos8 ~]#for i in {1..4} ; do touch /data/test/a$i.sh ; done    // 创建文件
[ root@centos8 ~]#ls /data/test
a1.sh a2.sh a3.sh a4.sh

[ root@centos8 ~]#chattr +i /data/test/a1.sh /data/test/a2.sh
[ root@centos8 ~]#chmod a+t /data/test/a3.sh /data/test/a4.sh
[ root@centos8 ~]#rm -i /data/test/a1.sh /data/test/a2.sh
rm: remove regular empty file '/data/test/a1.sh'? y
rm: cannot remove '/data/test/a1.sh': Operation not permitted
rm: remove regular empty file '/data/test/a2.sh'? y
rm: cannot remove '/data/test/a2.sh': Operation not permitted
[ root@centos8 ~]#ll /data/test
total 0
-rw-r--r--. 1 root root 0 Sep 27 20:14 a1.sh
-rw-r--r--. 1 root root 0 Sep 27 20:14 a2.sh
-rw-r--r-T. 1 root root 0 Sep 27 20:22 a3.sh
-rw-r--r-T. 1 root root 0 Sep 27 20:22 a4.sh
(4)、user3增加附加组user1,同时要求user1不能访问/data/test目录及其下所有文件。
[ root@centos8 ~]#setfacl -m u:user1:--- /data/test
[ root@centos8 ~]#id user3
uid=2005(user3) gid=2005(user3) groups=2005(user3),2003(user1)
(5)、清理/data/test目录及其下所有文件的acl权限。
[ root@centos8 ~]#chattr -i /data/test/a1.sh /data/test/a2.sh
[ root@centos8 ~]#setfacl -Rb /data/test
[ root@centos8 ~]#rm -i /data/test/a1.sh
rm: remove regular empty file '/data/test/a1.sh'? y
[ root@centos8 ~]#ls /data/test/
a2.sh a3.sh a4.sh