第三周作业
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.