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 查看當前系統上所有已經登錄的用戶,然后使用 tail,cut或者 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 找出網卡相關的信息,再使用 grep,awk 取出 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.www58058.com/69996

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

相關推薦

  • Linux初學筆記(markdown格式)

    Linux基礎命令筆記

    Linux干貨 2018-03-26
  • n28-第四周

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限 答:install 復制文件并設置屬性 -d, –directory:復制所有參數為目錄名 -m, –mode=MODE:設置文件屬性,相當于chmod # install -d -m u=rwx /e…

    Linux干貨 2017-12-24
  • 深入解析:分布式系統的事務處理經典問題及模型(轉載分享)

    摘要:分布式系統需要在數據完整、一致性和性能間做平衡。本文系統介紹了處理分布式數據一致性的技術模型,如:Master-Slave,Master-Master,2PC/3PC,經典的將軍問題,Paxos,以及Dynamo的NRW和VectorClock的模型。 編者按:數據服務的高可用是所有企業都想擁有的,但是要想讓數據有高可用性,就需要冗余數據寫多份。寫多份…

    Linux干貨 2015-04-04
  • Keepalived介紹 , 配置說明 , 及實際應用

    1. Keepalived介紹 Keepalived是一個基于VRRP協議來實現的服務高可用方案,可以利用其來避免IP單點故障,類似的工具還有heartbeat、corosync、pacemaker。但是它一般不會單獨出現,而是與其它負載均衡技術(如lvs、haproxy、nginx)一起工作來達到集群的高可用。 1.1 VRRP協議 VRRP全稱 Virt…

    Linux干貨 2016-11-04
  • 第一周作業

    一·計算機組成及其功能     計算機由硬件和軟件組成,他們構成計算機系統 硬件:構成計算機的物理裝置包括中央控制器、存儲器、輸入設備、輸出設備。 中央控制器(CPU):由控制器、運算器、寄存器和緩存組成。cpu的主頻越高和緩存越大性能越好。主頻是中央處理器時鐘的頻率,通常以兆赫茲(MHZ)為單位。緩存:可以進行高速數…

    Linux干貨 2016-12-01
  • Linux基礎之軟件包管理

    一.概述 在redhat系列的發行版中,采用rpm軟件包管理器,rpm原名是Red Hat Package Manager,后來當其他發行版也采用這種軟件包管理機制以后,重新命名,改為RPM Package Manager,它所能提供的功能是將編譯好的應用程序文件打包成一個或幾個程序文件,從而使得用戶能夠方便的安裝,升級,卸載軟件,而yum則是rpm包管理器…

    Linux干貨 2016-11-16

評論列表(1條)

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

    寫的很棒?。?!

欧美性久久久久