马哥教育网络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 18:16
下一篇 2016-06-23 10:53

相关推荐

  • 马哥教育网络19期+第6周课程练习

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#     [root@Hao etc]# cp /etc/rc.d/rc.sysinit /tmp     [root@Hao etc]…

    2016-07-07
  • 高级文件文件系统管理之btrfs系统

    一.概述 btrfs文件系统:     技术预览版     btrfs (B-tree,Butter FS,Better FS),GPL,Oracle,2007,CoW     ext3/ext4,xfs 核心特性:  &nbsp…

    Linux干货 2016-09-11
  • Linux基础之shell脚本编程(三)

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;   1 #!/bin/bash   2 #author:BaoZhang   3 #  …

    Linux干货 2016-11-20
  • N26-第五周作业-邢岩

    马哥门徒-N26-邢岩    我要继续今天的博客,《一万小时天才理论》里提到了髓鞘质,我是不是正在慢慢的给自己包裹一层髓鞘质呢?如果还没有,那么继续吧。    第一题:显示当前系统上root、fedora或user1用户的默认shell。      ~]# grep -E &#8…

    2017-02-24
  • CentOS7.3系统上编译安装httpd.2.4.25

    本文所做的所有操作是在一部新安装的CentOS7.3系统上。 1.环境与配置 环境说明:VMware上安装的CentOS7.3系统,7.3完整版光盘做成的yum源 配置:编译生成的所有的文件都存放在/usr/local/httpd24/这个目录下 2.安装GCC编译器 #安装Development tools这个软件包组 [root@pxe68 ~]# yu…

    2017-04-20
  • 简述一下TCP三次握手四次挥手

    TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6。 原则上任何数据传输都无法确保绝对可靠,三次握手只是确保可靠的基本需要。 TCP三次握手 TCP建立连接为什么是三次握手,而不是两次或四次? 个人理解:因为要双方都要确定对方的网络没毛病,通讯正常。 还有一个网上看到的说法,我觉得很有意思: 我:1+1等于几? 她:2,2+2等于几? 我:4 …

    2018-04-30

评论列表(1条)

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

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