1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。
????答:本題思路:先用who命令列出當前登陸的用戶信息,然后使用cut命令對字段進行分割,選出我們需要的字段,然后使用sort命令對結果進行排序,最后使用uniq命令來去重達到我們需要的效果。
[root@localhost?~]#?who?|?cut?-d'?'?-f1?|?sort?|?uniq root
2、取出最后登錄到當前系統的用戶的相關信息。
????答:id `who | tail -1 | cut -d" " -f1`
[root@localhost?~]#?id?`who?|?tail?-1?|?cut?-d"?"?-f1` uid=3005(openstack)?gid=3005(openstack)?groups=3005(openstack)
3、取出當前系統上被用戶當作其默認shell的最多的那個shell。
????答:解題思路:先使用cat命令查看passwd文件,然后以:號為分割符使用cut命令取出第七個字段也就是表示shell的那個字段,然后使用sort對其進行排序,避免統一shell分散至各處導致后面去重統計不準確,然后再使用uniq -c去重,并對重復次數進行記錄,在使用sort -n對第一列以數值方式排序,最后一個就是使用最多的shell,使用tail -1取出,然后使用cut命令去掉前面不需要的數值,就是我們需要的結果了。
[root@localhost?~]#?cat?/etc/passwd?|?cut?-d':'?-f7?|?sort?|?uniq?-c?|?sort?-n?|?tail?-1?|?tr?-s?"?"?|cut?-d""?-f3/sbin/nologin [root@localhost?~]#
4、將/etc/passw d 中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。
????答:本題先讀取/etc/passwd文件,然后用sort命令以:分割對第三個字段以數值進行排序,使用tail命令取出后十行,然后使用tr命令將小寫轉換為大寫重定向輸出至/tmp/maxuers.txt中。
[root@localhost?~]#?cat?/etc/passwd?|?sort?-t':'?-k3?-n?|?tail?-10?|?tr?"a-z"?"A-Z"?>/tmp/maxusers.txt [root@localhost?~]#?cat?/tmp/maxusers.txt SSHD:X:74:74:PRIVILEGE-SEPARATED?SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGIN DBUS:X:81:81:SYSTEM?MESSAGE?BUS:/:/SBIN/NOLOGIN POSTFIX:X:89:89::/VAR/SPOOL/POSTFIX:/SBIN/NOLOGIN NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN AVAHI-AUTOIPD:X:170:170:AVAHI?IPV4LL?STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGIN ABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGIN POLKITD:X:997:995:USER?FOR?POLKITD:/:/SBIN/NOLOGIN SYSTEMD-NETWORK:X:998:996:SYSTEMD?NETWORK?MANAGEMENT:/:/SBIN/NOLOGIN SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD?BUS?PROXY:/:/SBIN/NOLOGIN USER1:X:1000:1000::/HOME/USER1:/BIN/BASH
5、取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
? 答:通過觀察發現ifconfig命令下IP地址所在行以inet開頭,所有用grep命令取出相關行數,這些行都是由多個空格分隔,用tr -s命令將多個空格改成一個空格,便于后面使用cut命令對行進行分割,經過多次分割,最后剩下IPV4地址和本地還回地址,考慮到實際有可能有多個地址,因此使用grep -v 顯示除還回地址之外的所有ip。
[root@localhost?~]#?ifconfig?|?grep?'\<inet\>'?|?tr?-s?'?'?|?cut?-d'?'?-f?3?|?cut?-d':'?-f2?|grep?-v?"\<127\>" 192.168.199.147 [root@localhost?~]#
6、列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。
????答:先使用ls命令列出所有*.conf結尾的文件,使用tr命令轉換為大寫輸出重定向至指定位置。
[root@localhost?etc]#?ls?-a?/etc/*.conf?|?tr?'a-z'?'A-Z'?>/tmp/etc.conf
7、顯示/var目錄下一級子目錄或文件的總個數。
????答:使用ls -l命令列出所有的文件或目錄,由于每行第一個標識符表示不同的文件,因此可以使用grep刪選出形同類型的文件,然后使用wc統計行數就是目錄或者文件的個數了。
????????統計目錄個數:
[root@localhost?~]#?ls?-l?/var?|?grep?"^d"?|?wc?-l 18
? ??????統計文件個數:
[root@localhost?~]#?ls?-l?/var?|?grep?"^-"?|?wc?-l 1
8、取出/etc/group文件中第三個字段數值最小的10個組的名字。
????答:取出/etc/group下所有行,使用sort以第三個字段按數值大小進行排序,然后使用head取出前10個,使用cut命令取出我們需要的名字
[root@localhost?~]#?cat?/etc/group?|?sort?-t":"?-k?3?-n?|?head?-10?|?cut?-d":"?-f1 root bin daemon sys adm tty disk lp mem kmem [root@localhost?~]#
9、將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。
????答使用cat命令打開多個文件,然后使用追加重定向至/tmp/etc.test中,測試結果如下圖:
[root@localhost?~]#?cat?/etc/fstab?/etc/issue?>>?/tmp/etc.test [root@localhost?~]#?cat?/tmp/etc.test# #?/etc/fstab #?Created?by?anaconda?on?Mon?Aug??1?07:29:14?2016 # #?Accessible?filesystems,?by?reference,?are?maintained?under?'/dev/disk' #?See?man?pages?fstab(5),?findfs(8),?mount(8)?and/or?blkid(8)?for?more?info # /dev/mapper/VolGroup-lv_root?/???????????????????????ext4????defaults????????1?1 UUID=4c7002fa-bdd3-4f1e-8d15-8d73756bcdab?/boot???????????????????ext4????defaults????????1?2 /dev/mapper/VolGroup-lv_swap?swap????????????????????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 CentOS?release?6.8?(Final) Kernel?\r?on?an?\m
10、請總結描述用戶和組管理類命令的使用方法并完成以下練習:
????答:用戶管理類命令:
????????useradd:添加用戶
????????????使用格式1:useradd [OPTION] USERNAME
????????????常用選項:-u UID-->指明用戶的UID
????????????????????????????? -g GID-->指明用戶的基本組ID
????????????????????????????? -c "COMMENT"-->用戶的注釋信息
????????????????????????????? -d /PATH/TO/SOMEWHERE-->以指定的路徑為用戶的家目錄,指定的家目錄最 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?好事先不存在,如果存在則需手動到/etc/skel下 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?復制用戶的環境。
????????????????????????????? -s SHELL-->指定用戶的默認SHELL,可用列表在/etc/shells文件中。
??????????????????????????????-G GROUP1[,GROUP2,GROUP3...]-->為用戶指明附加組,可多個,以逗號分隔。
????????????????????????????? -r -->創建系統用戶
????????????使用格式2:useradd -D
????????????常用選項:-s SHELL-->修改默認SHELL,關于useradd的默認值存放在/etc/default/useradd ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文件中,可以直接修改文件內容來達到修改默認值得目的。
????????id:查看用戶的相關信息;
????????????使用格式:id [OPTION] ..USER
????????????常用選項:-u -->查看指定用戶的UID
???????????????????????????? ?-g -->查看指定用戶的基本組ID
???????????????????????????? ?-G-->查看指定用戶所在附加組ID
???????????????????????????? ?-n-->顯示用戶
????????su:切換用戶或以其他身份執行命令
????????????使用格式:su [OPTION] [-] [USER [ARGS..]]
????????????????????????????? su Username-->非登錄式切換,不會讀取目標用戶的配置文件
????????????? ?????????????? ?su - Username-->登錄式切換,會讀取目標用戶的配置文件,完全切換
???????????????????????????? ?su [-] Username -c "COMMAND"-->換個身份執行命令,命令執行完成自動還
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 原為原來的身份
????????????? 常用選項:-l -->su -l Username相當于su - Username
????????usermod:用戶屬性修改
????????????使用格式:usermod [OPTION] USERNAME
????????????常用選項:-u UID -->修改用戶的UID
????????????????????????????? -g GID -->修改用戶的基本組ID
???????????????????????????? ?-G GROUP1[,GROUP2,GROUP3...]-->修改用戶的附加組ID,新附加組,原來的附 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?加組將會被覆蓋;若保留原有,則要同時使 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?用-a選項,表示append. ??
?????????? ? ? ? ? ???????????-s SHELL -->新的默認shell
????????????????????????? ? ? -c "COMMENT"-->新的注釋信息
????????????????????????? ? ? -d HOME -->新的家目錄,原家目錄中的文件不會同時移動至新的家目錄,若 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 要移?動,則同時使用-m選項
????????????????????????? ? ? -L-->鎖定用戶
?????????????????????????? ? ?-U-->解鎖用戶
???????????????????????????? ?-e YYYY-MM-DD-->指明用戶帳戶過期日期
???????????????????????????? ?-f INACTIVE-->設定非活動期限
????????passwd:給用戶添加密碼
????????????????使用格式:passwd [OPTION] Username-->修改指定用戶的密碼,僅root有權限
???????????????????????????????? ?passwd-->修改自己的密碼,所有用戶均有權限
????????????????常用選項:-l -->鎖定用戶
???????????????????????????????? ?-u-->解鎖用戶
????????????????????????????????? -n mindays-->指定最短使用期限
????????????????????????????????? -x maxdays-->指定最大使用期限
???????????????????????????????? ?-w warndays-->提前多少天開始警告
???????????????????????????????? ?-i inactivedays-->非活動期限
????????????????????????????????? --stdin-->從標準輸入接受用戶密碼
????????????????????????????????????????echo "PASSWORD" | passwd ?--stdin USERNAME
????????userdel:刪除用戶
????????????????使用格式:userdel [OPTION] ...USERNAME
????????????????常用選項:-r-->默認不刪除用戶的家目錄,加此選項則刪除
????????組管理類命令:? ??
????????groupadd:添加組
????????????? ? 使用格式: groupadd [OPTION] ...GROUP_NAME
?????????????????常用選項:-g GID-->指明GID號
????????????????????????????????? ?-r -->創建系統組? centos61-499,centos71-999
????????groupmod:修改組
????????????????使用格式:groupmod [OPTION] ...GROUP_NAME
????????????????常用選項:-n NEW_GROUP-->新的組名
????????????????????????????????? -g GID-->新的GID
????????groupdel:刪除組
????????????????使用格式:groupdel GROUP_NAME
????????gpasswd:組密碼
????????????????使用格式:gpasswd [OPTION] ...GROU_NAME
????????????????常用選項:-a user :將user添加至指定組中
? ? ? ? ? ? ? ? ? -d user:三層用戶user的以當前組為組名的附加組
? ? ? ? ? ? ? ? ? -A user1,user2,...:設置有管理權限的用戶列表;
? ? ? ? ? ? ? ? ? newgrp:臨時切換用戶的基本組;如果用戶本不屬于此組,則需要組密碼;
? (1)、創建組distro,其GID為2016;
????答:groupadd -g 2016 distro
[root@localhost?~]#?groupadd?-g?2016?distro [root@localhost?~]#?cat?/etc/group?|?tail?-1 distro:x:2016:
? (2)、創建用戶mandriva, 其ID號為1005;基本組為distro;
????答:useradd -u 1005 -g distro mandriva
[root@localhost?~]#?useradd?-u?1005?-g?distro?mandriva [root@localhost?~]#?id?mandriva uid=1005(mandriva)?gid=2016(distro)?groups=2016(distro) [root@localhost?~]#
? (3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux;
????答:useradd -u 1100 -d /home/linux mageia
[root@localhost?~]#?useradd?-u1100?-d?/home/linux?mageia mandriva:x:1005:2016::/home/mandriva:/bin/bash mageia:x:1100:1100::/home/linux:/bin/bash
(4)、給用戶mageia添加密碼,密碼為mageedu;
????答:echo "mageedu" | passwd --stdin mageia。
[root@localhost?~]#?echo?"mageedu"?|?passwd?--stdin?mageia Changing?password?for?user?mageia. passwd:?all?authentication?tokens?updated?successfully. [root@localhost?~]#?cat?/etc/shadow?|?tail?-5 oprofile:!!:17013:::::: tcpdump:!!:17013:::::: gentoo:!!:17031:0:99999:7::: mageia:$6$lXgx.iDE$cCVP3OUKxaDin89Iq7Q3hryTMcsvrLlAS2NF21QvgTiNATXTSfEt128g7nw1bbYOIRRnVL4zVMnFe5Vnblpmh0:17031 :0:99999:7:::
? (5)、刪除mandriva,但保留其家目錄;
????答:userdel mandriva ?userdel默認不刪除用戶的家目錄
[root@localhost?~]#?userdel?mandriva [root@localhost?~]#?ls?/home gentoo??linux??mandriva??#此處Linux目錄仍存在 [root@localhost?~]#
? (6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
? ? 答:groupadd pegui ; useradd -u 2002 -g distro -G peguin
[root@localhost?~]#?groupadd?peguin;useradd?-u?2002?-g?distro?-G?peguin?slackware [root@localhost?~]#?cat?/etc/passwd?|?tail?-1 slackware:x:2002:2016::/home/slackware:/bin/bash [root@localhost?~]#?id?slackware uid=2002(slackware)?gid=2016(distro)?groups=2016(distro),2601(peguin)
? (7)、修改slackware的默認shell為/bin/tcsh;
????答:usermod -s /bin/tcsh slackware
[root@localhost?~]#?usermod?-s?/bin/tcsh?slackware [root@localhost?~]#?cat?/etc/passwd?|?tail?-1 slackware:x:2002:2016::/home/slackware:/bin/tcsh
? (8)、為用戶slackware新增附加組admins;
????答:groupadd admins;usermod -G -m admins slackware
[root@localhost?~]#?groupadd?admins&&usermod?-a?-G?admins?slackware [root@localhost?~]#?id?slackware uid=2002(slackware)?gid=2016(distro)?groups=2016(distro),2601(pegui),2602(admins) [root@localhost?~]#
? (9)、為slackware添加密碼,且要求密碼最短使用期限為3天,最長為180天,警告為3天;
????答:echo "mageedu" | passwd --stdin slackware && passwd -n 3 -x 180 -w 3 slackware
[root@localhost?~]#?echo?"mageedu"?|?passwd?--stdin?slackware?&&?passwd?-n?3?-x?180?-w?3?slackware Changing?password?for?user?slackware. passwd:?all?authentication?tokens?updated?successfully. Adjusting?aging?data?for?user?slackware. passwd:?Success [root@localhost?~]#?cat?/etc/shadow?|?tail?-1 slackware:$6$kZJ/T3m/$U7TcYOizld8GXY3ckBqk/nq5NZL97DW0apIinJNyNEmqMtWR7nTnpDjM6sYV.ssPJ8rKN8Uwj3nSB26j2LgM/.:17 031:3:180:3:::
? (10)、添加用戶openstack,其ID號為3003, 基本組為clouds,附加組為peguin和nova;
????答:groupadd clouds ;groupadd peguin ;groupadd nova ;useradd -u 3003 -g ????????????????clouds -G peguin,nova openstack
[root@localhost?~]#?groupadd?clouds;groupadd?peguin;groupadd?nova;useradd?-u?3003?-g?clouds?-G?peguin,nova?open stack [root@localhost?~]#?id?openstack uid=3003(openstack)?gid=2603(clouds)?groups=2603(clouds),2604(peguin),2605(nova)
? (11)、添加系統用戶mysql,要求其shell為/sbin/nologin;
????答:useradd -r ?-s /sbin/nologin mysql
[root@localhost?~]#?useradd?-r?-s?/sbin/nologin?mysql [root@localhost?~]#?cat?/etc/passwd?|?tail?-1 mysql:x:498:498::/home/mysql:/sbin/nologin
? (12)、使用echo命令,非交互式為openstack添加密碼。
????答:echo "mageedu" | passwd --stdin opentack
[root@localhost?~]#?echo?"mageedu"?|?passwd?--stdin?openstack Changing?password?for?user?openstack. passwd:?all?authentication?tokens?updated?successfully.
轉載于:https://blog.51cto.com/xiaoqiqingfeng/1840758