马哥教育网络班21期+第3周课程练习
[TOC]
1. 列出当前系统上所有已经登录的用户的用户名,注意:同一用户登录多次,则只显示一次即可。
[root@zj-6-2 ~]# who root tty7 2016-04-24 02:22 (:0) root pts/1 2016-04-24 02:07 (192.168.101.1) root pts/2 2016-04-24 02:20 (192.168.101.1) root pts/0 2016-07-23 09:27 (192.168.101.253) root pts/3 2016-07-23 15:59 (192.168.101.253) zj pts/4 2016-07-23 16:19 (192.168.101.253) [root@zj-6-2 ~]# who | cut -d' ' -f1 | uniq | wc -l 2
2. 取出最后登录到当前系统的用户的相关信息。
[ies@zj-6-2 ~]$ who root tty7 2016-04-24 02:22 (:0) root pts/1 2016-04-24 02:07 (192.168.101.1) root pts/2 2016-04-24 02:20 (192.168.101.1) root pts/0 2016-07-23 09:27 (192.168.101.253) root pts/3 2016-07-23 15:59 (192.168.101.253) zj pts/4 2016-07-23 16:19 (192.168.101.253) ies pts/5 2016-07-23 16:24 (192.168.101.253) [ies@zj-6-2 ~]$ who | tail -1 ies pts/5 2016-07-23 16:24 (192.168.101.253) [ies@zj-6-2 ~]$ who | tail -1 | cut -d ' ' -f1 ies
3. 取出当前系统上被用户当作其默认shell的最多的那个shell。
[root@zj-6-2 ~]# grep 'sh\>$' /etc/passwd | cut -d ':' -f7 | uniq -c | sort -n | tail -n 1 5 /bin/bash
4. 将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
[root@zj-6-2 ~]# sort -t ':' -k 3 -n /etc/passwd | tail -n 10 | tr [a-z] [A-Z] >> /tmp/maxusers.txt [root@zj-6-2 ~]# cat /tmp/maxusers.txt AVAHI-AUTOIPD:X:170:170:AVAHI IPV4LL STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGIN ABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGIN PULSE:X:496:493:PULSEAUDIO SYSTEM DAEMON:/VAR/RUN/PULSE:/SBIN/NOLOGIN MEMCACHED:X:497:494:MEMCACHED DAEMON:/VAR/RUN/MEMCACHED:/SBIN/NOLOGIN SASLAUTH:X:498:76:"SASLAUTHD USER":/VAR/EMPTY/SASLAUTH:/SBIN/NOLOGIN RTKIT:X:499:496:REALTIMEKIT:/PROC:/SBIN/NOLOGIN DMDBA:X:500:500::/HOME/DMDBA:/BIN/BASH ZJ:X:501:501::/HOME/ZJ:/BIN/BASH IES:X:502:502::/HOME/IES:/BIN/TCSH NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN [root@zj-6-2 ~]#
5. 取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
[root@zj-6-2 ~]# ifconfig | grep 'inet addr' | head -n 1 | cut -d ':' -f 2 | cut -d ' ' -f1 192.168.101.206 [root@zj-6-2 ~]# ifconfig | egrep -o 'addr:[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' | head -1 | cut -d: -f2 192.168.101.206
6. 列出/etc目录下所有以 .conf 结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
[root@zj-6-2 ~]# ls /etc/ | grep '\.conf$' | tr [a-z] [A-Z] > /tmp/etc.conf [root@zj-6-2 ~]# cat /tmp/etc.conf ANT.CONF ASOUND.CONF AUTOFS_LDAP_AUTH.CONF CAS.CONF CGCONFIG.CONF CGRULES.CONF CGSNAPSHOT_BLACKLIST.CONF DM_SVC.CONF DNSMASQ.CONF DRACUT.CONF ......
7. 显示/var目录下一级子目录或文件的总个数。
[root@zj-6-2 ~]# ls /var/ | wc -l 23
8. 取出/ect/group文件中第三个字段数值最小的10个组的名字。
[root@zj-6-2 ~]# sort -t':' -k 3 -n /etc/group | head -n 10 | cut -d: -f1 root bin daemon sys adm tty disk lp mem kmem
9. 将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
[root@zj-6-2 ~]# cat /etc/fstab /etc/issue > /tmp/etc.test [root@zj-6-2 ~]# cat /tmp/etc.test # # /etc/fstab # Created by anaconda on Thu Aug 27 08:34:38 2015 # # 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 # UUID=ca76697b-a614-40dc-bd18-fe9c9852bb6c / ext4 defaults 1 1 UUID=cc02b17a-b4b4-4231-b0b6-53654400fde5 /boot ext4 defaults 1 2 UUID=69878b6d-5169-4a0c-831f-a51f1c1274a8 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 Red Hat Enterprise Linux Server release 6.5 (Santiago) Kernel \r on an \m
10. 请总结描述用户和组管理类命令的使用方法并完成以下练习:
用户和组相关的管理类命令介绍
useradd : 用户创建 -u UID:[UID_MIN,UID_MAX],定义在/etc/login.defs文件中 若不指定uid,则以现有最大uid为准,依次加1; -g GID: 指定用户所属基本组,可为组名,也可为GID,组名必须已经存在 -c "COMMENT": 添加用户注释信息; -d /PATH/TO/HOME_DIR: 指定用户主目录,指定的目录最好不要事先存在。 -s: 指明用户默认shell程序,可用shell列表在/etc/shells文件中 -G GROUP[,GROUP2,...[,GROUPN]]: 指明附加组,组必须已存在; -r: 创建系统用户 CentOS 6: ID<500 CentOS 7: ID<1000 -D:修改useradd默认值,默认值设定:/etc/default/useradd 示例: useradd -D -s /bin/csh
groupadd : 组创建 group [OPTIONS]... group_name -g GID:指明GID号;[GID_MIN,GID_MAX],定义在/etc/login.defs文件中 -r: 创建系统组: CentOS 6: ID<500 CentOS 7: ID<1000 示例: groupadd -g 3000 test groupadd -r test groupadd -r -g 121 test
id:查看用户相关的id信息 id [OPTIONS]... USER -u: UID -g: GID -G: 显示所属的所有组 -n: NAME,显示名称而不是id号 示例: [root@zj-6-2 ~]# id slackware uid=2022(slackware) gid=2016(distro) 组=2016(distro),2017(peguin),2018(admins)
su:切换用户或以其他用户身份执行命令; su [OPTION]... [-] [USER [ARG]...] 切换用户的方式: su USERNAME:非登录式切换,不会读取目标用户的配置文件; su - USERNAME:登录式切换,读取用户的配置文件,完全切换; Note; root su至其他用户无需密码;非root用户切换时需要密码; 换个身份执行命令: su [-] username -c "COMMANDS" 选项: -l :su -l username 相当于 su - username
usermod : 用户属性修改 usermod [OPTIONS]... username -u UID: 新UID -g GID: 新GID -G GROUP[,GROUP2,...[,GROUPN]]: 新附加组,原来的附加组会被覆盖,若要保留原有, 需使用 -a选项,表示追加;usermod -a -G GROUP1,GROUP2.. -s SHELL: 新的SHELL; -c 'COMMENT': 新的注释信息; -d HOME_DIR: 指定新的家目录;新的家目录不会自动创建,原有家目录中的文件也不会同时移动至新 的家目录,若要移动,则同时使用-m选项; usermod -d HOME_DIR -m username Note : 使用-d指定新的家目录时,若不使用-m选项,登陆时系统会报错。 -l login_name: 指定新名字; 示例: 将test用户名修改为zzz [root@zj-5-2 ~]# usermod -l zzz test [root@zj-5-2 ~]# su - test su: 用户 test 不存在 [root@zj-5-2 ~]# su - zzz -L:锁定指定用户,passwd文件中密码前加!号; -U:解锁指定用户 -e YYYY-MM-DD: 指明用户账号过期日期; -f INACTIVE: 设定非活跃期限;
passwd : 设置用户密码 passwd [OPTIONS]... USERNAME:修改指定用户的密码,仅root用户有权限; passwd:修改自己的密码; -l:锁定指定用户,passwd文件中密码前加; -u: 解锁用户; -n mindays: 指定最短使用期限 -x maxdays: 指定最大使用期限 -w warndays: 提前多少天开始警告 -i inactivedays: 非活动期限:即密码过期后还可使用多少天 --stdin:从标准输入接收用户密码: echo "PASSWD" | passwd --stdin USERNAME
userdel : 删除用户 userdel [OPTIONS]... username -r:删除用户家目录;
groupmod :组属性修改 groupmod [OPTIONS]... GROUP -n group_name: 新组名 -g GID:新的GID;
groupdel : 删除组 groupdel GROUP_NAME
gpasswd : 组密码设置 gpasswd [OPTIONS] group gpasswd oinstall,密码在/etc/gshadow文件中; -a USER GROUP: 将USER添加到指定组中 -d USER GROUP:删除用户user的以当前组为组名的附加组 -A user1,user2,..:设置有管理权限的用户列表。 newgrp group_name : 临时切换属组 如果用户本不属于此组,则需要组密码;
pwck - verify integrity of password files SYNOPSIS pwck [-q] [-s] [passwd [ shadow ]] pwck [-q] [-r] [passwd [ shadow ]]
chage : 修改密码过期信息 NAME chage - change user password expiry information SYNOPSIS chage [options] [LOGIN] Options: -d, --lastday LAST_DAY set date of last password change to LAST_DAY -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -h, --help display this help message and exit -I, --inactive INACTIVE set password inactive after expiration to INACTIVE -l, --list show account aging information -m, --mindays MIN_DAYS set minimum number of days before password change to MIN_DAYS -M, --maxdays MAX_DAYS set maximim number of days before password change to MAX_DAYS -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS
其他命令:chfn,chsh,finger chfn USERNAME:修改注释信息;相当于usermod -c chsh:修改默认shell finger USERNAME:查看用户注释信息;
### (1). 创建组*distro*,其*GID*为*2016*;
[root@zj-6-2 ~]# groupadd -g 2016 distro [root@zj-6-2 ~]# grep 'distro' /etc/group distro:x:2016:
(2). 创建用户mandriva,其ID号为1005;基本组为distro;
[root@zj-6-2 ~]# useradd -u 1105 -g distro magedriva [root@zj-6-2 ~]# id magedriva uid=1105(magedriva) gid=2016(distro) 组=2016(distro)
(3). 创建用户mageia,其ID号为1100,家目录为/home/linux;
[root@zj-6-2 ~]# useradd -u 1100 -d /home/linux mageia [root@zj-6-2 ~]# id mageia uid=1100(mageia) gid=1100(mageia) 组=1100(mageia) [root@zj-6-2 ~]# grep 'mageia' /etc/passwd mageia:x:1100:1100::/home/linux:/bin/bash
(4). 给用户mageia添加密码,密码为mageedu;
方法一: [root@zj-6-2 ~]# echo "mageedu" | passwd --stdin mageia 更改用户 mageia 的密码 。 passwd: 所有的身份验证令牌已经成功更新。 方法二: [root@zj-6-2 ~]# passwd mageia 更改用户 mageia 的密码 。 新的 密码:
(5). 删除mandriva,但保留其家目录;
[root@zj-6-2 ~]# userdel magedriva [root@zj-6-2 ~]# ls -ld /home/magedriva/ drwx------. 4 1105 distro 4096 7月 23 17:16 /home/magedriva/
(6). 创建用户slackware,其ID号为2022,基本组为distro,附加组为peguin;
[root@zj-6-2 ~]# groupadd peguin [root@zj-6-2 ~]# useradd -u 2022 -g distro -G peguin slackware [root@zj-6-2 ~]# id slackware uid=2022(slackware) gid=2016(distro) 组=2016(distro),2017(peguin)
(7). 修改slackware的默认shell为/bin/tcsh;
[root@zj-6-2 ~]# grep 'slackware' /etc/passwd slackware:x:2022:2016::/home/slackware:/bin/bash [root@zj-6-2 ~]# [root@zj-6-2 ~]# usermod -s /bin/tcsh slackware [root@zj-6-2 ~]# grep 'slackware' /etc/passwd slackware:x:2022:2016::/home/slackware:/bin/tcsh
(8). 为用户slackware新增附加组admins;
[root@zj-6-2 ~]# id slackware uid=2022(slackware) gid=2016(distro) 组=2016(distro),2017(peguin) [root@zj-6-2 ~]# groupadd admins [root@zj-6-2 ~]# usermod -a -G admins slackware [root@zj-6-2 ~]# id slackware uid=2022(slackware) gid=2016(distro) 组=2016(distro),2017(peguin),2018(admins)
usermod -G GROUP[,GROUP2,…[,GROUPN]]: 新附加组,原来的附加组会被覆盖,若要保留原有附加组,需使用 -a选项,表示追加;
usermod -a -G GROUP1,GROUP2..
(9). 为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;
passwd -n 3 -x 180 -w 3 slackware
(10). 添加用户openstack,其ID号为3003,基本组为clouds,附加组为peguin和nova;
[root@zj-6-2 ~]# groupadd clouds [root@zj-6-2 ~]# groupadd nova [root@zj-6-2 ~]# useradd -u 3003 -g clouds -G peguin,nova openstack [root@zj-6-2 ~]# id openstack uid=3003(openstack) gid=2019(clouds) 组=2019(clouds),2017(peguin),2020(nova)
(11). 添加系统用户mysql,要求其shell为/bin/nologin;
[root@zj-6-2 ~]# useradd -r -s /bin/nologin mysql
(12). 使用echo
命令,非交互式为openstack添加密码;
[root@zj-6-2 ~]# echo 'mageedu' | passwd --stdin openstack 更改用户 openstack 的密码 。 passwd: 所有的身份验证令牌已经成功更新。
原创文章,作者:N21_未来人,如若转载,请注明出处:http://www.178linux.com/25583
评论列表(1条)
写的很好,排版也很棒,加油