马哥教育网络20期+第三周练习博客

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

[root@localhost ~]# who | cut -d" " -f1 | uniq
jobs
root

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

[root@localhost ~]# who | cut -d" " -f1 | uniq | tail -1
root

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

[root@localhost ~]# cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 
     21 /sbin/nologin

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

[root@localhost ~]# cat /etc/passwd | sort -t: -k3 -n | tail -10 | tr 'a-z' 'A-Z' > /tmp/maxusers.txt
[root@localhost ~]# cat /tmp/maxusers.txt 
ODS:X:999:998:SOFTHSM PRIVATE KEYS OWNER://VAR/LIB/SOFTHSM:/SBIN/NOLOGIN
JOBS:X:1000:1000:JOBS:/HOME/JOBS:/BIN/BASH
TOM:X:1001:1001::/HOME/TOM:/BIN/BASH
BASH:X:1002:1003::/HOME/BASH:/BIN/BASH
BASHER:X:1003:1004::/HOME/BASHER:/BIN/BASH
TESTBASH:X:1004:1005::/HOME/TESTBASH:/BIN/BASH
NOLOGIN:X:1005:1006::/HOME/NOLOGIN:/SBIN/NOLOGIN
USER1:X:1006:1007::/HOME/USER1:/BIN/BASH
JERRY:X:65533:1002::/HOME/JERRY:/BIN/BASH
NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
[root@localhost ~]#

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

[root@localhost ~]# ifconfig | egrep '((\<[1-9]\.)|([1-9][0-9]\.)|(1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)\>)\1*'
        inet 192.168.2.99  netmask 255.255.255.0  broadcast 192.168.2.255
        RX packets 72860  bytes 22883954 (21.8 MiB)
        TX packets 29823  bytes 4663870 (4.4 MiB)
        inet 127.0.0.1  netmask 255.0.0.0
        RX packets 16  bytes 1224 (1.1 KiB)
        TX packets 16  bytes 1224 (1.1 KiB)
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

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

[root@localhost ~]# ls -R /etc/ | grep ".*.conf$" | tr 'a-z' 'A-Z' > /tmp/etc.conf

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

[root@localhost ~]# echo $[$[$(ll /var | grep "^d.*" | wc -l)]+$[$(ll /var | grep "^-.*" | wc -l)]]
23

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

[root@localhost ~]# cat /etc/group | sort -t: -k3 -n | head -10 | cut -d: -f1
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem

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

[root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test
[root@localhost ~]# cat /tmp/etc.test 

#
# /etc/fstab
# Created by anaconda on Fri Mar 11 22:14:07 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=73822afe-bc00-431b-8851-0151d8054a67 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
Red Hat Linux 9
Kernel 1.2.3.4

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

用户管理命令总结:

useradd:添加用户

命令格式:

useradd [options] LOGIN

选项:

-u UID: [UID_MIN, UID_MAX], 定义在/etc/login.defs
-g GID:指明用户所属基本组,可为组名,也可以GID;
-c "COMMENT":用户的注释信息;
-d /PATH/TO/HOME_DIR: 以指定的路径为家目录;
-s SHELL: 指明用户的默认shell程序,可用列表在/etc/shells文件中;
-G GROUP1[,GROUP2,...[,GROUPN]]]:为用户指明附加组;组必须事先存在;
-r: 创建系统用户

usermod:修改用户属性 

命令格式:

usermod [options] LOGIN

选项:

-u UID: 新UID
-g GID: 新基本组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;
-s SHELL:新的默认SHELL;
-c 'COMMENT':新的注释信息;
-d HOME: 新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项;
-l login_name: 新的名字;
-L: lock指定用户
-U: unlock指定用户
-e YYYY-MM-DD: 指明用户账号过期日期;
-f INACTIVE: 设定非活动期限;

chsh:修改用户登录shell

命令格式:

chsh [-s shell] [-l] [-u] [-v] [username]

选项:

-s:指定登录shell
-l:打印出/etc/shells下的shell列表并退出

chfn:改变指纹信息

命令格式:

chfn  [-f  full-name]  [-o  office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [username]

选项:

-f, 指定真实名称
-o, 指定办公室号码
-p, 指定办公电话
-h, 指定家庭电话

chage:修改用户密码过期信息

命令格式:

chage [options] LOGIN

选项:

-d, LAST_DAY:设置1970年1月1日起最后一次更改密码的时间,如果设置为0则下次登录必须修改密码
-E, --expiredate EXPIRE_DATE:设置自1970年1月1日起,经过多长时间后账号将不能使用
-I, --inactive INACTIVE:设置账号被锁定前,密码过期的天数
-m, --mindays MIN_DAYS:设置修改密码的最小天数
-M, --maxdays MAX_DAYS:设置密码修改的最大天数
-W, --warndays WARN_DAYS:设置密码修改前的告警天数

userdel:删除用户账户与相关文件

命令格式:

userdel [options] LOGIN

选项:

-f,强制
-r,删除用户家目录

组管理命令总结:

groupadd:添加用户组

命令格式:

groupadd [options] group

选项:

-g GID: 指明GID号;[GID_MIN, GID_MAX]
-r: 创建系统组;

groupmod:修改组属性

命令格式:

groupmod [options] GROUP

选项:

-n group_name: 新名字
-g GID: 新的GID;

groupdel:删除用户组

命令格式:

groupdel [options] GROUP

选项:

-R:改变CHROOT_DIR的目录并使用CHROOT_DIR的配置文件

passwd:给用户添加密码

命令格式:

passwd [OPTIONS] UserName
passwd

选项:

-l 锁定指定用户
-u 解锁指定用户
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限;
--stdin:从标准输入接收用户密码;
    echo "PASSWORD" | passwd --stdin USERNAME

gpasswd:组密码 

命令格式:

gpasswd [OPTION] GROUP

选项:

-a user: 将user添加至指定组中;
-d user: 删除用户user的以当前组为组名的附加组
-A user1,user2,...: 设置有管理权限的用户列表

pwck:验证密码文件的完整性

命令格式;

pwck [options] [passwd [ shadow ]]

选项:

-q,仅显示错误信息,来自用户任何操作的告警信息则不会显示
-r,在只读模式下运行pwck命令
-R:改变CHROOT_DIR的目录并使用CHROOT_DIR的配置文件
-s,在/etc/passwd,/etc/shadow文件中以UID为标准进行排序

退出值:

0  success                              成功
1  invalid command syntax               参数错误
2  one or more bad password entries     输入了一个或多个错误密码
3  can't open password files            不能打开密码文件
4  can't lock password files            不能锁定密码文件
5  can't update password files          不能更新密码文件
6  can't sort password files            不能对密码文件排序

id:打印真实有效的用户和组ID

命令格式:

id [OPTION]... [USER]

选项:

-u: UID
-g: GID
-G: Groups
-n: Name

who:显示谁登陆系统

命令格式:

who [OPTION]... [ FILE | ARG1 ARG2 ]

选项:

-b:系统最近一次启动的时间
-d:显示死亡的进程
-l:显示系统登陆进程             
-m:只有主机名和用户相关的标准输入
-q:所有登录的用户名和登录的用户数
-r:显示当前运行等级
-t:显示最后一次系统时钟的变化
-u:列出登陆的用户

whoami:显示有效的用户ID

命令格式:

whoami [OPTION]...

w:显示谁登陆了系统并且在做什么

命令格式:

w [options] user [...]

选项:

-h:不显示头部信息
-u:忽略在当前进程和CPU时间指明的用户名
-s:使用短格式,不显示登录时间、JCPU时间和PCPU时间

su:使用替代用户和组ID运行一个命令

命令格式:

su [options...] [-] [user [args...]]

选项:

-c:使用-c选项传递一个命令到shell
--session-command=command:与-c一样,但不会创建新的会话
-g:指定基本组,这个命令只允许root用户使用
-G:指定附加组,这个命令只允许root用户使

退出值:

1      Generic error before executing the requested command
126    The requested command could not be executed
127    The requested command could was not found

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

[root@localhost ~]# groupadd -g 2016 distro
[root@localhost ~]# cat /etc/group | tail -1
distro:x:2016:

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

[root@localhost ~]# useradd -u 1005 -G distro mandriva

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

[root@localhost ~]# useradd -u 1100 -d /home/linux/ mageia

(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
[root@localhost ~]# ls /home/ | grep man
mandriva

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

[root@localhost ~]# groupadd peguin
[root@localhost ~]# useradd -u 2002 -g distro -G peguin slackware
[root@localhost ~]# id slackware
uid=2002(slackware) gid=2016(distro) groups=2016(distro),2017(peguin)

(7)、修改slackware的默认shell为/bin/tcsh;

[root@localhost ~]# usermod -s tcsh slackware
[root@localhost ~]# cat /etc/passwd | grep tcsh
slackware:x:2002:2016::/home/slackware:tcsh

(8)、为用户slackware新增附加组admins;

[root@localhost ~]# groupadd admins
[root@localhost ~]# usermod -G admins slackware
[root@localhost ~]# id slackware
uid=2002(slackware) gid=2016(distro) groups=2016(distro),2018(admins)

(9)、为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;

[root@localhost ~]# echo "obama" | passwd -n 3 -x 180 -w 3 --stdin slackware
Adjusting aging data for user slackware.
passwd: Success
[root@localhost ~]# cat /etc/shadow | grep slackware
slackware:!!:16974:3:180:3:::

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

[root@localhost ~]# useradd -u 3003 -G peguin,nova openstack
[root@localhost ~]# id openstack
uid=3003(openstack) gid=3003(openstack) groups=3003(openstack),2017(peguin),2020(nova)

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

[root@localhost ~]# useradd -r -s /sbin/nologin mysql
[root@localhost ~]# cat /etc/passwd | grep mysql
mysql:x:982:977::/home/mysql:/sbin/nologin

(12)、使用echo命令,非交互式为openstack添加密码。

[root@localhost ~]# echo "obama" | passwd --stdin openstack
Changing password for user openstack.
passwd: all authentication tokens updated successfully.

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

(0)
AnacondaAnaconda
上一篇 2016-06-22
下一篇 2016-06-23

相关推荐

  • LVM 2 介绍以及怎么使用?

    一、 LVM是什么? LVM利用Linux内核的device-mapper来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间, without getting caught up …

    Linux干货 2017-01-06
  • fstab配置文件、swap分区,文件关联

    fstab配置文件、swap分区,文件关联,lvm 挂载点和/etc/fstab  配置文件系统体系  被mount、 fsck和其它程序使用  系统重启时保留文件系统体系  可以在设备栏使用文件系统卷标  使用mount -a 命令挂载/etc/fstab中的所有文件…

    Linux干货 2016-09-01
  • shell脚本一键分区

    #!/bin/bash #实现硬盘自动分区助手 echo "当前所有分区:" echo `fdisk -l|grep "Disk /dev/[sh]d"|cut -d: -f1|awk '{print $2 &q…

    Linux干货 2016-07-26
  • 文本处理三剑客之sed及vi编辑使用

    作用:       sed是Linux系统文本处理工具中的三剑客之一,它是一种流编辑器,以行为单位,能够使用正则表达式;跟其他文本处理工具模式相同,不对原文件直接操作,而是先借用一个临 时的数据缓冲区存放文文本数据,同时还有一个自己独特的空间"pattern space",我们称之为sed的模式空间,它的处理…

    Linux干货 2016-08-11
  • 马哥教育网络班21期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 [ro…

    Linux干货 2016-07-29

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-23 13:46

    写的很棒,排版也很好,也使用的一些案例,但是取ip地址好像没有取出来吧,在仔细想一下正则应该怎么写