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

相关推荐

  • 文件系统

    文件系统 文件和目录被组织成一个单根倒置树结构 文件系统从根目录下开始,用“/”表示 文件名称区分大小写 以.开头的文件为隐藏文件   一个.表示本目录。 两个..表示根目录 路径分隔的/      路径分割为正斜线分割 文件有两类数据:        元数据:metadata …

    Linux干货 2017-05-02
  • 基于iptables mangle的lvs && lvs的持久连接

    一、lvs-dr类型:也称direct routing,简称为g(gatewaying);配置lvs-dr基于iptables mangle的实现方式  实验图:  地址规划:    VIP: 172.16.2.100    DIP: 172.16.2.13    RIP1:17…

    Linux干货 2015-06-30
  • 第一章 linux的安装及简单的命令合集

    linux安装;简答命令:注释;常见用法

    Linux干货 2018-03-17
  • linux磁盘管理及文件系统介绍

        硬盘是计算机必备组成部分,现在的硬盘分固态硬盘和传统机械硬盘,这里要介绍的是传统机械硬盘。     一.硬盘最基本结构         1.硬盘是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。…

    Linux干货 2016-06-22
  • 第一次作业

    第一次作业 作业1 博客 作业2 echo -e "\033[49;31;4;5m*******\033[0m \n\033[49;32;4;5m ***** \033[0m \n\033[49;33;4;5m  ***  \033[0m \n\033[49;34;4;5m   *   \033[0m&quo…

    Linux干货 2016-08-03
  • 从需求和安全角度开始linux(一)-20151211

    突然想从需求和安全的角度来展开各种命令。因为我觉得linux中所有的常用命令基本都是需求和安全的产物。 当我打开一个CLI(command line interface)界面的linux操作系统时: 一、我希望能够看到里面有什么,因此有了ls的命令。      ls – list&nbs…

    Linux干货 2015-12-15

评论列表(1条)

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

    写的很棒!!!