马哥教育网络班20期+第3周课程练习

1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。

# who | cut -d' ' -f1 | sort | uniq
huazi2
root

2、取出最后登录到当前系统的用户的相关信息。

# finger $(last | head -1 | cut -d' ' -f1)
Login: root                             Name: root
Directory: /root                        Shell: /bin/bash
On since 五 6月 17 09:07 (CST) on pts/1 from 172.16.100.1
   28 minutes 27 seconds idle
On since 五 6月 17 09:15 (CST) on pts/2 from 172.16.100.1
   3 seconds idle
Mail last read 二 5月 31 01:53 2016 (CST)
No Plan.

# id $(last | head -1 | cut -d' ' -f1)         
uid=0(root) gid=0(root) 组=0(root)

3、取出当前系统上被用户当作其默认shell的最多的那个shell。

# cut -d':' -f7 /etc/passwd | sort | uniq -c | sort -nr | head -1 | tr -d '[0-9 ]'
/sbin/nologin

4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。

# sort -t':' -k3nr /etc/passwd | head -10 | tr 'a-z' 'A-Z' > /tmp/maxusers.txt
# 
# cat /tmp/maxusers.txt 
OPENSTACK:X:3003:5922::/HOME/OPENSTACK:/SBIN/NOLOGIN
SLACKWARE:X:2002:2016::/HOME/SLACKWARE:/BIN/TCSH
HUAZI2:X:1241:1241::/HOME/HUAZI2:/BIN/BASH
HUAZI1:X:1237:1237::/HOME/HUAZI1:/BIN/BASH
TEST1:X:1236:1236::/HOME/TEST1:/BIN/BASH
ARCHLINUX:X:1235:1235::/USERS/ARCHLINUX:/BIN/BASH
IAMKILLER:X:1234:1234::/OPT/.PRIVATE/IAMKILLER:/SBIN/NOLOGIN

5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。

# ifconfig | egrep '(inet addr:|inet )(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' -o   
inet 172.16.100.11
inet 127.0.0.1

6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。

# ls -A  /etc/ | grep .conf$ | tr 'a-z' 'A-Z' > /tmp/etc.conf
[root@c7-1 ~]# 
[root@c7-1 ~]# cat /tmp/etc.conf
.123.CONF
ASOUND.CONF
DNSMASQ.CONF
DRACUT.CONF
E2FSCK.CONF
ELINKS.CONF
HOST.CONF
KDUMP.CONF
KRB5.CONF
LD.SO.CONF
LIBAUDIT.CONF
LIBUSER.CONF
LOCALE.CONF
LOGROTATE.CONF
MAN_DB.CONF
MKE2FS.CONF
NSSWITCH.CONF
NTP.CONF
REDIS.CONF
REDIS-SENTINEL.CONF
RESOLV.CONF
RSYSLOG.CONF
SESTATUS.CONF
SUDO.CONF
SUDO-LDAP.CONF
SYSCTL.CONF
TCSD.CONF
VCONSOLE.CONF
YUM.CONF

7、显示/var目录下一级子目录或文件的总个数。

# ls -A /var/ | wc -l   
21

8、取出/etc/group文件中第三个字段数值最小的10个组的名字。

# sort -t':' -k3n /etc/group | head -10 | cut -d':' -f1
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem

9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。

# cat /etc/{fstab,issue} > /tmp/etc.test
# 
# cat /tmp/etc.test

#
# /etc/fstab
# Created by anaconda on Mon May 23 18:04:04 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=9edd08de-e432-4196-8a06-2363c167f3e5 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
\S
Kernel \r on an \m

10、请总结描述用户和组管理类命令的使用方法并完成以下练习:

useradd 命令:
	创建用户
	格式 - useradd [options] LOGIN
		-u uid: 指定用户id [UID_MIN,UID_MAX] 定义在 /etc/login.defs
		-g gid: 指定组id or 组名, name or number  
		-c "" : 用的描述 comment
		-d : 创建时指定家目录
		-s : 指定shell
		-G : 指定用户的附加组 GROUP1[,GROUP2,...[,GROUPN]]]
		-r : 创建的是系统用户
		-M : 不创建家目录 

usermod 命令:
	用户属性修改
	格式 - usermod [options] LOGIN
		-u : 新uid
		-g : 新gid
		-s : 新shell
		-G : 新附加组,原来的附加组会覆盖,如果想追加新的附加组 要用 -a选项
		-l : 新的名字
		-d : 修改家目录,同时用 -m 选项 
		-m : 修改家目录时 复制原家目录的内容到新家目录里
		-L : 锁定指定用户,在/etc/shadow 密码字段前加!叹号
		-U : 解锁
		-e : YYYY-MM-DD 指明用户帐号过期日期

userdel 命令:
	格式 - userdel [option] login
		-r 删除用户家目录和邮件目录
	# userdel -r xiaoming 删除xiaoming用户以及家目录和邮件目录

passwd 命令:
	修改当前用户或其他用户的密码(管理员才有修改他人密码的权限)
	格式 - passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
		-l : 锁定指定用户,在/etc/shadow 密码字段前加!叹号
		-u : 解锁
		-n mindays: 指定最短使用期限
		-x maxdays:最大使用期限
		-w warndays:提前多少天开始警告
		-i inactivedays:非活动期限;
		-S 查看用户信息

		--stdin:从标准输入接收用户密码;
			echo "PASSWORD" | passwd --stdin USERNAME

groupadd 命令:
	创建组
	格式 - groupadd [options] group
		-g gid 指定gid
		-r 创建系统组
	# groupadd -r test 添加test系统组

groupmod :
	修改组属性
	groupmod [options] GROUP
	-g 指定新gid
	-n 修改组名 

groupdel 命令:
	删除组
	# groupdel test 删除 test组 此命令比较简单


gpasswd 命令:
	给组添加密码
	- 格式 gpasswd [option] group
	-a , 指定用户到某组 -a 用户名 要加入的组
	-d , 删除用户附加组 -d 用户名 要删除的组
	-A , 设置有管理权限的用户列表
	# gpasswd test  给 test 组加密码
	# gpasswd test -a openstack   将test组添加到 openstack用户的附加组
	# gpasswd test -d openstack	  删除 openstack 的附加组 test

finger 命令:
	查看用户信息
		# finger root
		Login: root                             Name: root
		Directory: /root                        Shell: /bin/bash
		On since Fri Jun 17 09:07 (CST) on pts/1 from 172.16.100.1
		   5 seconds idle
		On since Fri Jun 17 09:15 (CST) on pts/2 from 172.16.100.1
		   3 minutes 41 seconds idle
		Mail last read Tue May 31 01:53 2016 (CST)
		No Plan.

chage 命令:
	修改用户密码过期信息
	- 格式 chage [options] LOGIN
		-E 帐号到期的日期
		-I 停滞时期 如果一个密码已过期这些天,那么此帐号将不可用
		-m 密码可更改的最小天数
		-M 密码有效的最大天数
		-W 用户密码到期前,提前收到警告信息的天数
		-l 查看账户年龄信息

chsh 命令:
	修改用户 shell
	- 格式 chsh [ -s shell ] [ -l ] [ -u ] [ -v ] [ username ]
		-s 要修改的shell
		-l 列出当前系统的shell
		# chsh -s /sbin/nologin  openstack
		# chsh openstack 交互式
		# chsh 修改当前用户shell

id 命令:
	id [OPTION]... [USERNAME]
	查看用户的相关信息
	-u 显示用户id
	-g 显示组id
	-G 显示所有组 附加组
	-n 显示组或用户名
	# id -g openstack  显示 openstack 用户的 基本组id
	# id -g -n openstack 显示 openstack 用户的 基本组名
	# id -G -n openstack 显示 openstack 用户的 附加组名


(1)、创建组distro,其GID为2016;
	groupadd distro -g 2016

(2)、创建用户mandriva, 其ID号为1005;基本组为distro;
	useradd mandriva -u 1005 -g distro

(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
	useradd mageia -u 1100 -d /home/linux

(4)、给用户mageia添加密码,密码为mageedu;
	echo mageedu | passwd --stdin mageia

(5)、删除mandriva,但保留其家目录;
	userdel mandriva

(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
	useradd slackware -u 2002 -g distro -G peguin

(7)、修改slackware的默认shell为/bin/tcsh;
	usermod slackware -s /bin/tcsh
	
(8)、为用户slackware新增附加组admins;
	gpasswd admins -a slackware

(9)、为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;
	echo 123 | passwd --stdin slackware
	passwd -n 3 -x 180 -w 3 slackware

(10)、添加用户openstack,其ID号为3003, 基本组为clouds,附加组为peguin和nova;
	useradd openstack -u 3003 -g clouds -G peguin,nova

(11)、添加系统用户mysql,要求其shell为/sbin/nologin;
	useradd mysql -s /sbin/nologin 

(12)、使用echo命令,非交互式为openstack添加密码。"
	echo 123 | passwd --stdin openstack

原创文章,作者:banbula,如若转载,请注明出处:http://www.178linux.com/20695

(0)
banbulabanbula
上一篇 2016-06-29
下一篇 2016-06-29

相关推荐

  • 鸟哥马哥齐相聚,linux界最强音

    台湾著名Linux网站——“鸟哥的Linux私房菜”的站长蔡德明,2015年3月28日受邀到51CTO进行交流,51cto学院还特此邀请大陆linux权威专家马哥参与了本次活动,在轻松愉快的氛围下,马哥和鸟哥以及其他专家人员对于“容器虚拟化下运维调度层的设计”,“Linux在云计算的应用”,“可视化集成运维平台最佳实践”等三个议题展开思想的碰撞。本次马哥和鸟…

    2015-03-30
  • 认识shell

    一、认识shell 什么是shell?shell为单词外壳的意思。那么这是谁的外壳?我们知道一个系统中实际工作的是那些硬件,cpu、内存、磁盘等。我们如何调用这些硬件为我们工作?实际上,硬件是由内核kernel控制的。我们可以通过kernel控制硬件,但我们不能直接和内核kernel交流。我们需要一个外壳,这个外壳就是shell来沟通kernel。何为she…

    Linux干货 2015-09-22
  • Man手册功能介绍

    Man:是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。 语法:man(选项)(参数) 选项: -a:在所有的man帮助手册中搜索 -f:等价于whatis指令,显示给定关键字的简短描述信息 -P:指定内容时使用分页程序 -M:指定man手册搜索的路径。 本地手册:/usr/share/man &nbsp…

    Linux干货 2016-10-17
  • 一切皆文件——Linux基本命令(1)

    1.一切皆文件 在dev下有很多硬件的文件 sr0是光驱 console是终端,也划为一个文件   2.查看终端   3.两个终端发信 首先右键选择Clone Session,新客隆了一个centos6 分别使用tty命令查看终端名。 分别为0和1 通过命令:echo “想发送的信息“ > 终端名 即可发送 在0中输入命令: 在1中…

    Linux干货 2017-07-13
  • LVS类型及其调度算法

    LVS类型:     NAT:–>(DNAT) (多目标的DNAT)     DR:     TUN:     FULLNAT: LVS NAT的特性  &nbs…

    Linux干货 2016-10-29
  • Linux基础学习总结(一)

    一、计算机的组成与功能 二、Linux的版本 三、Linux的哲学思想 四、Linux基础命令(一) 五、Linux帮助信息 六、Linux目录结构

    Linux干货 2016-09-20

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-29 15:14

    写的很好,排版很漂亮,加油