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

相关推荐

  • bash脚本之for循环和while循环及包管理

    一.概述 上一章剩余内容 压缩工具 cpio 复制从或到文件 cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。 cpio[选项] > 文件名或者设备名 cpio[选项] < 文件名或者设备名 选项 -o 将文件拷贝打包成文件或者将文件输出到设备上 -i解包,将打包文件解压或将…

    Linux干货 2016-08-24
  • ☞SELinux

    ☞SELinux 概述 SELinux(Secure Enhanced Linux)是美国国家安全局(NSA)和SCC开发的Linux的一个强制访问控制的安全模块。2000年以GNU GPL发布,Linux内核2.6版本后集成在内核中。它能够限制权限,进程只能访问那些在他的任务中所需要文件。 Selinux是根据最小权限模型去限制进程在对象(如文件,目录,端…

    Linux干货 2016-09-18
  • Ansible实战 lnmp 安装

    网海过客 www.chinasa.net 目录结构 ├── hosts├── roles│   └── lnmp│             ├── files│             │     &…

    Linux干货 2016-07-29
  • 初涉Linux基本要点概括(1)

    计算机,这里通常指可以储存程序的计算机,根据冯诺依曼体系,计算机组成部件包括控制单元(Control Unit)、算术逻辑单元(Arithmetic Logic Unit)、内存(Memory)、输入设备(Input)、输出设备(Output)。计算机通过输入的数据和指令,可以完成各种复杂的运算任务,小到文字处理、游戏、影音、大到卫星定位,火箭发射,人工智能…

    Linux干货 2016-09-26
  • linux系统启动详解

    主要内容: 系统启动过程 init启动过程 chkconfig的增,删,查 Linux组成 Linux: kernel+rootfs  kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能  rootfs:程序和glibc 库:函数集合, function, 调用接口…

    Linux干货 2016-09-08
  • Nginx相关实战案例

    Nginx相关实战案例: Nginx在实际生产中极为重要,先来看一下Nginx配置文件nginx.conf中文详解 #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn |…

    Linux干货 2017-06-19

评论列表(1条)

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

    写的很棒!!!