前言
每个用户在登陆的时候都会认证 不同用户具有不问的权限,毎个用户在权限允许的范围内完成不间的任务,Linux 正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。 验证用户的身份与可使用的网络服务被称为3A认证。
账户的种类:
- 如超级管理员:
- 如何按要求添加用户(组)
- 如何改密码
- 如何对已有用户(组)修改基本信息
- 用户权限
用户的种类:
- 超级管理员: 拥有最高权限的账户(默认叫做root)可以正常登录 人可以使用
- 普通用户: 权限受限的用户 可以正常登录 人可以使用
- 程序用户: 不可以正常登录,只给程序使用,人不能用
w命令看到当前登录的用户
[root@localhost data]#w
| 14:49:56 up | 5:05 2users | load average:0.00, 0.01, 0.05 |
|---|---|---|
| 启动时间 | 当前有两个用户登录 | cpu使用情况 |
| USER | TTY | FROM | LOGIN@ | IDLE JCPU PCPU | WHAT |
|---|---|---|---|---|---|
| 用户 | 登录方式 | 从哪里登录 | 登录时间 | 进程 | 当前运行的进程 |
| root | pst/0 | 192.1687.213.1 | 09:37 | 2:29m 0.13s 0.13s | -bash |
组的种类
- 基本组: 一个用户一定要有一个基本组 ,且只有一个
- 附加组: 一个用户可以没有附加组,一个用户可以有多个附加组
如何区分基本组和附加组?
用户排在第一个的组是基本组,后面的都是附加组
- uid :系统用来识别用户的唯一身份标识 整数(0-60000)
- gid: 系统用来识别组的唯一身份标识 整数
- 超级用户:(root), uid,gid=0,超级用户是系统管理员,具备系统最高权限
- 程序用户 :每个程序在创建时会自动创建一个程序用户,uid, gid =1-999,一般这个用户只在维护这个程序时才会被使用,一般也是不允许此用户使用账户密码登录到系统中去。
- 普通用户 :(系统账户,命令创建) uid,gid =1000+
修改uid 的范围(补充) [root@localhost data]#vim /etc/login.defs
存放位置
- 存放用户信息
/etc/passwd 存放用户信息
root:(账号名称):x(:账号密码):0(:账号UID):0(:账号GID):root(:用户说明):/root(:用户家目录):/bin/bash(:shell解析)
每个字段用冒号隔开
ky22:x:1003:1003:nginx:/home/ky22:/sbin/nologin
| ky22 | x | 1003 | 1003 | nginx | /home/ky22 | /sbin/nologin |
|---|---|---|---|---|---|---|
| 用户名 | 密码占位符 | uid | 组id | 备注信息 | 家目录位置 | 默认shell程序 |
- 存放密码信息
/etc/shadow 存放密码信息
每个字段用冒号隔开
gxl:3/O6NuAjdnApLp2F.V1n.::0:99999:7:::
| 第一字段 | 第二字段 | 第三字段 | 第四字段 | 第五字段 | 第六字段 | 第七字段 | 第八字段 | 第九字段 |
|---|---|---|---|---|---|---|---|---|
| gxl | $6~1n | 0 | 99999 | 7 | ||||
| 用户名 | 加密后的密码 | 上一次修改密码时间 | 最小修改密码间隔时间 | 密码有效期 | 密码到期提醒时间 | 密码过期后的宽限天数 | 用户失效时间 | 保留字段 |
gxl:3/O6NuAjdnApLp2F.V1n.::0:99999:7:::
- 第一字段:用户名
- 第二字段:加密后的密码 如果为 * !! 无法登录
- 第三字段:上一次修改密码时间,数字的含义为 从1970-1-1 到改密码的时间 一共经历多少天
- 第四字段:最小修改密码间隔时间 如果是0 可以随意修改, 7代表7 天后才可以修改
- 第五字段: 密码有效期 默认99999天 273年,设置为 7 代表7天要求你重新设置密码
- 第六字段:密码到期提醒时间 设置为7 代表密码到期前7天会提示你
- 第七字段:密码过期后的宽限天数 设置为10 表示密码到期后还可以使用10天
- 第八字段:用户失效时间 同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间 到期后无法登录
- 第九字段:保留字段
添加用户
useradd 添加用户
通式: useradd [选项].... 用户名
当建立用户时不加选项
- 会按顺序使用uid号
- 会建立一个 和用户名同名的基本组
- 按顺序使用gid
- 会在/home 建立一个和用户名同名的家目录
- 会将用户信息保存在 /etc/passwd 文件中
建立用户的时候加选项含义
- -u 指定uid
- -g 指定基本组(组名和gid都可以)
- -G 指定附加组(组名和gid都可以)
- -d 指定家目录
- -M 不建立家目录
- -s 指定默认登录shel
- -e 指定用户失效时间 可使用 YYYY-MM-DD 的日期格式。
- -r 建立系统用户
修改密码
passwd 修改密码
passwd 用户
passwd [选项] 用户名
- -l 锁定用户 不让登录
- -u 解锁
- -d 清空密码 无需使用密码直接登录
- -S(大写) 查看锁定状态
usermod 修改已有用户的属性
- -l(小写L) 修改用户登录名
- -L (大写) 锁定用户
- -U (大写) 解锁用户
- -u(小写) 指定uid
- -g 指定基本组(组名和gid都可以)
- -G 指定附加组(组名和gid都可以)
- -d 指定家目录
- -M 不建立家目录
- -s 指定默认登录shel
- -e 指定用户失效时间 可使用 YYYY-MM-DD 的日期格式。
删除用户
删除用户 userdel
-r 连家目录一起删除
| d | rwx | --- | --- |
|---|---|---|---|
| 文件的主人 | 文件所属的组 | 其他人 | |
| 属主 | 属组 |
注意:
文件夹的最小权限 是 x 一定要带上否则无法 进行任何操作,超级管理员不受影响
删除一个文件和所在文件夹权限有关和自身没关系。注意超级管理员
修改文件或目录权限
Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:r --> 4\w --> 2\x --> 1
由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。
拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:
所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x = 4+1 = 5
所以,此权限对应的权限值就是 765。
chmod
chmod 修改权限
chmod -R 权限值 文件名
chown
chown 修改文件属主属组
chown -R 所有者:所属组 文件或目录 (注意修改所属组主和所属组时要用“:”隔开)
可以看到,原本表示文件所有者权限中的 x 权限位,却出现了 s 权限,此种权限通常称为 SetUID,简称 SUID 特殊权限。 SUID 特殊权限仅适用于可执行文件,所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。
[root@localhost ~]# chmod u-s /usr/bin/passwd
#属主取消SetUID权限
[root@localhost ~]# ll /usr/bin/passwd
-rwxr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
[root@localhost ~]# su gxl
[lamp@localhost ~]$ passwd
Changing password for user gxl.
Changing password for user.
(current) UNIX password:
#看起来没有什么问题
New passwor:
Retype new password:
password:Authentication token manipulation error <--鉴定令牌操作错误
#最后密码没有生效
虽然用户有执行 passwd 命令的权限,但无修改 /etc/shadow 文件的权限,因此最终密码修改失败。
SUID 特殊权限具有如下特点:
- 只有可执行文件才能设定 SetUID 权限,对目录设定 SUID,是无效的。
- 用户要对该文件拥有 x(执行)权限。
- 用户在执行该文件时,会以文件所有者的身份执行。
- SetUID 权限只在文件执行过程中有效,一旦执行完毕,身份的切换也随之消失。
Sticky 位
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权 在目录设置Sticky 位,只有文件的所有者或root可以删除该文件 sticky 设置在文件上无意义
Sticky权限设定:
- chmod o+t DIR...
- chmod o-t DIR..
[root@localhost aa]#chmod o+t /opt/aa (添加Sticky 位)
[root@localhost opt]#chmod o-t /opt/aa (减少Sticky 位)
总结:学会创建多个用户并修改权限