首页 > 代码库 > 第二次作业
第二次作业
1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
①通过who或者w命令,可以查询当前登入至系统的用户信息。
②cut命令通过指定特定字符来分割行信息,如空格符, -d" " ,-f 显示分割后指定的段。
③sort用来对结果排序,-u排序后去重
1 2 3 | [allen@localhost ~]$ who | cut -d" " -f1 | sort -u allen root |
2、取出当前系统上被用户当作其默认shell的最多的那个shell。
①uniq -c用来显示重复行的次数
②sort -n对结果按数值大小进行排序。
③tail -n 1 获取最后的1行
1 2 | [allen@localhost ~]$ cat /etc/passwd | cut -d: -f7 | sort | uniq -c | sort -n | tail -n 1 | tr -s " " | cut -d‘ ‘ -f3 /sbin/nologin |
3、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存/tmp/maxusers.txt文件中。
sort命令
选项: -tDELIMITER 字段分隔符
-k # 以指定字段为标准进行排序
-n按数值大小排序
1 | [allen@localhost ~]$ cat /etc/passwd | sort -n -t: -k3 | tail -n 10 | tr "a-z" "A-Z"> /tmp/maxusers.txt |
4、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
grep命令
选项:-E 扩展的正则表达式
-o 仅显示匹配到的项
--color=auto 对匹配到的项着色显示
扩展正则表达式元字符
字符匹配:
.: 匹配任意单个字符
[]: 匹配指定范围内的任意单个字符
[^]: 匹配指定范围外的任意单个字符
字数匹配:
*: 匹配前面字符任意次
?: 0次或1次
+: 1次或多次
{m}: 匹配m次
{m,n}:至少m次,至多那次
锚定符:
^:行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧
\<,\b:词首锚定,用于单词模式的左侧
\>,\b:词尾锚定,用于单词模式的右侧
分组:
():将一个字符或多个字符捆绑在一起,当做一个整体进行处理
或者:
|:
1 2 3 | [root@localhost ~]# ifconfig | grep "addr:" | cut -d: -f2 | cut -d‘ ‘ -f1 172.16.130.37 127.0.0.1 |
1 2 3 | [root@localhost ~]#ifconfig | grep -E -o --color=auto "(\<([0-9]|[1-9][0-9]|[1][0-9][0-9]|2[0-4][0-9]|25[0-5]])\>\.){3}\<([0-9]|[1-9][0-9]|[1][0-9][0-9]|2[0-4][0-9]|25[0-4])\>" 172.16.130.37 127.0.0.1 |
5、显示/var目录下一级子目录或文件的总个数。
1 2 | [root@localhost ~]# ls /var | wc -l 21 |
6、取出/etc/group文件中第三个字段数值最小的10个组的名字。
1 2 3 4 5 6 7 8 9 10 11 | [root@localhost ~]# cat /etc/group | sort -t: -k3 -n | cut -d: -f1 | head -n 10 root bin daemon sys adm tty disk lp mem kmem |
7、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
1 | [root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test |
8、请总结描述用户和组管理类命令的使用方法并完成以下练习:
用户管理类命令:
用户创建:useradd
useradd [options] LOGIN
-u UID:[UID MIN,UID MAX],定义在/etc/login.def中
-g GID:指明用户所属基本组,可为组名,也可以是GID
-c "COMMENT":用户的注释信息
-d /PATH/TO/HOME_DIR:以指定的路径为家目录
-s SHELL:指明用户的默认shell程序,可用列表在/etc/shells文件中;
-G GROUP1 [,GROUP2,...[,GROUPN]]:为用户指明附加组,组必须事先存在
-r:创建系统用户
用户属性修改:usermod
usermod [OPTION] login
-u UID:新UID
-g GID:
-G GROUP1 [,GROUP2,...[,GROUPN]]:
-s SHELL:
-c "COMMENT":
-d HOME:
-l login_name:
-L:lock指定用户
-U:unlock指定用户
-e YYYY-MM-DD:指明用户账号过期日期
-f INACTIVE:设定非活动期限
给用户添加密码:passwd
passwd [OPTIONS] UserName:修改指定用户的密码
passwd:修改自己的密码
-l:锁定指定的用户
-u:解锁指定用户
-n mindays:指定最短使用期限
-x maxdays:指定最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码
删除用户:userdel
userdel [OPTION]... login
-r:删除用户家目录
查看用户相关的ID信息:id
id [OPTION]... [USER]
-u:UID
-g:GID
-G:Groups
-n:Name
组管理类命令:
组创建:groupadd
groupadd [OPTION]... group_name
-g GID:指明GID号;
-r:创建系统组
组属性修改:groupmod
groupmod [OPTION]... group
-n group_name:新名字
-g GID:新的GID
组删除:groupdel
groupdel GROUP
组密码:gpassed
gpasswd [OPTION] GROUP
-a user:将user添加至指定组中;
-d user:删除用户user的以当前组为组名的附加组
-A user1,user2,...:设置有管理权限的用户列表
newgrp命令:临时切换基本组
示例一、创建组distro,其GID为2016
1 | [root@localhost ~]# groupadd -g 2016 distro |
示例二、创建用户mandriva, 其ID号为1005;基本组为distro;
1 | [root@localhost ~]# useradd -u 1005 -g 2016 mandriva |
示例三、创建用户mageia,其ID号为1100,家目录为/home/linux;
1 | [root@localhost ~]# useradd -u 1100 -d /home/linux mageia |
示例四、给用户mageia添加密码,密码为mageedu;
1 2 3 | [root@localhost ~]# echo "mageedu" | passwd --stdin mageia Changing password for user mageia. passwd: all authentication tokens updated successfully. |
示例五、删除mandriva,但保留其家目录;
1 | [root@localhost ~]# userdel mandriva |
示例六、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
1 2 | [root@localhost ~]# groupadd peguin [root@localhost ~]# useradd -u 2002 -g 2016 -G peguin slackware |
示例七、修改slackware的默认shell为/bin/tcsh;
1 | [root@localhost ~]# usermod -s /bin/tcsh slackware |
示例八、为用户slackware新增附加组admins;
1 2 | [root@localhost ~]# groupadd admins [root@localhost ~]# usermod -a -G admins slackware |
示例九、为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;
1 2 3 | [root@localhost ~]# echo "mageedu" | passwd -n 3 -x 180 -w 3 --stdin slackware Adjusting aging data for user slackware. passwd: Success |
示例十、添加用户openstack,其ID号为3003, 基本组为clouds,附加组为peguin和nova;
1 2 3 | [root@localhost ~]# groupadd clouds [root@localhost ~]# groupadd nova [root@localhost ~]# useradd -u 3003 -g clouds -G peguin,nova openstack |
示例十一、添加系统用户mysql,要求其shell为/sbin/nologin;
1 | [root@localhost ~]# useradd -r -s /sbin/nologin mysql |
示例十二、使用echo命令,非交互式为openstack添加密码。
1 | [root@localhost ~]# echo "openstack" | passwd --stdin openstack |
9、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。
修改文件权限:usermod
chomod [OPTION]... OCTAL-MODE FILE...
-R:递归修改权限
1 2 | [root@localhost tuser1]# cp -r /etc/skel /home/tuser1 [root@localhost home]# chmod -R 700 tuser1 |
10、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;
1 | [root@localhost tuser1]# cat /proc/meminfo | grep ^[Ss] |
1 | [root@localhost tuser1]# cat /proc/meminfo | grep -i ^s |
11、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
1 2 3 4 5 6 7 8 9 10 11 | [root@localhost tuser1]#grep -E -v "(:/sbin/nologin)[[:space:]]*" | cut -d: -f1 /etc/passwd root sync shutdown halt news user1 allen mageia slackware openstack |
12、显示/etc/passwd文件中其默认shell为/bin/bash的用户;
1 2 3 4 5 6 | [root@localhost tuser1]#grep -E "(:/bin/bash)[[:punct:]]*" /etc/passwd | cut -d: -f1 root user1 allen mageia openstack |
13、找出/etc/passwd文件中的一位数或两位数;
1 | [root@localhost tuser1]#grep -E --color=auto "\<[0-9]{1,2}\>" /etc/passwd |
14、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
1 2 3 4 5 6 7 | [root@localhost tuser1]# grep -E "^#[[:space:]]+[^[:space:]]+" /etc/rc.d/rc.sysinit /etc/rc.d/rc.sysinit # /etc/rc.d/rc.sysinit - run once at boot time # Taken in part from Miquel van Smoorenburg‘s bcheckrc. # Check SELinux status # Because of a chicken/egg problem, init_crypto must be run twice. /var may be # encrypted but /var/lib/random-seed is needed to initialize swap .... |
15、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;
1 2 3 4 5 6 7 8 | [root@localhost tuser1]# netstat -tan | grep -E "LISTEN[[:space:]]*$" tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:733 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN |
16、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;
1 2 3 4 5 6 7 | [root@localhost ~]# grep -E "^([[:alnum:]]+)\>.*\1$" /etc/passwd sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt bash:x:3004:3004::/home/bash:/bin/bash nologin:x:3007:3007::/home/nologin:/sbin/nologin [root@localhost ~]# |
第二次作业