N26 第三周博客作业

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

思路:
    首先使用 who 查看当前系统上所有已经登录的用户,然后用 cutawk 截取用户名,最后使用 sortunqi 去除重复信息。
命令:
    who | cut -d' ' -f1 | sort -uwho | awk '{print $1}' | uniq
演示:

    lc@Archlc [09:49:05] {~}
    –>$ who
    lc       pts/0        Feb 25 09:03 (:0)
    lc       pts/1        Feb 25 09:03 (:0)
    lc       pts/2        Feb 25 09:03 (:0)
    lc       pts/3        Feb 25 09:37 (:0)
    lc       pts/5        Feb 25 09:41 (:0)
    lc@Archlc [09:54:33] {~}
    –>$ who | cut -d’ ‘ -f1 | sort -u
    lc
    lc@Archlc [09:54:53] {~}
    –>$ who | awk ‘{print $1}’ | uniq
    lc

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

思路:
    首先使用 who 查看当前系统上所有已经登录的用户,然后使用 tailcut或者 awk 取出最后一个用户的用户名,最后再使用  id  来查看通过 xargs 或命令行引用传递的结果,这样便可以查看该用户的详细信息。
命令:
    who | cut -d' ' -f1| tail -1 | xargs id 或者 id $(who | awk '{print $1}' | tail -1 )
演示:

    lc@Archlc [10:03:08] {~}
    –>$ who
    lc       pts/0        Feb 25 09:03 (:0)
    lc       pts/1        Feb 25 09:03 (:0)
    lc       pts/2        Feb 25 09:03 (:0)
    lc       pts/3        Feb 25 09:37 (:0)
    lc       pts/5        Feb 25 09:41 (:0)
    lc@Archlc [10:03:28] {~}
    –>$ who | cut -d’ ‘ -f1| tail -1 | xargs id
    uid=1000(lc) gid=100(users) groups=100(users),10(wheel),91(video),994(docker),56(bumblebee),150(wireshark)
    lc@Archlc [10:03:30] {~}
    –>$ id $(who | awk ‘{print $1}’ | tail -1 )
    uid=1000(lc) gid=100(users) groups=100(users),10(wheel),91(video),994(docker),56(bumblebee),150(wireshark)

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

思路:
    首先取出 /etc/passwd 文件中有关 shell 信息的行,再统计最多的那个 shell。
命令:
    cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 | cut -d' ' -f7cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 | awk '{print $2}'
演示:

    lc@Archlc [10:10:10] {~}
    –>$ cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 | awk ‘{print $2}’
    /usr/bin/nologin
    lc@Archlc [10:12:12] {~}
    –>$ cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 | cut -d’ ‘ -f7
    /usr/bin/nologin

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

思路:
    使用 sort 排序取出相关的信息,接着用 tail 取出最后 10 个,使用 tr 转换大小写,再使用重定向保存信息。
命令:
    sort -t: -k3 -n /etc/passwd | tail -10 > /tmp/maxusers.txt
演示:

    lc@Archlc [10:27:55] {~}
    –>$ sort -t: -k3 -n /etc/passwd | tail -10 > /tmp/maxusers.txt
    lc@Archlc [10:29:18] {~}                                             
    –>$ cat /tmp/maxusers.txt                                           
    systemd-network:x:193:193:systemd-network:/:/usr/bin/nologin         
    systemd-bus-proxy:x:194:194:systemd-bus-proxy:/:/usr/bin/nologin     
    systemd-resolve:x:195:195:systemd-resolve:/:/usr/bin/nologin         
    dnsmasq:x:993:993:dnsmasq daemon:/:/sbin/nologin                     
    git:x:995:995:git daemon user:/:/bin/bash                            
    sddm:x:996:996:Simple Desktop Display Manager:/var/lib/sddm:/usr/bin/
    systemd-coredump:x:997:997:systemd Core Dumper:/:/sbin/nologin       
    systemd-journal-remote:x:998:998:systemd Journal Remote:/:/sbin/nolog
    systemd-journal-upload:x:999:999:systemd Journal Upload:/:/sbin/nolog
    lc:x:1000:100::/home/lc:/bin/bash
    

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

思路:
    使用 ifconfig 或者 ip 找出网卡相关的信息,再使用 grepawk 取出 ip 地址。
命令:
    ifconfig | grep -w inet | awk '{ print $2}'ip a s | grep -w inet | awk '{ print $2}'
演示:

    lc@Archlc [10:29:23] {~}
    –>$ ip a s | grep -w inet | awk ‘{ print $2}’
    127.0.0.1/8
    223.129.46.238/24
    192.168.12.1/24
    172.17.0.1/16
    lc@Archlc [10:34:34] {~}
    –>$ ifconfig | grep -w inet | awk ‘{ print $2}’
    192.168.12.1
    172.17.0.1
    223.129.46.238
    127.0.0.1

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

思路:
    使用 globbing 机制找到所需的文件名,再使用 tr 转换大小写,再使用重定向保存信息。
命令:
    cd /etc/ &&  ls *.conf | tr 'a-z' 'A-Z' >/tmp/etc.conf
演示:

    lc@Archlc [10:47:35] {~}
    –>$ cd /etc/ &&  ls *.conf | tr ‘a-z’ ‘A-Z’ >/tmp/etc.conf
    lc@Archlc [10:47:44] {/etc}
    –>$ cat /tmp/etc.conf
    APPSTREAM.CONF
    CREATE_AP.CONF
    DHCPCD.CONF
    DNSMASQ.CONF
    FUSE.CONF
    GAI.CONF
    HEALTHD.CONF
    HOST.CONF
    KRB5.CONF
    LD.SO.CONF
    LIBAO.CONF
    LOGROTATE.CONF
    MAKEPKG.CONF
    MAN_DB.CONF
    MDADM.CONF
    MENTOHUST.CONF
    MKE2FS.CONF
    MKINITCPIO.CONF
    MTOOLS.CONF
    NSCD.CONF
    NSSWITCH.CONF
    PACMAN.CONF
    REQUEST-KEY.CONF
    RESOLV.CONF
    RESOLVCONF.CONF
    RSYNCD.CONF
    SDDM.CONF
    SENSORS3.CONF
    SIGNOND.CONF
    SLP.CONF
    TS.CONF
    UPDATEDB.CONF
    VCONSOLDE.CONF
    YP.CONF

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

思路:
    首先使用 ls-A 选项将多余的信息去掉,再使用 wc 来统计总个数。
命令:
    ls -A /var/ | wc -l
演示:

    lc@Archlc [10:56:42] {~}
    –>$ ls -A /var
    .updated  cache  db  empty  games  lib  local  lock  log  mail  opt  run  spool  tmp  yp
    lc@Archlc [10:56:55] {~}
    –>$ ls -A /var | wc -l
    15

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

思路:
    首先使用 sort 进行排序,再用 head 取出前 10 个,最后用 cutawk 取出组的名字。
命令:
    sort -t: -k3 -n /etc/group | head -10 | cut -d: -f1sort -t: -k3 -nr /etc/group | tail -10 | awk 'BEGIN {FS = ":"} {print $1}'
演示:

    lc@Archlc [11:06:11] {~}
    –>$ sort -t: -k3 -n /etc/group | head -10 | cut -d: -f1
    root
    bin
    daemon
    sys
    adm
    tty
    disk
    lp
    mem
    kmem
    lc@Archlc [11:06:42] {~}
    –>$ sort -t: -k3 -nr /etc/group | tail -10 | awk ‘BEGIN {FS = “:”} {print $1}’
    kmem
    mem
    lp
    disk
    tty
    adm
    sys
    daemon
    bin
    root

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

思路:
    使用 cat 和重定向即可。
命令:
    cat /etc/{fstab,issue} > /tmp/etc.test
演示:

    lc@Archlc [11:09:42] {~}
    –>$ cat /etc/{fstab,issue} > /tmp/etc.test
    lc@Archlc [11:10:09] {~}
    –>$ cat /tmp/etc.test
    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>

    #Entry for /dev/sdb1 :
    #UUID=09b9104e-7ebb-4704-a73f-4a952a2d2642      /       ext4    rw,relatime,data=ordered     0       1
    UUID=09b9104e-7ebb-4704-a73f-4a952a2d2642       /       ext4    rw,defaults  0       1
    ##Entry for /dev/sda2 :
    # UUID=72C6C9DCC6C9A129 /media/WIN10    ntfs-3g defaults,rw,nosuid,nodev,locale=C    0       0
    ##Entry for /dev/sda1 :
    # UUID=AED2A7BED2A78963 /media/WINBoot  ntfs    defaults,nls=utf8,umask=0222 0       0

    Arch Linux \r (\l)

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

   (1)、创建组distro,其GID为2016;
   (2)、创建用户mandriva, 其ID号为1005;基本组为distro;
   (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
   (4)、给用户mageia添加密码,密码为mageedu;
   (5)、删除mandriva,但保留其家目录;
   (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
   (7)、修改slackware的默认shell为/bin/tcsh;
   (8)、为用户slackware新增附加组admins;

用户和组管理类命令主要有:

useradd 命令

描述:    使用它来创建用户
语法:    useradd [OPTION] 登陆名
常用选项:
    -u, –uid UID 指定 UID
    -g, –gid GROUP 指定基本组 ID,这个组必须实现存在
    -G, –groups GROUP1[,GROUPS]… 指明用户的附加组
    -c. –comment COMMENT 指明注释信息
    -d, –home HOME_DIR 指定用户的家目录:通过复制 /etc/skel 此目录并重命名来实现,指定的家目录路径如果实现存在,则不会为用户复制初始化文件
    -s, –shell SHELL 指明用户的默认 shell,所有可用的 shell 列表可在 /etc/shells 中
    -r, –system 创建系统用户
    -M 不创建用户的家目录
    -f –inactive INACTIVE 密码过期后,账户被彻底禁用前的天数 0 立即禁用 -1 禁用此功能

相关内容:

创建用户时的默认选项定义在 /etc/login.def
useradd -D 显示创建用户的默认配置
useradd -D [OPTION] 修改默认的选项 , 它更改的是 /etc/default/useradd

    usermod 命令

描述:    修改用户属性
语法:    usermod [OPTION] 登陆名
常用选项:
    -u, –uid UID 修改用户的 ID 为新的 UID
    -g, –gid GID 修改用户的基本组
    -G –groups GROUPS 修改用户所属的附加组:原来的附加组会被覆盖
    -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 解锁用户的密码

userdel 命令

描述:    删除用户
语法:    userdel [OPTION] 用户名
常用选项:
    -r 删除用户时一并删除其家目录

groupadd 命令

描述:     添加组
语法:     groupadd [OPTION] group_name
常用选项:
    -g GID 指定 GID 默认是上一个组的 GID+1
    -r 创建系统组:

groupmod

描述:     修改组属性
语法:     groupmod [OPTION] GROUP
常用选项:
    -g GID 修改 GID
    -n new_name 修改组名

groupdel 命令:

描述:     删除组
语法:     groupdel [OPTION] GROUP

练习的演示

    [root@47d523181d25 /]# groupadd -g 2016 distro  # 第 1 小题
    [root@47d523181d25 /]# tail -1 /etc/group
    distro:x:2016:
    [root@47d523181d25 /]# useradd -u 1005 -g distro mandriva # 第 2 小题
    [root@47d523181d25 /]# tail -1 /etc/passwd
    mandriva:x:1005:2016::/home/mandriva:/bin/bash
    [root@47d523181d25 /]# useradd -u 1100 -d /home/linux mageia # 第 3 小题
    [root@47d523181d25 /]# tail -1 /etc/passwd
    mageia:x:1100:1100::/home/linux:/bin/bash
    [root@47d523181d25 /]# echo “mageedu” | passwd –stdin mageia &> /dev/null # 第 4 小题
    [root@47d523181d25 /]# userdel mandriva # 第 5 小题
    [root@47d523181d25 /]# ls -al /home/mandriva/
    total 12
    drwx—— 2 1005 distro  62 Feb 25 03:23 .
    drwxr-xr-x 6 root root    61 Feb 25 03:24 ..
    -rw-r–r– 1 1005 distro  18 Dec  6 23:19 .bash_logout
    -rw-r–r– 1 1005 distro 193 Dec  6 23:19 .bash_profile
    -rw-r–r– 1 1005 distro 231 Dec  6 23:19 .bashrc
    [root@47d523181d25 /]# groupadd peguin # 第 6 小题
    [root@47d523181d25 /]# useradd -u 2002 -g distro -G peguin slackware
    [root@47d523181d25 /]# id slackware
    uid=2002(slackware) gid=2016(distro) groups=2016(distro),2017(peguin)
    [root@47d523181d25 /]# usermod -s /bin/tcsh slackware # 第 7 小题
    [root@47d523181d25 /]# tail -1 /etc/passwd
    slackware:x:2002:2016::/home/slackware:/bin/tcsh
    [root@47d523181d25 /]# groupadd admins # 第 8 小题
    [root@47d523181d25 /]# usermod -aG admins slackware

原创文章,作者:FSSlc,如若转载,请注明出处:http://www.178linux.com/69996

(0)
FSSlcFSSlc
上一篇 2017-02-24
下一篇 2017-02-25

相关推荐

  • Linux下计划任务神器-Crontab

    作为系统运维人员都清楚,在Linux下定义重复性的任务,我们一般会采用crontab来进行:crontab这个指令所设置的工作将会循环的一直进行下去!可循环的时间为分钟、小时、每日、每月、每周。 crontab计划任务: 1)常见用法:crontab命令的作用和用法如下:描述:为每个用户维护周期性的计划任务文件用法:crontab [-u 用户][-l|-r…

    Linux干货 2016-07-22
  • LNMP

    1、源码编译安装LNMP架构环境 OS版本:2.6.32-431.el6.x86_64 Nginx版本:nginx-1.6.1 mariadb版本:mariadb-10.0.13 php版本:php-5.4.26 1、安装编译安装所需系统环境 ~]# yum groupinstall "Development Tools" "S…

    Linux干货 2017-02-09
  • linux磁盘管理补充之挂载选项及常用工具

    一、文件挂载的配置文件         配置文件:/etc/fstab 要挂载的设备的UUID或卷标或/dev/sd[a-z]    挂载点        &n…

    Linux干货 2016-08-30
  • Linux程序包管理方式

    Linux程序包安装和管理方式共计三种:          一、[yum|dnf],通过官网或者其他开源网站提供的文件服务器,本机镜像源等途径进行安装。         二、rpm,通过官网或者其他开源网站通过…

    Linux干货 2016-08-29
  • 马哥教育网络班21期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:桥接器,是连接两个局域网的一种存储/转发设备,它能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器 集线器:集线器的英文称为“Hub”.集线器(hub)属于纯硬件网络底层设备,基本上不具有类似于交换机的"…

    Linux干货 2016-08-29
  • LVS介绍及工作原理图解

    一、LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,官方站点是:http://www.linuxvirtualserver.org。现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须重新编译内核以支持LVS功能模块,但是从Linux2.…

    2017-12-06

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-06 19:37

    写的很棒!!!