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

答:[centos@ilinux ~]$ who       #显示系统当前所有的登录会话信息;

   root    pts/0        2016-08-18 01:32(192.168.80.1)

   root    pts/1        2016-08-18 06:21(192.168.80.1)

   centos  pts/2        2016-08-18 06:22(192.168.80.1)

  [centos@ilinux ~]$ who | cut -d' ' -f1    #取出会话信息第一列的内容(用户名);

  root

  root

  centos

  [centos@ilinux ~]$ who | cut -d' ' -f1 | uniq   #对显示后的用户名去重;

  root

  centos

 

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

答:[root@ilinux ~]# who     #显示系统当前所有的登录会话信息;

   root    pts/0        2016-08-18 01:32(192.168.80.1)

   root    pts/1        2016-08-18 06:21(192.168.80.1)

   centos  pts/2        2016-08-18 06:22(192.168.80.1)

  [root@ilinux ~]# who | tail -1   #取出会话信息的最后一行(最后登录用户的信息);

   centos  pts/2        2016-08-18 06:22(192.168.80.1)

  [root@ilinux ~]# who | tail -1 | cut -d' ' -f1  #取出第一列的用户名;

   centos

  [root@ilinux~]# who | tail -1 | cut -d' ' -f1 | id    #id显示该用户的相关信息;

  uid=0(root)  gid=0(root)  groups=0(root) 

  context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023


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

答:[root@ilinux ~]# head -2/etc/passwd     #先读取passwd文件,确认shell在第7列;

   root:x:0:0:root:/root:/bin/bash

   bin:x:1:1:bin:/bin:/sbin/nologin

   [root@ilinux ~]# cut -d: -f7 /etc/passwd | uniq -c |sort -n | tail -1   

     16  /sbin/nologin

  说明:用cut –d: 取出第7列的shell,用uniq –c显示shell重复出现的次数,用sort –n 以数值大小进行排序,最后用tail -1显示最后一行的信息(即当前系统上被用户当作默认shell的最多的那个shell)。


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

答:[root@ilinux ~]# cat /etc/passwd| sort -t: -n -k 3 | tail -10 | tr 'a-z' 'A-Z'

   TOM:X:500:500::/HOME/TOM:/BIN/BASH

   JERRY:X:501:501::/HOME/JERRY:/BIN/BASH

   GENTOO:X:502:504:GENTOODISTRIBUTION:/HOME/GENTOO:/BIN/CSH

   BAH:X:503:3001::/HOME/BAH:/BIN/BASH

   BASH:X:504:3002::/HOME/BASH:/BIN/BASH

   BASHER:X:505:505::/HOME/BASHER:/BIN/BASH

   TESTBASH:X:506:506::/HOME/TESTBASH:/BIN/BASH

   NOLOGIN:X:507:507::/HOME/NOLOGIN:/SBIN/NOLOGIN

   USER1:X:508:508::/HOME/USER1:/BIN/BASH

   CENTOS:X:509:509::/HOME/CENTOS:/BIN/BASH

   [root@ilinux~]# cat /etc/passwd | sort -t: -n -k 3 |tail -10 | tr 'a-z' 'A-Z' > /tmp/maxusers.txt       

  说明:先用cat读取 /etc/passwd文件内容;

     sort进行排序,-t: 以冒号为分隔符,-n 按数值大小进行排序,-k 3 以第3字段为标准进行排序;

       tail -10 取出最后的10行;

       tr ‘a-z’ ‘A-Z’ 把所有的小写致命替换为大写字母;

       最后用 > >> 把信息保存到 /tmp/maxusers.txt

 

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

答:[root@ilinux ~]# ifconfig | head-2 | tail -1   #先取出IP所在的行;

    inetaddr:192.168.80.200 Bcast:192.168.80.255 Mask:255.255.255.0

   [root@ilinux ~]# ifconfig | head -2 | tail -1 | cut -d: -f3  

   192.168.80.255  Mask     #以冒号为分隔符,取出包含IP的信息;

   [root@ilinux ~]# ifconfig | head -2 | tail -1 | cut -d: -f3 | cut -d' ' -f1  

   192.168.80.255     #以空白字符为分隔符,取出IP地址;


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

答:[root@ilinux etc]# mkdir/tmp/etc    #先在/tmp中创建目录etc

  [root@ilinux etc]# find /etc/*.conf | cut -d/ -f3 | tr 'a-z' 'A-Z' >/tmp/etc/conf

  说明:用find命令先显示/etc目录中所有的以“ .conf”结尾的文件;

     cut –d/ -f3 以“/”为分隔符,取出第3列的文件名;

     tr ‘a-z’ ‘A-Z’ 把所有小写字母转换为大写字母;

  [root@ilinux etc]# cat -n /tmp/etc/conf   #查看conf文件的内容,并显示行号;

     1 ASOUND.CONF

     2 CAS.CONF

     3 DRACUT.CONF

     4 FPRINTD.CONF

     5 GAI.CONF

     6 GRUB.CONF

     7 HOST.CONF

     8 KDUMP.CONF

     9 KRB5.CONF

    10 LATRACE.CONF

    11 LD.SO.CONF

    12 LIBAUDIT.CONF

    13 LIBUSER.CONF

    14 LOGROTATE.CONF

    15 LTRACE.CONF

    16 MKE2FS.CONF

    17 NSSWITCH.CONF

    18 NTP.CONF

    19 PM-UTILS-HD-APM-RESTORE.CONF

    20 PRELINK.CONF

    21 READAHEAD.CONF

    22 RESOLV.CONF

    23 RSYSLOG.CONF

    24 SESTATUS.CONF

    25 SMARTD.CONF

    26 SOS.CONF

    27 SUDO.CONF

    28 SUDO-LDAP.CONF

    29 SYSCTL.CONF

    30 TROLLTECH.CONF

    31 UPDATEDB.CONF

    32 WARNQUOTA.CONF

    33 WVDIAL.CONF

    34 YUM.CONF

 

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

答:[root@ilinux etc]# ls  /var | wc -l #先用ls查看/var的文件或目录,用wc –l 统计个数;

   19


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

答:[root@ilinux etc]# cat/etc/group | sort -t: -n -k3 | head -10

   root:x:0:

   bin:x:1:bin,daemon

   daemon:x:2:bin,daemon

   sys:x:3:bin,adm

   adm:x:4:adm,daemon

   tty:x:5:

   disk:x:6:

   lp:x:7:daemon

   mem:x:8:

   kmem:x:9:

  [root@ilinux etc]# cat /etc/group |sort -t: -n -k3 | head -10 | cut -d: -f1

   root

   bin

   daemon

   sys

   adm

   tty

   disk

   lp

   mem

   kmem

  说明:

    cat读取/etc/group文件内容;

    sort排序,-t: 以冒号为分隔符,-n 以数值大小进行排序,-k3 以第3字段为标准排序;

     head -10 取出前10行;

    cut分割,-d: 以冒号为分隔符,-f1选取第1列的内容;



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

答:

[root@ilinuxetc]# cat /etc/fstab /etc/issue>/tmp/etc/test   #这里用>>>都可以;

[root@ilinuxetc]# cat /tmp/etc/test

 

#

#/etc/fstab

# Createdby anaconda on Mon Aug  3 14:36:29 2015

#

#Accessible filesystems, by reference, are maintained under '/dev/disk'

# See manpages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=3af1b812-c603-4379-b488-1a226e103e55/          ext4    defaults     1 1

UUID=a3a986f0-655f-43f8-b8ba-a925e204933a/boot       ext4    defaults     1 2

UUID=d8d36aa8-df04-4a6c-bd05-a413e057d1c6swap        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

CentOSrelease 6.6 (Final)

Kernel \ron an \m


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

   (1)、创建组distro,其GID2016

   答:[root@c66-moban ~]# cat /etc/group

 

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

   答:[root@c66-moban ~]# useradd mandriva -u 1005 -g distro

 

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

   答:[root@c66-moban ~]# useradd mageia -u 1100 -d /home/linux

 

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

   答:方法一:

    [root@c66-moban ~]# echo "mageedu" | passwd --stdinmageia

   方法二:

    [root@c66-moban ~]# passwd mageia   #输入密码,再确认密码;

 

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

   答:[root@c66-moban ~]# userdel mandriva

       [root@c66-moban ~]# ls -d /home/mandriva

   /home/mandriva

 

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

   答:[root@c66-moban ~]# groupadd peguin

  [root@c66-moban ~]# useradd slackware -u 2002 -g distro -G peguin

 

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

   答:[root@c66-moban ~]# usermod -s /bin/tcsh slackware

       [root@c66-moban ~]# tail -1 /etc/passwd

   slackware:x:2002:2016::/home/slackware:/bin/tcsh

 

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

   答:[root@c66-moban ~]# usermod -G admins slackware

       [root@c66-moban ~]# tail -1 /etc/group

   admins:x:2018:slackware

 

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

   答:

[root@c66-moban~]# echo "magedu" | passwd--stdin slackware && chage -m 3 -M 180 -W 3 slackware

Changingpassword for user slackware.

passwd:all authentication tokens updated successfully.

[root@c66-moban~]# chage-l slackware

Lastpassword change                           : Aug 11,2016

Passwordexpires                              : Feb 07, 2017

Passwordinactive                             : never

Accountexpires                              : never

Minimumnumber of days between password change          : 3

Maximumnumber of days between password change          : 180

Number ofdays of warning before password expires        : 3

 

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

   答:[root@c66-moban ~]# groupadd clouds

  [root@c66-moban ~]# groupadd nova

  [root@c66-moban ~]# useradd openstack -u 3003 -g clouds -Gpeguin,nova

 

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

   答:[root@c66-moban ~]# useradd -r mysql -s /sbin/nologin

 

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

   答:[root@c66-moban ~]# echo "magedu" | passwd --stdinopenstack

Changing password for user openstack.

passwd: all authentication tokensupdated successfully.