1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
答:本题思路:先用who命令列出当前登陆的用户信息,然后使用cut命令对字段进行分割,选出我们需要的字段,然后使用sort命令对结果进行排序,最后使用uniq命令来去重达到我们需要的效果。
[[email protected] ~]# who | cut -d‘ ‘ -f1 | sort | uniq root
2、取出最后登录到当前系统的用户的相关信息。
答:id `who | tail -1 | cut -d" " -f1`
[[email protected] ~]# id `who | tail -1 | cut -d" " -f1` uid=3005(openstack) gid=3005(openstack) groups=3005(openstack)
3、取出当前系统上被用户当作其默认shell的最多的那个shell。
答:解题思路:先使用cat命令查看passwd文件,然后以:号为分割符使用cut命令取出第七个字段也就是表示shell的那个字段,然后使用sort对其进行排序,避免统一shell分散至各处导致后面去重统计不准确,然后再使用uniq -c去重,并对重复次数进行记录,在使用sort -n对第一列以数值方式排序,最后一个就是使用最多的shell,使用tail -1取出,然后使用cut命令去掉前面不需要的数值,就是我们需要的结果了。
[[email protected]localhost ~]# cat /etc/passwd | cut -d‘:‘ -f7 | sort | uniq -c | sort -n | tail -1 | tr -s " " |cut -d" " -f3 /sbin/nologin [[email protected] ~]#
4、将/etc/passw d 中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
答:本题先读取/etc/passwd文件,然后用sort命令以:分割对第三个字段以数值进行排序,使用tail命令取出后十行,然后使用tr命令将小写转换为大写重定向输出至/tmp/maxuers.txt中。
[[email protected] ~]# cat /etc/passwd | sort -t‘:‘ -k3 -n | tail -10 | tr "a-z" "A-Z" >/tmp/maxusers.txt [[email protected] ~]# cat /tmp/maxusers.txt SSHD:X:74:74:PRIVILEGE-SEPARATED SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGIN DBUS:X:81:81:SYSTEM MESSAGE BUS:/:/SBIN/NOLOGIN POSTFIX:X:89:89::/VAR/SPOOL/POSTFIX:/SBIN/NOLOGIN NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN AVAHI-AUTOIPD:X:170:170:AVAHI IPV4LL STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGIN ABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGIN POLKITD:X:997:995:USER FOR POLKITD:/:/SBIN/NOLOGIN SYSTEMD-NETWORK:X:998:996:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD BUS PROXY:/:/SBIN/NOLOGIN USER1:X:1000:1000::/HOME/USER1:/BIN/BASH
5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
答:通过观察发现ifconfig命令下IP地址所在行以inet开头,所有用grep命令取出相关行数,这些行都是由多个空格分隔,用tr -s命令将多个空格改成一个空格,便于后面使用cut命令对行进行分割,经过多次分割,最后剩下IPV4地址和本地还回地址,考虑到实际有可能有多个地址,因此使用grep -v 显示除还回地址之外的所有ip。
[[email protected] ~]# ifconfig | grep ‘\<inet\>‘ | tr -s ‘ ‘ | cut -d‘ ‘ -f 3 | cut -d‘:‘ -f2 |grep -v "\<127\>" 192.168.199.147 [[email protected] ~]#
6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
答:先使用ls命令列出所有*.conf结尾的文件,使用tr命令转换为大写输出重定向至指定位置。
[[email protected] etc]# ls -a /etc/*.conf | tr ‘a-z‘ ‘A-Z‘ >/tmp/etc.conf
7、显示/var目录下一级子目录或文件的总个数。
答:使用ls -l命令列出所有的文件或目录,由于每行第一个标识符表示不同的文件,因此可以使用grep删选出形同类型的文件,然后使用wc统计行数就是目录或者文件的个数了。
统计目录个数:
[[email protected] ~]# ls -l /var | grep "^d" | wc -l 18
统计文件个数:
[[email protected] ~]# ls -l /var | grep "^-" | wc -l 1
8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
答:取出/etc/group下所有行,使用sort以第三个字段按数值大小进行排序,然后使用head取出前10个,使用cut命令取出我们需要的名字
[[email protected] ~]# cat /etc/group | sort -t":" -k 3 -n | head -10 | cut -d":" -f1 root bin daemon sys adm tty disk lp mem kmem [[email protected] ~]#
9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
答使用cat命令打开多个文件,然后使用追加重定向至/tmp/etc.test中,测试结果如下图:
[[email protected] ~]# cat /etc/fstab /etc/issue >> /tmp/etc.test [[email protected] ~]# cat /tmp/etc.test # # /etc/fstab # Created by anaconda on Mon Aug 1 07:29:14 2016 # # Accessible filesystems, by reference, are maintained under ‘/dev/disk‘ # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 UUID=4c7002fa-bdd3-4f1e-8d15-8d73756bcdab /boot ext4 defaults 1 2 /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 CentOS release 6.8 (Final) Kernel \r on an \m
10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
答:用户管理类命令:
useradd:添加用户
使用格式1:useradd [OPTION] USERNAME
常用选项:-u UID-->指明用户的UID
-g GID-->指明用户的基本组ID
-c "COMMENT"-->用户的注释信息
-d /PATH/TO/SOMEWHERE-->以指定的路径为用户的家目录,指定的家目录最 好事先不存在,如果存在则需手动到/etc/skel下 复制用户的环境。
-s SHELL-->指定用户的默认SHELL,可用列表在/etc/shells文件中。
-G GROUP1[,GROUP2,GROUP3...]-->为用户指明附加组,可多个,以逗号分隔。
-r -->创建系统用户
使用格式2:useradd -D
常用选项:-s SHELL-->修改默认SHELL,关于useradd的默认值存放在/etc/default/useradd 文件中,可以直接修改文件内容来达到修改默认值得目的。
id:查看用户的相关信息;
使用格式:id [OPTION] ..USER
常用选项:-u -->查看指定用户的UID
-g -->查看指定用户的基本组ID
-G-->查看指定用户所在附加组ID
-n-->显示用户
su:切换用户或以其他身份执行命令
使用格式:su [OPTION] [-] [USER [ARGS..]]
su Username-->非登录式切换,不会读取目标用户的配置文件
su - Username-->登录式切换,会读取目标用户的配置文件,完全切换
su [-] Username -c "COMMAND"-->换个身份执行命令,命令执行完成自动还
原为原来的身份
常用选项:-l -->su -l Username相当于su - Username
usermod:用户属性修改
使用格式:usermod [OPTION] USERNAME
常用选项:-u UID -->修改用户的UID
-g GID -->修改用户的基本组ID
-G GROUP1[,GROUP2,GROUP3...]-->修改用户的附加组ID,新附加组,原来的附 加组将会被覆盖;若保留原有,则要同时使 用-a选项,表示append.
-s SHELL -->新的默认shell
-c "COMMENT"-->新的注释信息
-d HOME -->新的家目录,原家目录中的文件不会同时移动至新的家目录,若 要移 动,则同时使用-m选项
-L-->锁定用户
-U-->解锁用户
-e YYYY-MM-DD-->指明用户帐户过期日期
-f INACTIVE-->设定非活动期限
passwd:给用户添加密码
使用格式:passwd [OPTION] Username-->修改指定用户的密码,仅root有权限
passwd-->修改自己的密码,所有用户均有权限
常用选项:-l -->锁定用户
-u-->解锁用户
-n mindays-->指定最短使用期限
-x maxdays-->指定最大使用期限
-w warndays-->提前多少天开始警告
-i inactivedays-->非活动期限
--stdin-->从标准输入接受用户密码
echo "PASSWORD" | passwd --stdin USERNAME
userdel:删除用户
使用格式:userdel [OPTION] ...USERNAME
常用选项:-r-->默认不删除用户的家目录,加此选项则删除
组管理类命令:
groupadd:添加组
使用格式: groupadd [OPTION] ...GROUP_NAME
常用选项:-g GID-->指明GID号
-r -->创建系统组 centos61-499,centos71-999
groupmod:修改组
使用格式:groupmod [OPTION] ...GROUP_NAME
常用选项:-n NEW_GROUP-->新的组名
-g GID-->新的GID
groupdel:删除组
使用格式:groupdel GROUP_NAME
gpasswd:组密码
使用格式:gpasswd [OPTION] ...GROU_NAME
常用选项:-a user :将user添加至指定组中
-d user:三层用户user的以当前组为组名的附加组
-A user1,user2,...:设置有管理权限的用户列表;
newgrp:临时切换用户的基本组;如果用户本不属于此组,则需要组密码;
(1)、创建组distro,其GID为2016;
答:groupadd -g 2016 distro
[[email protected] ~]# groupadd -g 2016 distro [[email protected] ~]# cat /etc/group | tail -1 distro:x:2016:
(2)、创建用户mandriva, 其ID号为1005;基本组为distro;
答:useradd -u 1005 -g distro mandriva
[[email protected] ~]# useradd -u 1005 -g distro mandriva [[email protected] ~]# id mandriva uid=1005(mandriva) gid=2016(distro) groups=2016(distro) [[email protected] ~]#
(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
答:useradd -u 1100 -d /home/linux mageia
[[email protected] ~]# useradd -u1100 -d /home/linux mageia mandriva:x:1005:2016::/home/mandriva:/bin/bash mageia:x:1100:1100::/home/linux:/bin/bash
(4)、给用户mageia添加密码,密码为mageedu;
答:echo "mageedu" | passwd --stdin mageia。
[[email protected] ~]# echo "mageedu" | passwd --stdin mageia Changing password for user mageia. passwd: all authentication tokens updated successfully. [[email protected] ~]# cat /etc/shadow | tail -5 oprofile:!!:17013:::::: tcpdump:!!:17013:::::: gentoo:!!:17031:0:99999:7::: mageia:$6$lXgx.iDE$cCVP3OUKxaDin89Iq7Q3hryTMcsvrLlAS2NF21QvgTiNATXTSfEt128g7nw1bbYOIRRnVL4zVMnFe5Vnblpmh0:17031 :0:99999:7:::
(5)、删除mandriva,但保留其家目录;
答:userdel mandriva userdel默认不删除用户的家目录
[[email protected] ~]# userdel mandriva [[email protected] ~]# ls /home gentoo linux mandriva #此处Linux目录仍存在 [[email protected] ~]#
(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
答:groupadd pegui ; useradd -u 2002 -g distro -G peguin
[[email protected] ~]# groupadd peguin;useradd -u 2002 -g distro -G peguin slackware [[email protected] ~]# cat /etc/passwd | tail -1 slackware:x:2002:2016::/home/slackware:/bin/bash [[email protected] ~]# id slackware uid=2002(slackware) gid=2016(distro) groups=2016(distro),2601(peguin)
(7)、修改slackware的默认shell为/bin/tcsh;
答:usermod -s /bin/tcsh slackware
[[email protected] ~]# usermod -s /bin/tcsh slackware [[email protected] ~]# cat /etc/passwd | tail -1 slackware:x:2002:2016::/home/slackware:/bin/tcsh
(8)、为用户slackware新增附加组admins;
答:groupadd admins;usermod -G -m admins slackware
[[email protected] ~]# groupadd admins&&usermod -a -G admins slackware [[email protected] ~]# id slackware uid=2002(slackware) gid=2016(distro) groups=2016(distro),2601(pegui),2602(admins) [[email protected] ~]#
(9)、为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;
答:echo "mageedu" | passwd --stdin slackware && passwd -n 3 -x 180 -w 3 slackware
[[email protected] ~]# echo "mageedu" | passwd --stdin slackware && passwd -n 3 -x 180 -w 3 slackware Changing password for user slackware. passwd: all authentication tokens updated successfully. Adjusting aging data for user slackware. passwd: Success [[email protected] ~]# cat /etc/shadow | tail -1 slackware:$6$kZJ/T3m/$U7TcYOizld8GXY3ckBqk/nq5NZL97DW0apIinJNyNEmqMtWR7nTnpDjM6sYV.ssPJ8rKN8Uwj3nSB26j2LgM/.:17 031:3:180:3:::
(10)、添加用户openstack,其ID号为3003, 基本组为clouds,附加组为peguin和nova;
答:groupadd clouds ;groupadd peguin ;groupadd nova ;useradd -u 3003 -g clouds -G peguin,nova openstack
[[email protected] ~]# groupadd clouds;groupadd peguin;groupadd nova;useradd -u 3003 -g clouds -G peguin,nova open stack [[email protected] ~]# id openstack uid=3003(openstack) gid=2603(clouds) groups=2603(clouds),2604(peguin),2605(nova)
(11)、添加系统用户mysql,要求其shell为/sbin/nologin;
答:useradd -r -s /sbin/nologin mysql
[[email protected] ~]# useradd -r -s /sbin/nologin mysql [[email protected] ~]# cat /etc/passwd | tail -1 mysql:x:498:498::/home/mysql:/sbin/nologin
(12)、使用echo命令,非交互式为openstack添加密码。
答:echo "mageedu" | passwd --stdin opentack
[[email protected] ~]# echo "mageedu" | passwd --stdin openstack Changing password for user openstack. passwd: all authentication tokens updated successfully.