用户、组和权限及相关命令

本文主要介绍Linux用户管理的一些基础概念和一些基础命令的用法。内容分为三个部分:1、用户和组相关介绍;2、用户管理命令;3、组管理命令

第一部分:用户和组相关介绍

1、用户和组类型

linux系统,用户的类型分为两大类:

  • <1>管理员用户:具有对Linux系统运行一些管理权限,系统上,初始的管理员用户默认为root,UID为0。(UID为0则代表是管理员,不论用户名是否为root)
  • <2>普通用户:普通用户有分为系统用户和普通登录用户

系统用户:用来Linux系统上运行一些软件和服务的用户,大部分都是非交互式(shell程序为/sbin/nologin)的,UID范围:1-499(centOS 6);1-999(centOS 7)

普通用户:在系统上进行交互式的登录完成某些操作的用户,UID:500+(centOS 6);在1000+(centOS 7)

Linux系统上,对应的组也分为两大类:

  • <1>管理员组:具有管理员权限的用户所在的组,GID(组的身份标识)为0,默认是root组
  • <2>普通组:分为系统组和普通组

系统组:1-499(centOS 6);1-999(centOS 7)

普通组:500+(centOS 6);1000+(centOS 7)

 

Linux系统上用户和组的对应关系:

  • 主组:每个用户必须要有且仅有一个主组,在创建用户时默认是与用户名同名
  • 私有组:组名同用户名,且组内仅有一个用户的组
  • 附加组:一个用户可以有零个或多个附加组

2、用户和组管理涉及到的一些配置文件

配置文件目录:

  • ①/etc/passwd 用户及其属性信息
  • ②/etc/shadow 用户密码及其相关属性
  • ③/etc/group 组及其属性信息
  • ④/etc/gshadow 组密码及其相关属性
  • ⑤/etc/default/useradd 新增用户模板
  • ⑥/etc/skel/* 新增用户家目录模板
  • ⑦/etc/login.defs 关于用户口令及组口令组成解释及默认设置

配置文件格式内容详细解释(内容较长,不喜可跳过)

①/etc/passwd 用户及其属性信息

该配置文件里面主要是记录用户信息,每一行代表一个用户的信息,每一行分为7个字段,分别表示:用户名:密码占位符:UID:GID:注释信息:家目录:默认shell

如下图所示:

passwd格式

 

②/etc/shadow 用户密码及其相关属性

该配置文件主要定义了用户密码相关的配置,每一行代表一个用户的信息,每行有9个字段,分别表示:

用户名:加密后的密码:上次修改密码的日期:最小使用期:最长使用期:警告期:宽限期限:账户有效期;保留字段

加密的密码:分为三个$分隔,第一个后面是加密算法;第二个后面是salt;第三个才是加密后的密码,CentOS6和CentOS上默认采取sha512单向加密算法进行加密

修改加密方式 authconfig –passalgo=sha256 –update

最近一次改密码的时期:如果值为0,则表示用户下次登录必须要更改密码。(从1970-01-01算起)

最小使用期:密码最短要使用多久(0表示随时可被变更)

最长使用期:密码最长要使用多久(99999表示永不过期)

警告期在最长使用期到期之前,提前多少天提示用户(默认一周)

宽限期限:最大使用期限到期后宽限多少天

账户有效期:账号本身的有效期,(从1970-1-1算起)

保留字段

如下图所示:

shadow格式

③/etc/group 组及其属性信息

分为4个字段: 组名:密码占位符:GID:用户列表(分隔符为逗号)

如下图所示:

group格式

④/etc/gshadow 组密码及其相关属性

每行有4个字段:组名:加密后的密码(感叹号加锁):组管理员用户的账户:用户列表(分隔符为逗号)

如下图所示:

gshadow格式

 

⑤/etc/default/useradd 新增用户模板

如下图所示:

1

 

GROUP:表示当用户创建利用-N选项不创建主组时,默认以哪个组作为主组

HOME:表示创建用户时的家目录位置

INACTIVE:表示非活动期限,也就是密码达到最大有效期后,用户的在这短时间内登录仍然能够修改密码,改密后正常使用

EXPIRE:表示账号有效期

SHELL:创建用户时用户的默认shell

SKEL:定义用户家目录相关配置文件和环境变量文件的拷贝模板目录

CREATE_MAIL_SPOOL:表示是否在创建用户时为其创建邮箱

⑥/etc/skel/* 新增用户家目录模板目录(都是隐藏文件)

如下图所示:

2

⑦/etc/login.defs 关于用户口令及组口令组成解释及默认设置

如下图所示:

3

4

 

MAIL_DIR:用户邮件的目录

PASS_MAX_DAYS:密码最大有效期

PASS_MIN_DAYS:密码最小有效期

PASS_MIN_LEN:密码最短长度

PASS_WARN_AGE:密码警告期

UID_MIN:默认最小UID

UID_MAX:默认最大UID

GID_MIN:默认最小GID

GID_MAX:默认最大GID

CREATE_HOME:是否为用户自动创建家目录

UMASK:创建用户默认的UMASK值

第二部分:用户管理命令

用户管理命令目录:

① useradd ② usermod ③ userdel ④ id ⑤ su ⑥ passwd ⑦ chage ⑧ 其他相关命令 ⑨批量创建用户及批量修改用户口令

命令详解:

  • ① useradd 创建用户
  • 语法:useradd [OPTIONS] USERNAME 创建用户
  • useradd -D 显示新增用户家目录
  • useradd -D [OPTIONS] 更改新增用户模板默认设置
  • 选项:

-u UID 指定UID

-o 不检查UID的唯一性,可用来指定已存在的UID为自己的UID

-g GROUP NAME 指定主组

-G GROUP NAME1,GROUP NAME2,… 指定附加组

-c “DISCIPTION” 指定注释信息

-d 指定家目录(给定的目录要事先不存在)

-N 表示不创建以自己的名称命名的主组,而是以默认的user组作为自己的主组

-r 表示创建系统用户,系统账号的家目录、邮箱目录都不会自动生成

-s SHELL 指定用户SHELL类型

-M 不创建家目录

useradd -D 显示或更改创建用户时的默认配置,同cat /etc/default/useradd

useradd -D -s SHELL 改变/etc/default/useradd文件里面默认shell的内容

useradd -D -b /DIR 改变/etc/default/useradd文件里面默认家目录的内容

  • ② usermod 用户属性修改
  • 语法:usermod [OPTIONS] USERNAME
  • 选项:

-u UID 指定新UID

-g GID NAME 指定主组(组必须存在)

-G GROUP1,GROUP2,… NAME 指定附加组(覆盖原有的附加组,若要追加配合-a选项)

-s SHELL 指定新的SHELL

-c ‘DISCRIPTION’ 指定新的注释信息

-d /PATH/DIR 指定新的家目录(新家目录中不会自动创建,原家目录中的文件不会同时移动至新的家目录,如果要创建新家目录的时候移动原家目录的数据,要同时使用-m选项)

-l USERNAME 指定新的用户名

-U 解锁用户 (即:去掉密码前的!)

-L 锁定用户 (相当于在/etc/shadow密码前加!)

-e YYYY-mm-dd 指明用户账号的过期日期

-f DAYS 指定账户密码的宽限期限

  • ③ userdel 删除用户
  • 语法:userdel [OPTIONS]… NAME,默认删除用户不会删除用户的家目录和邮箱
  • 选项: -r 删除用户的同时删除家目录和邮箱
  • ④ id 查看用户相关ID信息
  • 语法:id [OPTION]… [USERNAME]
  • 选项:

-u 显示用户UID

-g 显示主组GID

-G 显示所属的全部组ID

-n 显示名称,而非ID (需配合-u -g -G使用)

  • ⑤ su 切换用户或以其他用户身份执行命令

登录式切换:会重新读取用户的配置文件,切换至家目录,完全切换。

格式:su – NAME

su -l NAME

非登录式切换:不会读取目标用户的配置文件,且不改变当前工作目录

格式:su NAME

注意:管理员可以无密码切换至其他任何用户,非管理员在切换用户时都需要给出目标用户的密码

特殊用法:su –root -c ‘COMMAND’ 表示不切换用户,而是仅以此用户身份运行指定的命令,命令执行完成后即恢复原用户(例:su –root -c ‘cat /etc/shadow’ 表示暂时用root身份查看一下文件)

  • ⑥ passwd 设置密码
  • 格式:passwd [OPTIONS] NAME 修改指定用户的密码

passwd后不跟任何选项,表示修改自己的密码

passwd 用户名:用于root用户修改其他用户的密码,不需要知道该用户之前的密码

  • 选项:

-l,-u 锁定和解锁用户,相当于在/etc/shadow密码字段前加!和去掉!

-d 删除指定用户密码

-e DATE 过期期限,日期

-i DAYS 宽限期限

-n DAYS 密码最短使用期限

-x DAYS 密码最长使用期限

-w DAYS 密码警告期

-f 强制操作

对应是修改/etc/shadow里面相应的信息

–stdin 密码来源重定向,从标准输入接受用户密码

例:echo “123456” |passwd –stdin NAME 为NAME用户修改密码为123456

  • ⑦ chage
  • 格式:chage [OPTION] NAME
  • 选项:

-d 修改用户密码最后的修改日期

-E 修改用户密码的过期期限

-W 修改用户密码的警告期限

-m 修改用户密码的最短有效期

-M 修改用户密码的最长有效期

-I 修改用户密码失效后的宽限期

-l NAME 显示用户口令详情

示例:chage -d 0 tom 下一次登陆强制重设密码

chage -m 0 -M 42 -W 14 tom

chage -E 2019-09-28 tom

  • ⑧ 其他相关命令

groups [username] 查看当前用户属于哪些组

getent passwd [username] 相当于cat /etc/passwd中指定用户名的行

getent shadow [username] 相当于cat /etc/shadow中指定用户名的行

getent group NAME 相当于cat /etc/group中指定用户名的行

getent gshadow NAME相当于cat /etc/gshadow中指定用户名的行

  • ⑨批量创建用户及批量修改用户口令

nano userlist.txt 编辑要创建的新用户列表(格式要正确,如tom:x:1001:1001:tom:/home/tom:/bin/bash)

newusers userlist.txt 批量创建用户

nano pass.txt 编辑对应的用户口令(格式如: tom:tompasswd)

cat pass.txt | chpasswd 批量修改对应用户口令

 

第三部分:组管理命令

组管理命令目录:

① groupadd ② groupmod ③ groupdel ④ gpasswd ⑤ groupmems ⑥ groups

命令详解:

① groupadd 创建组

语法格式:groupadd [OPTION] group_name

常用选项:

-g GID 指定GID

-r 创建系统组

② groupmod 修改和删除组

语法格式:groupmod [选项] group_name

常用选项:

-g GID 修改GID

-n newname 修改组名

③ groupdel 删除组

语法格式:groupdel [OPTION] group_name (一般不用加选项,不能删除组内有用户的组)

④ gpasswd 更改组密码

格式:gpasswd [OPTION] GROUP

选项 :

-a NAME 向组中添加用户

-d NAME 删除组中用户

-A user1,user2,…设置有管理权限的用户列表

⑤ groupmems 更改和查看组成员

groupmems -l -g GROUP_NAME 显示组内有哪些用户

groupmems -a USERNAME -g GROUP_NAME 向组内添加用户

groupmems -d USERNAME -g GROUP_NAME 删除组内的用户

groupmems -p -g GROUP_NAME 清空组内的所有用户

⑥ groups

groups [OPTIONS] USERNAME 查看用户属于哪些组

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:/95403

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达招商  万达娱乐开户  华宇招商  万达娱乐直属  万达注册  万达娱乐直属QQ  万达招商  万达主管QQ  万达直属  万达注册