云计算学习笔记——用户和组的管理、周期性任务篇

云计算学习日记Day10》------ 从零开始的云计算之旅

今天是系统学习云计算的第十天,记录了关于我的云计算学习,后续将每日更新我的笔记。欢迎大家一起来学习,如果内容有遗漏和错误,还请大家多多指正和包涵,谢谢大家。

用户账号管理

账号控制总述

基于账号的访问控制

  • 基于账户身份对资源访问进行控制
    • 账户类别:用户账号、组账号
    • 识别方式:UID、GID
  • 用户账号:超级用户root、系统用户、普通用户
  • 组账号:基本组(私有组)、附加组(从属组)

用户账号简介

  • 作用
    • 可以登录操作系统
    • 不同的用户具备不同的权限
  • 唯一标识UID
    • 编号从0开始的编号,最大是60000
    • 超级管理员的UID:永远都是0
    • 普通用户的UID:默认从1000开始

  • 作用:方便管理用户
  • 唯一标识GID:编号从0开始的编号,默认最大是60000
  • 原则:Linux一个用户必须至少属于一个组
  • 分类:
    • 基本组:一般情况与用户同名,一个用户必须有基本组,基本组只能有一个
    • 附加组(从属组):一个用户可以有多个附加组,也可以没有附加组

账号的存放类别

  • 账号数据的存放
    • 存储在本机磁盘中------本地账户
  • 本地账户的数据文件
    • /etc/passwd
    • /etc/shadow
    • /etc/group
    • /etc/gshadow

解析用户账号文件

/etc/passwd

保存用户账号的基本信息,每个用户记录一行,以:分割为7个字段

root x 0 0 root /root /bin/bash
用户名 密码占位符 UID GID 用户描述信息 家目录 解释器
  • 字段1:用户账号的名称
  • 字段2:密码字串或占位符x
  • 字段3:用户账号的UID号
  • 字段4:所属基本组的GID号
  • 字段5:用户全名
  • 字段6:宿主目录
  • 字段7:登录Shell程序的路径

添加用户账号

useradd添加用户

  • 格式:useradd [选项].... 用户名
  • 常用命令选项
    • -u:指定UID标记号
    • -d:指定宿主目录(家目录),缺省为/home/用户名
    • -G:指定所属组的附加组
    • -s:(shell:壳、解释器)指定用户的登陆解释器,用户→解释器→内核→硬件,(/sbin/nologin:禁止用户登录操作系统)

示例:

复制代码
#用不同的选项创建五个用户,对比他们之间的不同
[root@bogon ~]# useradd user1                    #普普通通的创建一个用户
[root@bogon ~]# useradd -u 1200 user2            #创建一个UID=1200的用户
[root@bogon ~]# useradd -d /opt/user3 user3      #创建一个家目录是/opt/user3的用户
[root@bogon ~]# groupadd test                    #创建一个组为test
[root@bogon ~]# useradd -G test user4            #创建一个附加组是test的用户
[root@bogon ~]# useradd -s /sbin/nologin user5   #创建一个登陆解释器是/sbin/nologin的用户
[root@bogon ~]# tail -5 /etc/passwd
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1200:1200::/home/user2:/bin/bash
user3:x:1201:1201::/opt/user3:/bin/bash
user4:x:1202:1203::/home/user4:/bin/bash
user5:x:1203:1204::/home/user5:/sbin/nologin
[root@bogon ~]# id user4                         #查看user4用户基本信息,验证user4的附加组
用户id=1202(user4) 组id=1203(user4) 组=1203(user4),1202(test)

usermod修改账户

  • 格式:usermod [选项]... 用户名
  • 常用命令选项
    • -l:更改用户账号的登录名称

    • -u:更改用户id

    • -d:更改用户家目录

    • -s:更改登录解释器

    • -G:更改附加组//其实是重置附加组,如果有多个附加组,那组名之间用","隔开

      #更改user5登录名称和UID
      [root@bogon ~]# usermod -l user05 -u 1300 user5

      #更改用户家目录和登录解释器
      [root@bogon ~]# usermod -d /opt/user5 -s /sbin/nologin user05

      #查看更改结果
      [root@bogon ~]# grep user05 /etc/passwd
      user05:x:1300:1204::/opt/user5:/sbin/nologin
      [root@bogon ~]# id user05
      用户id=1300(user05) 组id=1204(user5) 组=1204(user5)

      #更改,或者说是重置覆盖用户附加组
      [root@bogon ~]# usermod -G test user05
      [root@bogon ~]# id user05
      用户id=1300(user05) 组id=1204(user5) 组=1204(user5),1202(test)

passwd设置口令

  • 格式:passwd [选项].... 用户名

  • 常用命令选项
    *

    • -stdin:从标准输出(比如管道)取密码

    #需要注意的是,使用超级管理员root改密码和用户本身改密码有所不同,用户自己改密码的时候,新密码
    #的复杂度需要满足一定条件
    [root@bogon ~]# passwd user1
    更改用户 user1 的密码 。
    新的密码:
    无效的密码: 密码少于 8 个字符
    重新输入新的密码:
    passwd:所有的身份验证令牌已经成功更新。
    [root@bogon ~]# su - user1
    [user1@localhost ~]$ passwd
    更改用户 user1 的密码 。
    当前的密码:
    新的密码:
    重新输入新的密码:
    passwd:所有的身份验证令牌已经成功更新。

解析用户密码文件

/etc/shadow:保存密码字串/有效期等信息

每个用户记录一行,以":"分割为9个字段

和/etc/passwd相近

  • 字段1:用户账号的名称
  • 字段2:加密后的密码字符串(不同的用户相同的密码加密后的字符串也不相同哦)
  • 字段3:上次修改密码的时间(从1970年1月1日算起)
  • 字段4:密码的最短有效天数,默认0
  • 字段5:密码的最长有效天数,默认99999
  • 字段6:密码过期前的警告天数,默认提前七天进行警告
  • 字段7:密码过期后多少天禁用此账号
  • 字段8:账号失效时间,默认值是空
  • 字段9:保留字段(未使用)

非交互式设置密码

复制代码
[root@bogon ~]# echo 123 | passwd --stdin user1

设置用户密码期限

/etc/login.defs:设置用户默认属性信息

每新建一个用户,都会遵守login.defs文件要求

复制代码
[root@bogon ~]# vim /etc/login.defs
......
PASS_MAX_DAYS 99999    #密码最长使用的期限
......

#
UID_MIN      1000      #新建用户UID默认从1000开始
UID_MAX      60000     #用户UID默认最大值60000
......

用户初始配置文件

  • 主要的初始配置文件
    • ~/.bash_profile:每次登录系统时执行
    • ~/.bashrc:每次开启新的命令行终端时执行
  • 全局配置文件
    • /etc/bashrc:全局配置文件,影响全体用户(开启新的终端)
    • /etc/profile

用户的删与查

userdel删除用户

  • 格式:userdel [-r] 用户名

  • 选项:-r :连同家目录/用户邮件也一并删除

    [root@bogon ~]# userdel -r zhangsan
    [root@bogon ~]# ls /home
    [root@bogon ~]# userdel lisi
    [root@bogon ~]# ls /home #使用ls查看检验一下

使用id查询账号

  • 命令:id
  • 格式:id 用户名

组账号管理

组账号基本操作

解析组账号文件

/etc/group,保存组账号的基本信息

每个组记录一行,以":"分割为4个字段

  • 字段1:组账号的名称

  • 字段2:密码占位符x

  • 字段3:组账号的GID号

  • 字段4:本组的成员用户列表

    [root@bogon ~]# tail -5 /etc/group
    sshd:x:74:
    dnsmasq:x:981:
    tcpdump:x:72:
    zhangsan:x:1000:
    honey:x:1001:

honey x 1001
组账号名称 密码占位符 组账号GID 本组成员用户列表

/etc/gshadow,保存组账号的管理信息

每个组记录一行,以":"分割为4个字段

  • 字段1:组账号的名称

  • 字段2:加密后的密码字符串

  • 字段3:本组的管理员列表

  • 字段4:本组的成员用户列表

    [root@bogon ~]# tail -3 /etc/gshadow
    tcpdump:!::
    zhangsan:!::
    honey:!::

honey
组账号名称 加密密码字符串 管理员列表 成员列表

groupadd添加组账号

  • 命令:groupadd

  • 格式:groupadd [-g GID] 组名称

    [root@bogon ~]# groupadd test01
    [root@bogon ~]# tail -1 /etc/group #查看GID
    test01:x:1002:
    [root@bogon ~]# groupadd -g 1100 test02
    [root@bogon ~]# tail -2 /etc/group #查看GID,对比一下
    test01:x:1002:
    test02:x:1100:

gpasswd管理组成员

  • 命令:gpasswd
  • 格式:gpasswd [选项]... 组名
  • 常用选项:
    • -A:定义组管理员列表

    • -a:添加组成员每次只能添加一个

    • -d:删除组成员,每次只能删除一个

    • -M:定义组成员用户列表,可设置多个

      #创建用户user[1-4]来为下面的实验做准备
      [root@bogon ~]# useradd user01
      [root@bogon ~]# useradd user02
      [root@bogon ~]# useradd user03
      [root@bogon ~]# useradd user04

      #为组test01设置组管理员user01
      [root@bogon ~]# gpasswd -A user01 test01

      #查看组test01配置信息,检查组管理员是否设置成功
      [root@bogon ~]# grep test01 /etc/gshadow
      test01:!:user01:

      #使用选项-a将用户user02添加到组test01中
      [root@bogon ~]# gpasswd -a user02 test01
      正在将用户"user02"加入到"test01"组中

      #查看组test01配置信息,检查用户user02是否成功添加到组test01成员列表
      [root@bogon ~]# grep test01 /etc/gshadow
      test01:!:user01:user02

      #使用选项-A将用户user03和user04批量添加到组test01成员列表
      [root@bogon ~]# gpasswd -M user03,user04 test01

      #再次查看组test01配置信息,检查操作是否成功
      [root@bogon ~]# grep test01 /etc/gshadow
      test01:!:user01:user03,user04

在这个地方我们可以看到,使用选项-A时时,原本是组test01的组成员的user02在用户列表中消失了,并且用户user03和user04添加成功了

也就是说,使用-A选项时,会对组成员列表进行重新配置,而不是继续添加

复制代码
[root@bogon ~]# gpasswd -d user04 test01
正在将用户"user04"从"test01"组中删除
[root@bogon ~]# gpasswd -d user03  test01
正在将用户"user03"从"test01"组中删除
[root@bogon ~]# grep test01 /etc/gshadow
test01:!:user01:
复制代码
[root@bogon ~]# grep test01 /etc/gshadow
test01:!:user01:
[root@bogon ~]# gpasswd -A 'user01,user02' test01
[root@bogon ~]# grep test01 /etc/gshadow
test01:!:user01,user02:
[root@bogon ~]# gpasswd -A '' test01
[root@bogon ~]# grep test01 /etc/gshadow
test01:!::

对于组管理员的管理如上面所示

组的删除

groupdel组的删除

  • 命令:groupdel
  • 格式:groupdel 组名
  • 删除的目标组不可以是用户的基本组

关于组和用户的配置文件

  • /etc/passwd:用户基本信息
  • /etc/shadow:用户密码信息
  • /etc/group:组的基本信息
  • /etc/gshadow:组的管理信息

计划任务

周期性任务

cron任务概述

  • 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
  • 软件包:cronie、crontabs
  • 系统服务:crond
  • 日志文件:/var/log/cron

日志文件:

管理计划任务策划

  • 命令:crontab [选项]
  • 选项:
    • crontab -e [-u 用户名]:编辑
    • crontab -l [-u 用户名]:查看
    • crontab -r [-u 用户名]:清除

如何编写crontab任务记录

配置格式可以参考/etc/crontabwenjian

: 分 时 日 月 周 任务命令行(绝对路径)

  • *:匹配范围内任意时间
  • ,:分隔多个不连续的时间点
  • -:指定连续时间范围
  • /n:指定时间频率,没n.....