马哥教育网络班21期+第三周课程练习

马哥教育网络班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,附加组为peguinnova;

[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

(0)
上一篇 2016-07-29 15:25
下一篇 2016-07-29 15:25

相关推荐

  • 第四周(1):课堂练习与作业

    课堂练习: 1、删除/etc/grub.conf文件中所有以空白开头的行行首的空白字符 [root@centos6 ~]# sed 's@^[[:space:]]\+@@' /etc/grub.conf 2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符 …

    Linux干货 2016-08-10
  • rsyslog应用举例

    rsyslog+mysql+loganalyzer 1、yum install mariadb-server php-gd rsyslog-mysql ##连接到mysql需要的驱动程序,用来保存信息 2、登录数据库并给rsyslog赋权,设置密码,重读授权表 3、以rsyslog用户身份登录数据库,此时创建Syslog库,注意此处数据库名称要与rsyslo…

    Linux干货 2016-10-23
  • 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

    一、环境描述 安装有ansible的服务器:192.168.13.45 测试环境服务器:192.168.13.49 /home/app/api-tomcat/webapps/api.war为测试环境新版本war包位置 生产环境服务器:192.168.13.51 /home/app/api-tomcat/webapps/api.war为生产环境war包位置 /…

    Linux干货 2016-12-18
  • 第六周作业补充-vim简介及其使用方法详细介绍

    What       Vim是由Vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在Unix& Unix Like操作系统中被广泛使用。和Emacs并列成为Unix& Unix Like操作系统中最受欢迎的文本编辑器 When& Who  &nb…

    Linux干货 2016-09-26
  • 【社招】【小米-北京】内核工程师

    【社招】【小米-北京】内核工程师 【工作地点】北京市海淀区安宁庄东路72号科利源大厦 【薪酬福利】20k-40k 期权奖励、六险一金、水果花茶、班车、健身房、食堂 【投递方式】邮件主题“岗位+姓名”发送至lipengcheng3@xiaomi.com   岗位职责: 1.      负责内…

    Linux职位 2017-07-28
  • enumerate用法和转置矩阵求解、效率测试

    enumerate用法和转置矩阵求解、效率测试

    2018-04-08

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-29 15:51

    写的很好,排版也很棒,加油