第6章 Linux下的账号与权限管理

用户和组的相关文件 

用户的添加/删除/更改

组的添加/删除/更改

susudo

用户和组账号的概述

Linux基于用户身份对资源访问进行控制

用户帐号:

超级用户root

普通用户

程序用户(虚拟用户)

组帐号:

基本组(私有组)

附加组(公共组)

⚫ UIDGID

◆ UIDUser Identity,用户标识号)

◆ GIDGroup Identify,组标识号)

Linux下的用户角色

Linux系统下用户的角色不同,权限和所能完成的任务也不同,用户角色是通过UID 来识别的,注意:在Linux下要注意root用户的UID的唯一性。

⚫ Root

◆ 系统管理员超级用户,系统唯一,可以登陆系统,可以操作任何文件和命令,拥有最高权限,UID值为0。

⚫ 虚拟用户

◆ 与真实的用户分开来,这类用户不能登陆系统,但是在使用某些服务的时候使用,这类用户是系统默认添加的。

⚫ 普通用户

◆ 这类用户可以登陆系统,但是只能操作自己家目录的内容,受限账户,这类用户都是管理员自行添加的。

用户相关文件

用户账号文件

/etc /shadow

用户密码文件(影子文件)

/etc /login.defs

用户默认属性文件

/etc /skel /

用户环境目录

/etc/passwd文件 

用户账号信息文件,记录所有用户记录,每行表示一个用户信息,7个字段都有各自的

含义

字段1:用户帐号的名称

字段2:用户密码字串或者密码占位符“x”

字段3:用户帐号的UID

字段4:所属基本组帐号的GID

字段5:用户全名

字段6:宿主目录

字段7:登录Shell信息

/etc/shadow文件 

用户账户的影子文件,包含用户的加密密码和其他信息,两个文件互补来记录用户信息, 这个文件只有root可以读取和操作

⚫ 字段1:用户帐号的名称

⚫ 字段2:加密的密码字串信息

⚫ 字段3:上次修改密码的时间

⚫ 字段4:密码的最短有效天数,默认值为0

⚫ 字段5:密码的最长有效天数,默认值为99999

⚫ 字段6:提前多少天警告用户口令将过期,默认值为7

⚫ 字段7:在密码过期之后多少天禁用此用户

⚫ 字段8:帐号失效时间,默认值为空

⚫ 字段9:保留字段(未使用)

/etc/login.defs文件  

默认创建用户的属性设置

⚫ 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

⚫ USERGROUPS_ENAB 当删除用户后,同名组中不在存在用户的时候,是否删除该组

拓展:

查询有效配置

 

 

 

/etc/skel/目录

存放用户启动文件的目录,类似与windows的用户配置文件目录,为用户提供用户环 境,该目录下的文件全部为隐藏文件。在添加用户时会从该目录下复制文件到用户的 家目录下,相当与统一的登陆模板。

用户的添加 

添加默认用户并查看

⚫ useradd 用户名

⚫ passwd 用户名

[root@centos7 ~]# useradd jack

[root@centos7 ~]# passwd jack

更改用户 jack 的密码 。

新的 密码:

无效的密码: 密码是一个回文

重新输入新的 密码:

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

[root@centos7 ~]# tail -1 jack

tail: 无法打开"jack" 读取数据: 没有那个文件或目录

[root@centos7 ~]# tail -1 /etc/passwd

 jack:x:1000:1000::/home/jack:/bin/bash

[root@centos7 ~]# tail -1 /etc/shadow

jack:$6$789zHfo1$sysO38kTS1FMVMAKt5DFnI/Ph6CHdh8dMwez.e9ooBAJoMLlIcYFTP./C8f2EaZs0K1g2cEhRdG2KNs8RARUc.:18185:0:99999:7:::

用户的添加 

添加指定属性的用户并查看

⚫ useradd -d 用户主目录 用户名

⚫ passwd 用户名

[root@centos7 ~]# useradd -d /rose rose

[root@centos7 ~]# passwd rose

更改用户 rose 的密码 。

新的 密码:

无效的密码: 密码是一个回文

重新输入新的 密码:

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

[root@centos7 ~]# tail -1 /etc/passwd

rose:x:1001:1001::/rose:/bin/bash

例如:

指定宿主目录在根目录下

创建组并查看

创建用户

查看

home查看是否有宿主目录

主要参数:

-c:加上备注文字,备注文字保存在passwd的备注栏中。

-d:指定用户登入时的主目录,替换系统默认值/home/<用户名>

-D:变更预设值。

-e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。

-f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.

-g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users

-G:指定用户所属的附加群组。

-m:自动建立用户的登入目录。

-M:不要自动建立用户的登入目录。

-n:取消建立以用户名称为名的群组。

-r:建立系统账号。

-s:指定用户登入后所使用的shell。默认值为/bin/bash

-u:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499

设置/更改用户口令 

passwd命令

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

常用命令选项

⚫ -l:锁定用户帐号

⚫ -S:查看用户帐号的状态(是否被锁定)

⚫ -u:解锁用户帐号

例如

修改密码

锁定账户

解锁

修改用户账号的属性

usermod命令

⚫ 格式:usermod [选项]... 用户名 

常用命令选项

⚫ -l:更改用户帐号的登录名称

◆ usermod -l 新用户名 原用户名

⚫ -L:锁定用户账户

⚫ -U:解锁用户账户

例如:

锁定

解锁用户

Usermod更改用户名

先添加lisi

查看

 

 

 

宿主目录不变

拓展:

另一个用法

更改目录数组

先创建一个组

显示jack

查看jakc基本组

jack添加附加组tech

查看jack所属的组

还可以查看tech

删除用户帐号 

userdel命令

格式:userdel [-r] 用户名

添加 -r 选项时,表示连用户的宿主目录一并删除

删除rose用户

删除rose用户及其的宿主目录

使用 -r

组的相关文件

⚫ 组账号文件

 /etc/group

组密码文件

/etc/gshadow

添加组帐号 

groupadd命令

格式:groupadd 组帐号名

gpasswd命令

⚫ 用途:设置组帐号密码(极少用)、添加/删除组成员

格式:gpasswd [选项]... 组帐号名

常用命令选项

◆ -a:向组内添加一个用户

◆ -d:从组内删除一个用户成员

例如:

1

testgroup删除jack

gpasswd -d jack testgroup

(2)

jack添加到testgroup

检查

groupdel命令

格式:groupdel 组帐号名

例如:

删除组

groupdel testgroup

查看验证

grep testgroup

用户和组帐号查询 

id命令

⚫ 用途:查询用户身份标识

⚫ 格式:id [用户名] 

groups命令

⚫ 用途:查询用户所属的组

⚫ 格式:groups [用户名] 

finger命令

⚫ 用途:查询用户帐号的详细信息

⚫ 格式:finger [-l] [用户名]

例如:

finger jack

users、who命令

⚫ 用途:查询已登录到主机的用户信息

普通用户权限的提升 

sudo 命令 选项 普通用户使用特权用户命令

注意:命令为绝对路径

⚫visudo 添加一行

root ALL=(ALL) ALL

jack ALL=(ALL) /usr/sbin/fdisk

◆ sudo 命令

[jack@centos7 ~]$ which fdisk /usr/sbin/fdisk

[jack@centos7 ~]$ sudo /usr/sbin/fdisk -l

磁盘 /dev/sda21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节 ……

[jack@centos7 ~]$ sudo –l //查看授权的指令

拓展:

切换用户的命令

Su 切换

Su jack

另一种方式

Su - jack

例如:

在root:

Which fdisk

Visudo:

root ALL=(ALL) ALL

用户名 ALL=(ALL)  /usr/sbin/fdisk

sudo+授权命令

jack:

Su -jack

Sudo -l

Sudo fdisk -l