Linux 用户和组的管理

Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须通过用户的账号和密码进入系统。用户的账号可以帮助系统管理员对使用系统的用户进行追踪,并控制用户对系统资源的访问。

一、用户管理

1.用户分类

1.1 超级用户

超级用户,也叫管理员,root。该用户具有所有权限,UID=0 并且只能是0

1.2 系统用户

系统用户,也叫程序用户。一般有程序创建,用户程序或者服务运行时候的身份。默认不允许登录系统

  • Centos6:1<=UID<=499 Centos7:1<=UID<=999

1.3 普通用户

普通用户,一般由管理员创建,用于对系统进行有限的管理维护操作。默认可以登录系统

  • Centos6:500<=UID<=60000 Centos7:1000<=UID<=60000

2.用户的基本管理

2.1 创建新的用户:useradd

  • 语法:# useradd 选项 选项对应参数值 用户名
选项全称作用
-uuid指定用户uid
-ggid指定用户默认组(主组)
-Ggroups指定用户附加组,可多个
-dhome指定用户家目录,家目录的上级目录必须存在
eg: # useradd -d /home1/user01 user01 /home1/ 必须存在
-sshell指定用户默认 shell
常用:/bin/bash/sbin/nologin
eg: # useradd -s /sbin/nologin/ user01
  • 创建一个用户后,系统会给该用户以下东西:

    • UID(唯一标识)
    • GID(用户默认组),若未指定默认组,则会创建一个跟用户名一样名称的组
    • 用户的家目录,默认创将在 /home/用户名
    • 拷贝相关文件到用户家目录 /etc/skel/*
  • 用户信息保存在文件 /etc/passwd中,并以:分隔为7列,内容是:

    • account :用户名称
    • password:秘密,显示 X,并非真正的密码,真实密码存放在 /etc/shadow
    • UID:用户编号
    • GID:组编号
    • GECOS:描述信息
    • directory:用户家目录
    • shell:用户的默认shell
  • 用户的密码信息存储在 /etc/shadow中,并以 :分隔为9列,内容是:

    • login name:登录的用户名
    • encrypted password:加密后的密码(SHA512 散列加密算法),!!表示没有设置密码
    • date of last password change:最后一次修改密码的时间(天数)
    • minimum password age:密码最小修改时间间隔,0表示可以随时修改,3表示密码修改后3之内不允许再次修改
    • maximum password age:密码有效期,默认99999可认为是永久有效,10表示修改密码10后必须再次修改密码,通过这个字段可以强制用户定期修改密码
    • password warning period:密码过期前几天发出警告
    • password inactivity period:密码宽限期,比如说,该字段规定的宽限天数是 10,则表示密码过期 10 天后失效;如果是 0,则表示密码过期后立即失效;如果是 -1,则表示密码永远不会失效
    • account expiration date:账户失效时间,该字段表示,账号在此字段规定的时间之外,不论密码是否过期,都将无法使用!
    • reserved field:保留
用户家目录文件说明:
局部配置文件(针对某个特定用户以及用户的所有进程)
~/.bashrc
当前用户的bash信息,当用户登录和每次打开新的shell时该文件被读取
~/.bash_profile
当前用户的环境变量,当用户登录时,该文件被读取
~/.bash_history
保存当前用户历史命令的文件
~/.bash_logout
当用户退出bash或者终端时,会首先执行该文件里的代码,然后再退出

补充:
全局配置文件(针对所有用户所有进程)
/etc/profile
系统和用户的环境变量信息,当用户第一次登录时,该文件被读取
/etc/bashrc
每个运行的bash信息(系统别名、函数及默认权限的定义),当bash被打开时,该文件被读取

2.2 更改账号信息: chage

选项全称作用
-llist列出账户信息
-dlastday修改用户最后一次更改密码的时间,0表示下次登录修改密码
eg: # chage -d0 user01
-mmindays密码最小修改时间间隔
-Mmaxdays密码的有效期天数
-Wwarndays密码过期几天前发出警告
-Iinactive允许密码过期几天
-Eexpiredate修改账户过期时间
eg: # chage -E $(date -d '+20days' +%F) user03
eg: # chage -E '2020-01-01' user03

2.3用户密码设置:passwd

  • 语法:passwd 用户名
  • 非交互添加密码 : echo 123| passwd --stdin user01

2.4 修改用户信息: usermod

选项全称作用
-uuid指定用户uid
-ggid指定用户默认组
-Ggroups指定用户附加组
-dhome指定用户家目录,新的家目录必须全部存在
eg: # usermod -d /home2/user02 user02 /home2/user02/必须存在
需要手动拷贝相关配置文件:# cp -a /etc/skel/. /home2/user02
-md 不需要手动拷贝相关配置文件,但是上级目录必须存在
-sshell指定用户默认shell
eg: # usermod -s /bin/bash/ user01

2.5 删除用户信息:userdel

  • 语法:userdel 选项 用户名
选项全称作用
-rremove删除用户并且移除家目录和邮箱
-fforce强制删除用户,即使该用户正在登陆

二、组管理

组的目的是为了方便管理用户,一个用户可以有多个附加组,但是只能有一个主组

  • 文件创建成功后,该文件的属组就是创建者的主组

1.创建组:groupadd

语法: # groupad 选项 组名

选项全称作用
-ggid指定组的GID

组信息保存在文件 /etc/group中,以 分隔位4列,内容是:

  • group_name:组名
  • password:组密码,真实密码保存在 /etc/gshadow
  • GID:组编号
  • user_list:组中的用户(附加组成员

2.修改组信息:groupmod

选项全称作用
-ggid指定组的GID
-nnew name修改组名

3.删除组:groupdel

语法:# groupdel 组名

只能删除不是任何用户主组的群组

4.组成员管理:gpasswd

语法: # gpasswd 组名 要设置的密码

选项全称作用
-aadd添加单个用户
-Mmembers批量添加用户
eg: gpasswd -M user01,user02 sysadmin
注意:该命令会将之前该组中附加组成员删除
-ddelete移除用户
-Aadministrators指定管理员
-rremove删除组密码

三、其他

id

查看用户的UID、GID、附加组信息

su

切换用户

su 用户名su - 用户名 区别:

su 用户名只会切换身份, su -用户名会将工作环境也切换为此用户的环境

Last modification:October 4th, 2018 at 10:47 pm