1、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
root@ubuntu-test:~# touch /etc/{1..10}.txt
root@ubuntu-test:~# touch /etc/{1..10}b.txt
root@ubuntu-test:~# touch /etc/{1..10}bggg.txt
root@ubuntu-test:~# mkdir /etc/{1..10}
root@ubuntu-test:~# mkdir /etc/{1..10}b
root@ubuntu-test:~# mkdir /etc/{1..10}b111
root@ubuntu-test:~# ls -d /etc/[^[:alpha:]][[:alpha:]]*
/etc/1b /etc/1b.txt /etc/2bggg.txt /etc/3b111 /etc/4b /etc/4b.txt /etc/5bggg.txt /etc/6b111 /etc/7b /etc/7b.txt /etc/8bggg.txt /etc/9b111
/etc/1b111 /etc/2b /etc/2b.txt /etc/3bggg.txt /etc/4b111 /etc/5b /etc/5b.txt /etc/6bggg.txt /etc/7b111 /etc/8b /etc/8b.txt /etc/9bggg.txt
/etc/1bggg.txt /etc/2b111 /etc/3b /etc/3b.txt /etc/4bggg.txt /etc/5b111 /etc/6b /etc/6b.txt /etc/7bggg.txt /etc/8b111 /etc/9b /etc/9b.txt
2、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
root@ubuntu-test:~# ls -d /etc/p*[^[:digit:]]
/etc/pam.conf /etc/pam.d /etc/passwd /etc/passwd- /etc/perl /etc/pm /etc/pollinate /etc/popularity-contest.conf /etc/profile /etc/profile.d /etc/protocols
root@ubuntu-test:~# mkdir /tmp/mytest1
root@ubuntu-test:~# cp -a /etc/p*[^[:digit:]] /tmp/mytest1/
root@ubuntu-test:~# ls /tmp/mytest1/
pam.conf pam.d passwd passwd- perl pm pollinate popularity-contest.conf profile profile.d protocols
root@ubuntu-test:~# ls -d /etc/p*[^[:digit:]] | wc -l
11
root@ubuntu-test:~# ls /tmp/mytest1/ | wc -l
11
3、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
root@ubuntu-test:~# cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out
root@ubuntu-test:~# cat /tmp/issue.out
UBUNTU 18.04.5 LTS \N \L
4、请总结描述用户和组管理类命令的使用方法并完成以下练习:
1、用户
1.1、useradd
useradd 命令可以创建新的Linux用户
格式:
useradd [options] LOGIN
常见选项:
-u UID
-o 配合
-u 选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID
-c"COMMENT“ 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 CentOS 6之前: ID<500,CentOS7 以后: ID<1000-m创建家目录,用于系统用户-M不创建家目录,用于非系统用户-p指定加密的密码
1.2、usermod
usermod 命令可以修改用户属性
格式:
usermod [OPTION] login
常见选项:
-a 表示在原来所属组的基础上追加
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限,即宽限期
1.3、userdel
userdel 可删除Linux 用户
格式:
userdel [OPTION]... Login
常见选项:
-f, --force 强制
-r, --remove 删除用户家目录和邮箱
2、用户组
2.1、groupadd
groupadd实现创建组
格式:
groupadd [OPTION]... group_name
常见选项:
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000
2.2、groupmod
groupmod 组属性修改
格式:
groupmod [OPTION]... group
常见选项:
-n group_name: 新名字
-g GID:新的GID
2.3、groupdel
groupdel 可以删除组
格式:
groupdel [options] GROUP
常见选项:
-f, --force 强制删除,即使是用户的主组也强制删除组,但会导致无主组的用户不可用无法登录
2.4、groups
groups 可查看用户组关系
格式:
查看用户所属组列表
groups [OPTION].[USERNAME]..
2.5、newgrp
newgrp 命令可以临时切换主组,如果用户本不属于此组,则需要组密码
格式:
newgrp [-] [group]
2.6、groupmems
groupmems 可以管理附加组的成员关系
格式:
groupmems [options] [action]
常见选项:
-g, --group groupname #更改为指定组 (只有root)
-a, --add username #指定用户加入组
-d, --delete username #从组中删除用户
-p, --purge#从组中清除所有成员
-l, --list#显示组成员列表
2.7、chgrp
chgrp 命令可以只修改文件的属组
格式:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
用法:
-R 递归
(1)、创建组distro,其GID为2019;
[root@zabbix-test ~]$groupadd -g 2019 distro
[root@zabbix-test ~]$cat /etc/group | grep 'distro'
distro:x:2019:
(2)、创建用户mandriva, 其ID号为1005;基本组为distro;
[root@zabbix-test ~]$useradd -u 1005 -g distro mandriva
[root@zabbix-test ~]$id mandriva
uid=1005(mandriva) gid=2019(distro) 组=2019(distro)
(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
[root@zabbix-test ~]$useradd -u 1100 -d /home/linux mageia
[root@zabbix-test ~]$id mageia
uid=1100(mageia) gid=1100(mageia) 组=1100(mageia)
[root@zabbix-test ~]$ll /home/linux/
总用量 0
(4)、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期
[root@zabbix-test ~]$echo 'mageedu' | passwd --stdin -x 7 mageia
调整用户密码老化数据mageia。
passwd: 操作成功
(5)、删除mandriva,但保留其家目录;
[root@zabbix-test ~]$userdel -f mandriva
[root@zabbix-test ~]$ll /home/linux/
总用量 0
(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
[root@zabbix-test ~]$useradd -u 2002 -g distro -G peguin slackware
[root@zabbix-test ~]$id slackware
uid=2002(slackware) gid=2019(distro) 组=2019(distro),2020(peguin)
(7)、修改slackware的默认shell为/bin/tcsh;
[root@zabbix-test ~]$usermod -s /bin/tcsh slackware
[root@zabbix-test ~]$cat /etc/passwd | grep slackware
slackware:x:2002:2019::/home/slackware:/bin/tcsh
(8)、为用户slackware新增附加组admins,并设置不可登陆。
[root@zabbix-test ~]$usermod -a -G admins -s /sbin/nologin slackware
[root@zabbix-test ~]$cat /etc/passwd | grep slackware
slackware:x:2002:2019::/home/slackware:/sbin/nologin
[root@zabbix-test ~]$id slackware
uid=2002(slackware) gid=2019(distro) 组=2019(distro),1001(admins),2020(peguin)
5、创建用户user1、user2、user3。在/data/下创建目录test
[root@zabbix-test ~]$for i in {1..3};do useradd user$i;done
[root@zabbix-test ~]$cat /etc/passwd | grep -E 'user[1-3]'
user1:x:2004:2004::/home/user1:/bin/bash
user2:x:2005:2005::/home/user2:/bin/bash
user3:x:2006:2006::/home/user3:/bin/bash
[root@zabbix-test ~]$mkdir -p /data/test;ll /data/test
总用量 0
(1)、目录/data/test属主、属组为user1
[root@zabbix-test data]$chown user1:user1 /data/test/;ll -d /data/test
drwxr-xr-x. 2 user1 user1 6 7月 18 22:02 /data/test
(2)、在目录属主、属组不变的情况下,user2对文件有读写权限
[root@zabbix-test data]$setfacl -m u:user2:rw /data/test
[root@zabbix-test data]$getfacl /data/test
getfacl: Removing leading '/' from absolute path names
# file: data/test
# owner: user1
# group: user1
user::rwx
user:user2:rw-
group::r-x
mask::rwx
other::r-x
(3)、user1在/data/test目录下创建文件a1.sh, a2.sh, a3.sh, a4.sh,设置所有用户都不可删除1.sh,2.sh文件、除了user1及root之外,所有用户都不可删除a3.sh, a4.sh
1、在/data/test目录下创建文件a1.sh, a2.sh, a3.sh, a4.sh
[root@zabbix-test ~]$su user1
[user1@zabbix-test root]$touch /data/test/a{1..4}.sh;ls /data/test/
a1.sh a2.sh a3.sh a4.sh
2、设置所有用户都不可删除1.sh,2.sh文件
[user1@zabbix-test test]$chattr +i /data/test/a{1..2}.sh
chattr: 不允许的操作 while setting flags on /data/test/a1.sh
chattr: 不允许的操作 while setting flags on /data/test/a2.sh
3、除了user1及root之外,所有用户都不可删除a3.sh, a4.sh
[root@zabbix-test ~]$ll /data/test/a{3..4}.sh
-rw-rw-r--. 1 user1 user1 0 7月 18 22:14 a3.sh
-rw-rw-r--. 1 user1 user1 0 7月 18 22:14 a4.sh
[user1@n51c7 test]$ chmod o+t /data/test/a{3..4}.sh
(4)、user3增加附加组user1,同时要求user1不能访问/data/test目录及其下所有文件
[root@zabbix-test ~]$usermod -a -G user1 user3;id user3
uid=2006(user3) gid=2006(user3) 组=2006(user3),2004(user1)
[root@zabbix-test ~]$setfacl -m u:user1:- /data/test
[root@zabbix-test ~]$chown root:root /data/test
[root@zabbix-test ~]$su user1
[user1@zabbix-test root]$cd /data/test/
bash: cd: /data/test/: 权限不够
[user1@zabbix-test root]$cat /data/test/a1.sh
bash: cat: /data/test/a1.sh: 权限不够
(5)、清理/data/test目录及其下所有文件的acl权限
[root@zabbix-test ~]$setfacl -R -b /data/test/
[root@zabbix-test ~]$getfacl /data/test
getfacl: Removing leading '/' from absolute path names
# file: data/test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x