马哥教育网络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

相关推荐

  • 用户管理、组管理、权限管理、文本处理工具应用示例

    用户管理、组管理、权限管理、文本处理工具应用示例 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1/ [root@localhost ~]# chmod -R go= /hom…

    Linux干货 2017-07-23
  • Mariadb的主从复制实验和半同步的实现

    1,主服务器需要开启二进制日志记录,并且授权一个用户给从节点。 主服务器的主配置文件[mysqld]内容如下。 [mysqld] port= 3306 socket= /tmp/mysql.sock skip-external-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_…

    2017-09-18
  • 标准I/O和管道

    程序包含指令和数据,经常需要读入数据和输出数据 打开的文件都有一个fd:file descriptor(文件描述符) 用nano打开一个文件,查看其PID  0,1,2就是所谓的文件描述符。 在Linux里输入输出和错误都由这三个描述符来表示 标准输入(STDIN) -0 默认接受来自键盘的输入 标准输出(STDOUT)-1 默认输出到终端窗口 标…

    Linux干货 2016-08-08
  • python基础

      shell作业 1. 取出文件基名     法一:cat 1.txt | egrep -o “[^/]+$”     法二:awk -F/ ‘{print $NF}’ 1.txt 2. 取ip地址     法一:ifconfig eth0 | grep “inet addr” | awk ‘{print $2}’ | cut -d: -f2  …

    2017-09-17
  • 网络管理——基础篇

    网络管理 什么是网络 一组网络设备通过各种媒介实现信息资源共享 资源共享的功能和优点 数据和应用程序 资源 网络存储 备份设备 常见网络设备 路由器 交换机 网卡 RJ-45接口网线 光纤网线 网络应用程序 Web 浏览器(Chrome、IE、Firefox等) 即时消息(QQ、微信、钉钉等) 电子邮件(Outlook、foxmail 等) 协作(视频会议、…

    2018-04-28
  • 初入Linux世界 —马哥教育网络班N22_第二周课程练习

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。        Linux上的文件管理有三个:cp, mv, rm     1、cp命令:copy             源文件;目标文件;   &nb…

    Linux干货 2016-08-22

评论列表(1条)

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

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