第三周作业

1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。

        使用到的命令:w或who、cut、sort、uniq

                w、who命令显示当前已经登录的用户

          示例:显示系统中当前已登录的用户

[root@localhost ~]# w
 06:31:46 up 2 min,  1 user,  load average: 0.11, 0.12, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.44.1     06:31    2.00s  0.01s  0.01s w
[root@localhost ~]# who
root     pts/0        2017-02-02 06:31 (192.168.44.1)

            cut:文本截取工具

                cut option [file]

                    option

                        -d --delimiteer 指定分隔符,默认是空白符

                        -f  --fields          挑选出字段,显示第几段 

                                        # 指定单个字段

                                     #-# 连续的多个字段

                                    #,# 不连续的多个字段

          示例 :截取已登录用户的用户名

[root@localhost ~]# who| cut -d" " -f1
root
root

                sort :排序 默认使用字符排序

                        sort [option] [file]

                            option

                        -t CHAR 指定分隔符

                        -k #  用于排序比较的字段

                        -n    使用数值大小比较

                        -r     逆向排序

                        -f     忽略字符大小写

                        -u     重复行(连续且重复)只保留一份

        示例:按照/etc/passwd的userid进行逆向排序

cat /etc/passwd|sort -t: -k3 -r -n
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

             uniq:报告或移除重复的行

                    uniq [option]  [input] [output]

                        option

                               -c 统计出重复行的次数

                               -d 只显示重复过的行(两次以上)

                               -u 仅显示不重复的行

示例:列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可

[root@localhost ~]# who | cut -d" " -f1|sort |uniq 
root

2、取出最后登录到当前系统的用户的相关信息。

        使用到的命令,last查看用户登录系统的记录

                last  查看用户登录系统的记录

                    last [option] 

                               -n n指数字,表示显示最近几次的登录信息

                               -t YYYYMMDDHHMMSS 显示该时间内的所有用户登录信息

                               username    显示用户username所有的登录信息

[root@localhost ~]# id $(last -1|cut -d" " -f1|head -n1)
uid=0(root) gid=0(root) groups=0(root)

3、取出当前系统上被用户当作其默认shell的最多的那个shell。

[root@localhost ~]# cat /etc/passwd | cut -d: -f7|sort |uniq -c|sort |head -1|cut -d" " -f7
/sbin/nologin

4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。

 [root@localhost ~]# cat /etc/passwd|sort -n -t: -k3|tail > /tmp/maxusers.txt
[root@localhost ~]# cat /tmp/maxusers.txt 
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
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
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

5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。

[root@localhost ~]# ifconfig eth0 |head -n2|tail -1|cut -d" " -f10
192.168.44.22

6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。

[root@localhost ~]# ls /etc/*.conf| tr [a-z] [A-Z]> /tmp/etc.conf
[root@localhost ~]# cat /tmp/etc.conf 
/ETC/ASOUND.CONF
/ETC/DNSMASQ.CONF
/ETC/DRACUT.CONF
/ETC/E2FSCK.CONF
/ETC/HOST.CONF
/ETC/KDUMP.CONF
/ETC/KRB5.CONF
/ETC/LD.SO.CONF
/ETC/LIBAUDIT.CONF
/ETC/LIBUSER.CONF
/ETC/LOCALE.CONF
/ETC/LOGROTATE.CONF
/ETC/MAN_DB.CONF
/ETC/MKE2FS.CONF
/ETC/NSSWITCH.CONF
/ETC/RESOLV.CONF
/ETC/RSYSLOG.CONF
/ETC/SESTATUS.CONF
/ETC/SUDO.CONF
/ETC/SUDO-LDAP.CONF
/ETC/SYSCTL.CONF
/ETC/TCSD.CONF
/ETC/UPDATEDB.CONF
/ETC/VCONSOLE.CONF
/ETC/YUM.CONF

7、显示/var目录下一级子目录或文件的总个数。

        使用到命令 wc 

                    wc: word count  单词统计

                         -l  lines统计行 常用

                        -w words 统计单词

                        -c  bytes字节数

[root@localhost ~]# ll  /var/ | wc -l
22

8、取出/etc/group文件中第三个字段数值最小的10个组的名字。

[root@localhost ~]# cat /etc/group|sort -t: -k3 -nr|tail
kmem:x:9:
mem:x:8:
lp:x:7:
disk:x:6:
tty:x:5:
adm:x:4:
sys:x:3:
daemon:x:2:
bin:x:1:
root:x:0:

9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。

[root@localhost ~]# cat /etc/{fstab,issue} > /tmp/etc.test
[root@localhost ~]# cat /tmp/etc.test 

#
# /etc/fstab
# Created by anaconda on Thu Oct 27 18:18:54 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/centos-root /                       xfs     defaults        0 0
UUID=3ec5bba7-ad0f-4051-b169-7ea4bcae14b6 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
\S
Kernel \r on an \m

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

            使用到命令useradd ,userdel,groupadd,groupdel,usermod,groupmod、passwd

                useradd 添加用户

                    useradd [option] username

                                option

             -u, --uid UID:指定UID;

             -g, --gid GROUP:指定基本组ID,此组得事先存在;

             -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;

             -c, --comment COMMENT:指明注释信息;

             -d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;

             -s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;

             -r, --system:创建系统用户;

            userdel 删除用户

                    userdel [option] username

                        option

-r:删除用户时一并删除其家目录;

            usermod 修改用户属性

                    usermod [option] username

                        option

                             -u, --uid UID:修改用户的ID为此处指定的新UID;

                             -g, --gid GROUP:修改用户所属的基本组;

                             -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;

                             -a, --append:与-G一同使用,用于为用户追加新的附加组;

                             -c, --comment COMMENT:修改注释信息;

                             -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;

                             -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;

                             -l, --login NEW_LOGIN:修改用户名;

                             -s, --shell SHELL:修改用户的默认shell;

                             -L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";

                             -U, --unlock:解锁用户的密码;

            groupadd 添加组

                groupadd [option] groupname

                    option

-g GID:指定GID;默认是上一个组的GID+1;

-r: 创建系统组;

            groupdel 删除组

                groupdel [option] groupname

                    option选项基本不用

    groupmod 修改组属性

             groupmod [option] groupname

                option

             -g GID:修改GID;

             -n new_name:修改组名;

    passwd 设置密码

            passwd

(1) passwd:修改用户自己的密码;

            passwd [option] username

(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;

-l, -u:锁定和解锁用户;

-d:清除用户密码串;

-e DATE: 过期期限,日期;

-i DAYS:非活动期限;

-n DAYS:密码的最短使用期限;

-x DAYS:密码的最长使用期限;

-w DAYS:警告期限;

--stdin:

echo "PASSWORD" | passwd --stdin USERNAME

   (1)、创建组distro,其GID为2016;

[root@localhost ~]# groupadd -g 2016 distro

   (2)、创建用户mandriva, 其ID号为1005;基本组为distro;

[root@localhost ~]# useradd -g distro -u 1005 mandriva
[root@localhost ~]# id mandriva
uid=1005(mandriva) gid=1005(mandriva) groups=1005(distro)

   (3)、创建用户mageia,其ID号为1100,家目录为/home/Linux;

[root@localhost ~]# useradd -u 1100 -d /home/Linux mageia
[root@localhost ~]# grep mageia /etc/passwd
mageia:x:1100:1100::/home/Linux:/bin/bash

   (4)、给用户mageia添加密码,密码为mageedu;

[root@localhost ~]# echo mageedu |passwd --stdin mageia
Changing password for user mageia.
passwd: all authentication tokens updated successfully.

   (5)、删除mandriva,但保留其家目录;

[root@localhost ~]# userdel mandriva

   (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;

[root@localhost ~]# id slackware
uid=2002(slackware) gid=2016(distro) groups=2016(distro),2017(peguin)

   (7)、修改slackware的默认shell为/bin/tcsh;

[root@localhost ~]# usermod -s /bin/tcsh slackware
[root@localhost ~]# grep slackware /etc/passwd
slackware:x:2002:2016::/home/slackware:/bin/tcsh

   (8)、为用户slackware新增附加组admins;

[root@localhost ~]# id slackware
uid=2002(slackware) gid=2016(distro) groups=2016(distro),2018(admins)

   (9)、为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;

[root@localhost ~]# echo slackware|passwd --stdin -n3 -x180 -w3 slackware
[root@localhost ~]# grep slackware /etc/shadow
slackware:!!:17199:3:180:3:::

   (10)、添加用户openstack,其ID号为3003, 基本组为clouds,附加组为peguin和nova;

[root@localhost ~]# useradd -u 3003 -G peguin,nova clouds
[root@localhost ~]# id clouds
uid=3003(clouds) gid=3003(clouds) groups=3003(clouds),2017(peguin),2019(nova)

   (11)、添加系统用户mysql,要求其shell为/sbin/nologin;

useradd -s /sbin/nologin mysql
[root@localhost ~]# grep mysql /etc/passwd
mysql:x:3004:3004::/home/mysql:/sbin/nologin

   (12)、使用echo命令,非交互式为openstack添加密码。

[root@localhost ~]# echo openstack |passwd --stdin openstack
Changing password for user openstack.
passwd: all authentication tokens updated successfully.

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!