第三周作業
1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。
使用到的命令:w或who、cut、sort、uniq
w、who命令顯示當前已經登錄的用戶
示例:顯示系統中當前已登錄的用戶
[root@localhost ~]# w 06:31:46 up 2 min, 1 user, load average: 0.11, 0.12, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.44.1 06:31 2.00s 0.01s 0.01s w [root@localhost ~]# who root pts/0 2017-02-02 06:31 (192.168.44.1)
cut:文本截取工具
cut option [file]
option
-d --delimiteer 指定分隔符,默認是空白符
-f --fields 挑選出字段,顯示第幾段
# 指定單個字段
#-# 連續的多個字段
#,# 不連續的多個字段
示例 :截取已登錄用戶的用戶名
[root@localhost ~]# who| cut -d" " -f1 root root
sort :排序 默認使用字符排序
sort [option] [file]
option
-t CHAR 指定分隔符
-k # 用于排序比較的字段
-n 使用數值大小比較
-r 逆向排序
-f 忽略字符大小寫
-u 重復行(連續且重復)只保留一份
示例:按照/etc/passwd的userid進行逆向排序
cat /etc/passwd|sort -t: -k3 -r -n systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin polkitd:x:997:995:User for polkitd:/:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin halt:x:7:0:halt:/sbin:/sbin/halt shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown sync:x:5:0:sync:/sbin:/bin/sync lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin root:x:0:0:root:/root:/bin/bash
uniq:報告或移除重復的行
uniq [option] [input] [output]
option
-c 統計出重復行的次數
-d 只顯示重復過的行(兩次以上)
-u 僅顯示不重復的行
示例:列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可
[root@localhost ~]# who | cut -d" " -f1|sort |uniq root
2、取出最后登錄到當前系統的用戶的相關信息。
使用到的命令,last查看用戶登錄系統的記錄
last 查看用戶登錄系統的記錄
last [option]
-n n指數字,表示顯示最近幾次的登錄信息
-t YYYYMMDDHHMMSS 顯示該時間內的所有用戶登錄信息
username 顯示用戶username所有的登錄信息
[root@localhost ~]# id $(last -1|cut -d" " -f1|head -n1) uid=0(root) gid=0(root) groups=0(root)
3、取出當前系統上被用戶當作其默認shell的最多的那個shell。
[root@localhost ~]# cat /etc/passwd | cut -d: -f7|sort |uniq -c|sort |head -1|cut -d" " -f7 /sbin/nologin
4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。
[root@localhost ~]# cat /etc/passwd|sort -n -t: -k3|tail > /tmp/maxusers.txt [root@localhost ~]# cat /tmp/maxusers.txt ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin 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 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
5、取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
[root@localhost ~]# ifconfig eth0 |head -n2|tail -1|cut -d" " -f10 192.168.44.22
6、列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。
[root@localhost ~]# ls /etc/*.conf| tr [a-z] [A-Z]> /tmp/etc.conf [root@localhost ~]# cat /tmp/etc.conf /ETC/ASOUND.CONF /ETC/DNSMASQ.CONF /ETC/DRACUT.CONF /ETC/E2FSCK.CONF /ETC/HOST.CONF /ETC/KDUMP.CONF /ETC/KRB5.CONF /ETC/LD.SO.CONF /ETC/LIBAUDIT.CONF /ETC/LIBUSER.CONF /ETC/LOCALE.CONF /ETC/LOGROTATE.CONF /ETC/MAN_DB.CONF /ETC/MKE2FS.CONF /ETC/NSSWITCH.CONF /ETC/RESOLV.CONF /ETC/RSYSLOG.CONF /ETC/SESTATUS.CONF /ETC/SUDO.CONF /ETC/SUDO-LDAP.CONF /ETC/SYSCTL.CONF /ETC/TCSD.CONF /ETC/UPDATEDB.CONF /ETC/VCONSOLE.CONF /ETC/YUM.CONF
7、顯示/var目錄下一級子目錄或文件的總個數。
使用到命令 wc
wc: word count 單詞統計
-l lines統計行 常用
-w words 統計單詞
-c bytes字節數
[root@localhost ~]# ll /var/ | wc -l 22
8、取出/etc/group文件中第三個字段數值最小的10個組的名字。
[root@localhost ~]# cat /etc/group|sort -t: -k3 -nr|tail kmem:x:9: mem:x:8: lp:x:7: disk:x:6: tty:x:5: adm:x:4: sys:x:3: daemon:x:2: bin:x:1: root:x:0:
9、將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。
[root@localhost ~]# cat /etc/{fstab,issue} > /tmp/etc.test [root@localhost ~]# cat /tmp/etc.test # # /etc/fstab # Created by anaconda on Thu Oct 27 18:18:54 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/centos-root / xfs defaults 0 0 UUID=3ec5bba7-ad0f-4051-b169-7ea4bcae14b6 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 \S Kernel \r on an \m
10、請總結描述用戶和組管理類命令的使用方法并完成以下練習:
使用到命令useradd ,userdel,groupadd,groupdel,usermod,groupmod、passwd
useradd 添加用戶
useradd [option] username
option
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本組ID,此組得事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;
-c, --comment COMMENT:指明注釋信息;
-d, --home HOME_DIR:以指定的路徑為用戶的家目錄;通過復制/etc/skel此目錄并重命名實現;指定的家目錄路徑如果事先存在,則不會為用戶復制環境配置文件;
-s, --shell SHELL:指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells文件中;
-r, --system:創建系統用戶;
userdel 刪除用戶
userdel [option] username
option
-r:刪除用戶時一并刪除其家目錄;
usermod 修改用戶屬性
usermod [option] username
option
-u, --uid UID:修改用戶的ID為此處指定的新UID;
-g, --gid GROUP:修改用戶所屬的基本組;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;
-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:解鎖用戶的密碼;
groupadd 添加組
groupadd [option] groupname
option
-g GID:指定GID;默認是上一個組的GID+1;
-r: 創建系統組;
groupdel 刪除組
groupdel [option] groupname
option選項基本不用
groupmod 修改組屬性
groupmod [option] groupname
option
-g GID:修改GID;
-n new_name:修改組名;
passwd 設置密碼
passwd
(1) passwd:修改用戶自己的密碼;
passwd [option] username
(2) passwd USERNAME:修改指定用戶的密碼,但僅root有此權限;
-l, -u:鎖定和解鎖用戶;
-d:清除用戶密碼串;
-e DATE: 過期期限,日期;
-i DAYS:非活動期限;
-n DAYS:密碼的最短使用期限;
-x DAYS:密碼的最長使用期限;
-w DAYS:警告期限;
--stdin:
echo "PASSWORD" | passwd --stdin USERNAME
(1)、創建組distro,其GID為2016;
[root@localhost ~]# groupadd -g 2016 distro
(2)、創建用戶mandriva, 其ID號為1005;基本組為distro;
[root@localhost ~]# useradd -g distro -u 1005 mandriva [root@localhost ~]# id mandriva uid=1005(mandriva) gid=1005(mandriva) groups=1005(distro)
(3)、創建用戶mageia,其ID號為1100,家目錄為/home/Linux;
[root@localhost ~]# useradd -u 1100 -d /home/Linux mageia [root@localhost ~]# grep mageia /etc/passwd mageia:x:1100:1100::/home/Linux:/bin/bash
(4)、給用戶mageia添加密碼,密碼為mageedu;
[root@localhost ~]# echo mageedu |passwd --stdin mageia Changing password for user mageia. passwd: all authentication tokens updated successfully.
(5)、刪除mandriva,但保留其家目錄;
[root@localhost ~]# userdel mandriva
(6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
[root@localhost ~]# id slackware uid=2002(slackware) gid=2016(distro) groups=2016(distro),2017(peguin)
(7)、修改slackware的默認shell為/bin/tcsh;
[root@localhost ~]# usermod -s /bin/tcsh slackware [root@localhost ~]# grep slackware /etc/passwd slackware:x:2002:2016::/home/slackware:/bin/tcsh
(8)、為用戶slackware新增附加組admins;
[root@localhost ~]# id slackware uid=2002(slackware) gid=2016(distro) groups=2016(distro),2018(admins)
(9)、為slackware添加密碼,且要求密碼最短使用期限為3天,最長為180天,警告為3天;
[root@localhost ~]# echo slackware|passwd --stdin -n3 -x180 -w3 slackware [root@localhost ~]# grep slackware /etc/shadow slackware:!!:17199:3:180:3:::
(10)、添加用戶openstack,其ID號為3003, 基本組為clouds,附加組為peguin和nova;
[root@localhost ~]# useradd -u 3003 -G peguin,nova clouds [root@localhost ~]# id clouds uid=3003(clouds) gid=3003(clouds) groups=3003(clouds),2017(peguin),2019(nova)
(11)、添加系統用戶mysql,要求其shell為/sbin/nologin;
useradd -s /sbin/nologin mysql [root@localhost ~]# grep mysql /etc/passwd mysql:x:3004:3004::/home/mysql:/sbin/nologin
(12)、使用echo命令,非交互式為openstack添加密碼。
[root@localhost ~]# echo openstack |passwd --stdin openstack Changing password for user openstack. passwd: all authentication tokens updated successfully.