Linux之用户组管理

用户/组管理

相关目录,用ls查看文件列表

root用户的家目录(即主目录) /root
普通用户家目录的主目录 /home
配置文件的目录 /etc
存放用户环境变量的公共模板文件夹 ls -a /etc/skel
用户和组的相关文件,可以用cat、nl、head、tail、grep命令查看
组账号文件 /etc/group
用户账号数据库文件 /etc/passwd
用户密码文件(影子文件) /etc/shadow
用户和组的策略文件 /etc/login.defs
用户和组管理的命令
查看用户id信息 id [用户名]
创建组 groupadd 组名 命令操作会影响到/etc/group文件的内容
删除组 groupdel 组名
组的成员管理 gpasswd [-a|-d] 用户名 组名
创建用户 useradd [选项] 用户名 操作会影响到/etc/passwd文件的内容
设置登录密码 passwd [选项] [用户名]
临时切换用户 su - 用户名
退出登录 exit
删除用户 userdel [-r] 用户名 操作会影响到/etc/passwd文件的内容
用户的锁定/解锁 usermod [-L|-U] 用户名
修改密码的有效期 chage [选项] 用户名 操作会影响到/etc/shadow文件的内容

账户信息的UID、GID规则:

温馨提示:以下信息可通过cat /etc/login.defs来查询

特点 root用户 普通用户或组 保留ID范围 SYS系统服务账户
账户UID标准 0 1000~60000 1~200 201~999
组账号GID标准 0 1000~60000 1~200 201~999
登录 允许 允许(但可控制) 不允许 不允许
命令提示 # $

用户管理

groupadd,groupdel

useradd,usermod,userdel

passwd,chage

一、用户/组基本概念

Users and groups:

. Every process (running program) on the system runs as a particular user.

. Every file is owned by a particular user.

. Access to files and directories are restricted by user.

. The user associated with a running process determines the files and directories accessible to that

process.

. 系统中每一个运行的进程都需要一个特别的用户

. 每一个文件都有一个特别的拥有者

. 设置文件的访问权限需要针对于用户来设置

. 进程所关联的用户将决定它对文件的访问权限

查看当前登录的用户信息:

[root@xiaochen ~]# id

uid=0(root) gid=0(root) groups=0(root)

查看文件的owner:

[root@xiaochen ~]# ll /home/

drwx------. 4 alice alice 4096 Jun 2 15:59 alice

drwx------. 2 root root 16384 Jun 1 23:09 lost+found

drwxr-xr-x 2 root root 4096 Jun 2 15:33 xiaochen

查看运行进程的用户:

[root@xiaochen ~]# ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 19356 1536 ? Ss 03:53 0:00 /sbin/init

root 2 0.0 0.0 0 0 ? S 03:53 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S 03:53 0:00 [migration/0]

和用户组相关的一些文件:

[root@xiaochen ~]# man 5 passwd

[root@xiaochen ~]# man 5 shadow

[root@xiaochen ~]# man 5 group

[root@xiaochen ~]# man 3 crypt

用户数据文件

/etc/passwd

root x:0:0:root:/root:/bin/bash

第一段:用户名

第二段:密码占位符

第三段:uid

第四段:gid

第五段:描述

第六段:家目录

第七段:用户shell类型

用户密码文件

/etc/shadow root:1MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:: :

第一列:用户名

第二列:密码位 (有密码 无密码 !帐号锁定 !!密码锁定 *该用户永久不能登录系统)

idsalt$encrypted

加密算法$id:

$1: MD5

$5: SHA-256

$6: SHA-512

注释:加密算法就是用明文的密码和一个叫做salt的函数通过crypt()函数完成加密的,salt由a-z A-Z

0-9 . / 组成,用来决定使用4096种不同内建表格的哪一种

第三列:最后一次修改密码时间

第四列:密码最短有效天数(即密码至少使用的天数,0无限制) -n

第五列:密码最长有效天数(99999 永久生效) -x

第六列:密码过期前警告时间(默认是7天,在这期间可使用就旧密码) -w

第七列:密码过期后的宽限时间(密码过期后预留给账户修改密码的时间) -i

第八列:帐号失效期

第九列:保留列

/etc/group root 0:

第一列:组名

第二列:组密码占位符

第三列:gid

第四列:[用户列表]

系统约定: RHEL7

uid: 0 特权用户

uid: 1~999 系统用户

uid: 1000~60000 普通用户

The root user

. uid is 0

UID是0

. all power

所有权力

. This user has the power to override normal privileges on the file system

该用户有权力覆盖文件系统上的普通权限

. installing or removing software and to manage system files and directorie

安装或删除软件并管理系统文件和目录

. Most devices can only be controlled by root

大多数设备只能由root控制

用户组和策略文件

/etc/login.defs

查看login.defs文件内容:nl /etc/login.defs

查看login.defs中不包含#号开头和空白行的内容,并显示行号:grep -v “^#” /etc/login.defs |grep -v “^$”|nl

说明:grep -v 表示反向匹配(即不包含指定的关键字),#表示以#号开头,$表示空白行。

二、用户/组管理

用户组:

[root@xiaochen ~]# groupadd hr

[root@xiaochen ~]# groupadd sale

[root@xiaochen ~]# groupadd it

[root@xiaochen ~]# groupadd fd

[root@xiaochen ~]# groupadd net01 -g 2000 //添加组net01,并指定gid 2000

[root@xiaochen ~]# grep ‘net01’ /etc/group //查看/etc/group中组net01信息

[root@xiaochen ~]# groupdel net01 //删除组net01

用户:

useradd creates users

==创建用户 未指定选项==

[root@xiaochen ~]# useradd user01

. 未指定该用户的主组

. 未指定该用户的附加组

. 未指定用户的HOME

. 未指定用户的SHELL

. 未指定用户的UID…

[root@xiaochen ~]# grep ‘user01’ /etc/passwd /etc/shadow /etc/group

/etc/passwd:user01: x:507:512::/home/user01:/bin/bash

/etc/shadow:user01:!!:16589:0:99999:7:::

/etc/group:user01:x512:

[root@xiaochen ~]# id user01

uid=507(user01) gid=512(user01) groups=512(user01)

[root@www ~]# ls /home/

user01

[root@www ~]# ls /var/spool/mail/

user01

小结:

如果创建一个用户时,未指定任何选项,系统在/home生成和用户同名的文件夹作为用户的家目

录,没有指定shell的时候,默认是登陆shell,没有指定uid的时候默认分配一个uid,且分配的uid值时

passwd文件中最大的一个普通用户占用的uid值的下一个数字,会自动生成和用户名相同的组作为用户的

Primary Group和附加组,且一般情况下gid的值和uid的值相同,除非相同的这个gid值被其他的组占用了,

他会自动的向下查找,直到找到一个没有被占用的gid作为当前主组的gid。

==删除用户==

userdel deletes users

[root@xiaochen ~]# userdel user10 //删除用户user10,但不删除用户

家目录和mail spool

[root@xiaochen ~]# ll -d /home/user10/

drwx------ 3 506 510 4096 09-01 21:14 /home/user10/

[root@xiaochen ~]# ll /var/spool/mail/user10

-rw-rw---- 1 506 mail 0 09-01 21:14 /var/spool/mail/user10

[root@xiaochen ~]# userdel -r user2 //删除用户user2,同时删除用户家目录和

mail spool

==创建用户 指定选项==

[root@xiaochen ~]# useradd user02 -u 503 //创建用户usr02,指定uid

[root@xiaochen ~]# useradd user03 -d /aaa //创建用户user03 指定家目录

[root@xiaochen ~]# useradd user05 -s /sbin/nologin //创建用户并指定shell

[root@xiaochen ~]# useradd user04 -g hr //创建用户并指定主组

[root@xiaochen ~]# useradd user07 -G hr,it,fd //创建用户,指定附加组

[root@xiaochen ~]# useradd user10 -u 4000 -s /sbin/nologin

[root@xiaochen ~]# useradd user04 -M //创建用户user04,不创建家目录

[root@xiaochen ~]# useradd -o -u 0 admin //创建相同uid的帐号

==用户密码==

[root@xiaochen ~]# passwd alice

[alice@xiaochen ~]$ passwd

更改用户 alice 的密码 。

为 alice 更改 STRESS 密码。

(当前)UNIX 密码: //输入的是alice刚刚设置过的密码

新的 密码: //输入的是alice新的密码,不可以是简单的数字,也不可以是基于字

典的单词

passwd: 所有的身份验证令牌已经成功更新。

修改密码信息

passwd -l jim 锁定密码

passwd -u jim 解锁密码

passwd -S robin 查看密码状态

passwd -d user01 删除已命名帐号的密码(只有根用户才能进行此操作)

passwd -e alice 等价于 chage -d 0 alice 强制用户在下一次登录时修改密码

passwd -n robin 等价于 chage -m robin 设置密码的最短有效时限

passwd -x robin 等价于 chage -M robin 设置密码的最长有效时限

passwd -w rboin 等价于 chage -W robin 在密码过期前多少天开始提醒用户

passwd -i robin 等价于 chage -I robin 当密码过期后经过多少天该帐号会被禁用

chage -l alice 查看用户密码信息

==组成员管理==

注意:gpasswd将用户添加到组或从组中删除,只针对已存在的用户

[root@xiaochen ~]# gpasswd -M user01,user02 it //将某些成员添加到某个组

[root@xiaochen ~]# gpasswd -a user07 it //将某个用户加入到某个组

[root@xiaochen ~]# gpasswd -d user07 it //删除用户usr07从it组

修改用户的信息 usermod

usermod modifies existing users

==修改UID,SHELL==

[root@xiaochen ~]# usermod --help

[root@xiaochen ~]# useradd user10

[root@xiaochen ~]# grep ‘user10’ /etc/passwd

user10:x509:509::/home/user10:/bin/bash

[root@xiaochen ~]# usermod -u 2000 user10 //修改用户uid

[root@xiaochen ~]# usermod -s /sbin/nologin user10 //修改用户shell

[root@xiaochen ~]# usermod -G hr,it,fd user10 //直接覆盖用户原有附加组

[root@xiaochen ~]# usermod -a -G yw,kf user10 //在原有基础上添加附加组

==帐号锁定,解锁==

[root@station80 ~]# useradd user1000

[root@station80 ~]# passwd user1000

[root@station80 ~]# grep ‘user1000’ /etc/shadow

user1000:1Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::

[root@station80 ~]# usermod -L user1000

[root@station80 ~]# grep ‘user1000’ /etc/shadow

user1000:!1Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::

登录测试,帐号锁定之后,普通用户登录不上

[root@station80 ~]# usermod -U user1000

[root@station80 ~]# grep ‘user1000’ /etc/shadow

user1000:1Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::

登录测试

==设置账号过期==

[root@station80 ~]# date

2013年 03月 11日 星期一 15:36:19 CST

[root@station80 ~]# usermod -e 2012-12-11 user1000

[root@station80 ~]# grep ‘user1000’ /etc/shadow

user1000:1Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7::16415:

登录测试

[jyj@xiaochen ~]$ su - user1000

Password:

Your account has expired; please contact your system administrator

su: incorrect password

常用的管理命令

id

选项 功能 实例
–help 显示此帮助信息并退出 id --help
–version 显示版本信息并退出 id --version
-u 仅显示有效用户ID id -u adm
-g 仅显示有效的用户组ID id -g root
-G 显示所有组的ID(包括主组和附属组) id -G lp
-r 显示真实ID 而非有效ID,与-ugG 一起使用 id -r -u root
-Z 仅显示当前用户的Selinux安全环境 id -Z
-n 显示组名称而非数字,不与-ugG 一起使用 id -n -u root
-a 忽略,仅为与其他版本相兼容而设计 id -a

useradd

选项 功能 实例
-h 即–help,显示此命令的帮助信息 useradd -h
-b 为新用户指定家目录的主目录 useradd -D -b /home
-D 显示或修改创建新用户的默认配置 useradd -D
-c 为新建的用户设置备注(context)信息 useradd lily -c “my girl friend”
-d 给新用户指定家目录(directory) useradd sky -d /opt/sky
-e 指定账号的过期日期(有效期限) useradd u1 -e 2018-10-01
-f 新账户的密码不活动期(即宽限天数) useradd u2 -f 20
-u 用户uid号 useradd u3 -u 888
-U 创建与用户同名的组 useradd u4 -U
-g 主组,必须是已存在的组 useradd u5 -g 0
-G 附属组 useradd u6 -G root,adm,lp
-m 创建家目录 useradd u7 -m
-M 不创建家目录 useradd -M u8
-N 不创建与用户同名的组 useradd -N u9
-r 创建系统账号 useradd -r u10
-s 指定用户登录的shell,常见的shell有bash、sh、nologin、false等。 用cat /etc/shells可查。 useradd -s /sbin/nologin u11
-o --non-unique,允许使用不唯一的UID号 useradd -o -u 0 u12
-p 创建用户时指定加密后的密码。(此密码无法登录) useradd -p 01 u13
-Z 指定selinux安全参数

userdel

选项 功能 实例
-h 即–help,显示此命令的帮助信息 userdel -h
-r 删除用户的家目录和邮件 userdel -r u100
-f 即–force,强制删除用户的文件 userdel -f u111
-Z 即–selinux-user,删除用户的selinux映射信息

passwd

选项 功能 实例
-? 即–help,显示此命令的帮助信息 passwd -?
-S 显示已命名帐号的密码状态(只有root能查) passwd -S root
-k 保持(keep)身份验证令牌不过期 passwd -k root
-d 删除已命名帐号的密码(只有root能做) passwd -d u15
-l 即–lock,锁定用户账号(只有root能做) passwd -l adm
-u 即–unlock,解锁用户账号(只有root能做) passwd -u adm
-e 终止指定帐户的密码expire(只有root能做) passwd -e adm
-f 即–force,强制执行操作(只有root能做)
-x 即–maximum,密码的最长有效时限(只有root能做) passwd -x 120 adm
-n 即–minimum,密码的最短有效时限(只有root能做) passwd -n 60 adm
-w 即–warning,密码过期前的警告时间(只有root能做) passwd -w 12 adm
-i 即–inactive,密码过期多少天后禁用账号(只有root能做) passwd -i 3 adm
–stdin 从标准输入读取密码令牌(只有root能做) echo 01 | passwd --stdin adm
–usage 显示此命令能使用方法(命令的帮助信息) passwd --usage

usermod

选项 功能 实例
-h 即–help,显示此命令的帮助信息 usermod -h
-c 即–comment,修改用户的描述信息 usermod root -c “admin user”
-d 修改用户的家目录。(新家目录提前准备好) usermod u19 -md /opt/u19 (搬家)
-e 即–expiredate,修改账号过期的日期 usermod adm -e 2019-05-20
-f 即–inactive,修改密码过期后的宽限时间 usermod adm -f 8
-g 修改用户的gid值。 usermod u19 -g 5
-G 给用户设置新的附属组 usermod adm -G root,lp,bin
-a 将一个用户追加到指定的组中 usermod adm -a root
-l 修改用户的登录名称(即修改用户名) usermod u20 -l u200
-L 锁定用户[锁定后,shadow中的密码左侧有!号] usermod adm -L
-U 解锁用户 usermod adm -U
-m 给用户搬家。
-o 允许使用不唯一的UID号 usermod u19 -o -u 0
-p 修改加密后的密码(不是登录密码) usermod adm -p 01
-s 修改用户登录的shell usermod u19 -s /sbin/nologin
-u 修改用户的uid值 usermod u19 -u 999
-Z 修改用户的selinux参数

groupadd

选项 功能 实例
-h 即–help,显示此命令的帮助信息 groupadd -h
-g 创建组时指定组的gid号 groupadd -g 520 g1
-o 允许创建不唯一的gid的组 groupadd -o -g 0 g2
-p 即–passwd,指定组管理员加密后的密码 groupadd -p 01 g3
-r 即–system,创建一个系统组,组号范围是201~999 groupadd -r g4
-k 覆盖/etc/login.defs中的默认值
-f 即–force,如果指定的gid存在,也会强制创建组 groupadd -f -g 123 g5

groupmod

选项 功能 实例
-h 即–help,显示此命令的帮助信息 groupmod -h
-g 修改组的gid号 groupmod -g 300 g7
-n 即–new-name,修改组名 groupmod -n g70 g7
-o 允许使用不唯一的gid号(即允许用相同的组号) groupmod -o -g 0 g9
-p 即–password,修改组加密后的密码 groupmod -p 01 g9

gpasswd

选项 功能 实例
-a 即–add,在组中添加一个用户 gpasswd adm -a root
-d 即–delete,从组中删除一个用户 gpasswd adm -d root
-r 即–remove-password,删除组管理的密码 gpasswd -r adm
-R 即–restrict,restrict access to GROUP to its members
-M 即–members,重新设置组的成员列表 gpasswd adm -M root,bin,lp
-A 即–administrators,给组重新设置多个组长(即组管理员) gpasswd adm -A root

groups

查看用户的组信息:groups [选项] 用户名

实例:查看当前用户的组信息,查看root、adm、games、lp用户的组信息。

你可能感兴趣的:(Linux)