用户与权限
用户 与 用户组
超级用户(Superuser)
默认是root用户。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。在生产环境,一般禁止root账号远程登录SSH连接服务器,以加强系统安全。
UID 与 GID 为 0
普通用户(Regular Users)
这类用户一般是由具备系统管理员root的权限的运维人员添加的。
在 centos 7中 ,普通用户的UID范围为1000-60000。
系统用户(System Users) 程序用户
与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在,且默认情况不能登录系统。它们是系统正常运行必不可少的,他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的bin、adm、nodoby、mail用户等。
UID范围 1-999。
用户信息存放目录
/etc/passwd
用户口令文件
/etc/shadow
字段1:用户名
字段2:密码加密值 当此字段为*或!!时,表示用户不能登录到此系统
当为空时,表示用户无需密码即可登录
字段3:上次修改密码时间
从1970/1/1到上次修改密码的天数
若为0,则用户应该在下次登录系统时更改密码
字段4:最小修改密码间隔天数,即两次修改口令之间所需的最小天数
若不设置,默认为0
空字段 与 0 都表示当天即可修改。
字段5:密码有效期 若为99999,表示永久有效。
字段6:警告时间 表示从系统开始警告用户到用户密码正式失效之间的天数
空字段或者 0 表示没有密码警告期。
字段7:密码过期后的宽限天数。
密码过期后,仍然接受使用此密码进行登录的天数(在此期间,用户应该在下次登录时修改密码)
字段8:账户失效时间。从1970/1/1日起,到用户被禁用的天数 默认为空。
账户过期后,用户将不被允许登录
字段9:保留字段。此字段保留作将来使用。
添加账号
useradd 参数 用户名 参数为可选项
-c //指定用户的注释字段,可以是用户的描述或备注信息
-d //指定用户的主目录路径
-f //指定在密码过期后多少天内,用户仍然能够登录系统
-g //指定用户的主要组
-G //指定用户的附加组,多个组之间使用逗号分隔
-m //在创建用户时同时创建用户的主目录
修改登录密码 参数为可选项
passwd 参数 用户名 密码 //root用户 指定 用户更改密码
普通用户只能更改自己的密码
-l, --lock //锁定用户账户,禁止用户登录系统
-u, --unlock //解锁用户账户,允许用户登录系统
-d, --delete //删除用户密码,将密码设置为空
-e, --expire //强制用户在下次登录时更改密码
-n, --mindays "DAYS" //设置两次密码更改之间的最小天数
-x, --maxdays "DAYS" //设置密码的最大使用天数
-w, --warndays "DAYS" //设置密码过期警告的天数
-I, --inactive "DAYS" //设置用户账户在密码过期后的非活动期限
-S, --status //显示用户密码的状态信息
-r, --root //以超级用户(root)身份运行passwd命令
更改用户信息
usermod 参数
-c, --comment "COMMENT" //修改用户的备注信息
-d, --home "HOME_DIRECTORY" //更改用户的主目录
-e, --expiredate "YYYY-MM-DD" //设置用户账户的过期日期
-g, --gid GROUP //修改用户的主要组
-aG, --append GROUPS //将用户添加到附加组列表中
-l, --login NEW_LOGIN //修改用户的登录名
-s, --shell SHELL //更改用户的登录shell
-L, --lock //锁定用户账户,禁止登录
-U, --unlock //解锁用户账户,允许登录
-p, --password PASSWORD //设置用户的密码(使用加密后的密码)
-R, --root CHROOT_DIR //将操作限制为给定的chroot目录
-u, --uid UID //修改用户的UID
-G, --groups GROUPS //设置用户的附加组
-a, --append //将用户添加到附加组,而不是替换现有的附加组列表
删除用户
userdel -r 用户名 //删除用户与其家目录
不加参数仅删除用户
组的类别:
用户组(User Group) 私有组
用户组是一组用户的集合。每个用户可以属于一个或多个用户组。用户组的目的是为了简化权限管理和资源共享。一个用户组可以有一个组ID(GID)。
辅助组(Supplementary Group) 附加组 公共组
辅助组是用户除了主要组外所属的其他组。通过将用户添加到辅助组,可以给予用户访问其他组拥有的文件、目录和资源的权限。
主要组(Primary Group)
每个用户在系统中都有一个主要组,该组的GID与用户的UID相关联。主要组是当用户登录系统时默认使用的组。
系统组(System Group)
系统组是为了管理系统进程、服务和资源而创建的特殊组。它们通常用于运行特定的系统任务或服务,不用于一般用户。
特殊组(Special Group)
特殊组是一些具有特殊权限和功能的系统组。例如,“root”组是系统管理员的特殊组,具有系统最高权限。
组信息存放目录
/etc/group:保存组账号基本信息
/etc/gshadow:保存组账号的密码信息
group文件每行分成了4段,每个字段含义如下:
字段1:组账号名称
字段2:密码占位符x;
通常不需要设置组密码。由于安全原因,该密码被记录在/etc/gshadow中,因此显示为'x'。类似/etc/shadow文件
字段3:组编号GID
字段4:本组的成员用户列表 (一般不包括基本组对应的用户帐号),多个成员之间以逗号“,"分隔
创建组
groupadd 参数 组名 参数为可选项
-g, --gid GID //指定用户组的GID(组ID)
-o, --non-unique //允许创建一个非唯一的GID。该选项通常与-g一起使用
添加 与 删除 组员
gpasswd参数 组名
-a //向组内添加一个用户
-d //从组内删除一个用户成员
修改用户组
groupmod 参数 组名
-g, --gid GID //修改用户组的GID(组ID)。
-n, --new-name NEW_GROUP //修改用户组的名称。
删除用户组
groupdel 组名
查询信息
查看用户所属组
groups 用户名
查看用户的 id标识 与 组的id标识
id 用户名
查看用户的详细信息
finger 用户名
查询已登录到主机的用户信息
w 参数 用户名
-h 不显示输出信息的标题
-l 用长格式输出
显示当前登录系统的用户的信息
who 参数 文件名 参数和文件名 均为可选项
-H //已列表的形式显示信息
查询最近三次登录的用户信息
users
查询系统上过去登录用户的信息
last 参数 过滤参数(USERNAME... TTY...)
-a //显示更详细的信息,包括终端设备的主机名和终端类型
-d //显示登录的终端设备的下线时间
-n //仅显示指定数量的最近登录记录
文件 与 目录 的归属
查看文件 与 目录的信息
ls -l 文件名/目录
ll 文件名/目录 是上面命令的缩写
UGO权限每3个字符为一组 其中:
rw- 为 属主 的权限
r-- 为 属组 的权限
r-- 其他人的权限
“.” 表示无ACL权限,“+”表示设置了ACL权限
修改 属主 与 属组
chown 参数 属主 : 属组 文件名/目录 //可同时修改 属主 与 属组 参数为可选项
只修改单项 格式
chown 属主 文件名/目录
chown :属组 文件名/目录
参数:
-R //递归地更改指定目录及其子目录下的所有文件和目录的属组
-f //不显示错误信息
-v //显示详细的输出,包括每个更改的文件或目录
chgrp 参数 属组 文件名/目录 //参数为可选项
参数与chown一致
修改一般使用chown命令
文件 与 目录的权限
r (读取) 可读取文件内容 可列出目录内容
w (写入) 可修改文件内容 可在目录中新建、移动、删除文件或子目录
x (执行) 可作为程序执行 可切换目录
文件是否可以被删除和本身权限没有关系,和所在文件夹有关
当只有 r 权限时,不能进入该目录,也不能在目录内创建、删除、修改文件。只能通过 “ls 目录路径”查看目录内的文件名称,不能查看文件的属性信息。
当只有 w 权限时,不能进入目录,不能列出目录内的文件,也不能在目录内创建、删除、修改文件。必须同时有 x 权限,才能创建、删除、修改目录内的文件。
当只有x权限时,只能进入该目录,但不能列出目录内容,也不能创建文件。
x 权限是目录最基础的权限,没有x权限,其他权限也会受影响。
设置文件 与 目录的权限
chmod 参数 对象 赋值 权限类型 文件名/目录 //参数为可选项
-R //递归地更改指定目录及其子目录下的所有文件和目录的属组
-v //显示详细的输出,包括每个更改的文件或目录
下列可由于数字组代替 如 755 或 1555
对象
u 属主(user)
g 属组(group)
o 其他人(other)
a 所有人 (u+g+o)
赋值
+ 增加权限
- 减少相应权限
= 覆盖对应的权限
权限类型
r 读
w 写
x 执行
文件的特殊权限
| 权限项 | SUID | SGID | sticky bit |
|---|---|---|---|
| 字母表示 | s | s | t |
| 数字表示 | 4 | 2 | 1 |
SUID 与 SGID
作用均为 在用户执行该程序时,用户的权限是该程序文件 属X 的权限
SUID只适用于 属主
SGID只适用于 属组
sticky bit 只适用于 其他用户
SUID
配置要求:
SUID只对可执行的二进制文件起作用,shell脚本设置后不生效
如果设置了suid后,属主的可以执行权限x会变成s(小写),若为S(大写)那文件的属主没有执行权限,设置的SUID无效
SUID对目录设置无意义
passwd程序文件中的SUID权限为系统默认配置
实际项目中,出于安全考虑,一般不会人为设置或修改SUID权限
SGID
作用于二进制程序时
任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
执行此程序的用户将拥有此程序的属组权限
作用于目录时,此目录下所有用户新建文件的默认属组是这个目录的属组
在设置SGID的文件后,其属组权限位上的可执行权限x会变成s(小写),若为S(大写)说明属组没有执行权限,设置的SGID无效。
sticky bit
只能作用于 目录
此目录中的文件,只能被所有者自已删除
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
设置sticky权限后,除拥有目录的用户执行权限x会变成t(小写), 若为T(大写)说明其他用户 没有可执行权限,设置的Sticky无效
权限掩码umask
umask的作用
控制新建的文件或目录的权限,默认权限去除umask的权限就是新建的文件或者目录的权限。
umask //查看 配置
umask 权限值 //权限为 数字组 默认 0022 第一个数字为 特殊权限
目录的落地权限=0777-0022=0755。
目录必须要有执行权限,用户才能访问该目录。
文件的落地权限=0666-0022=0644。
系统出于安全考虑,创建文件时去掉了所有的执行权限,防止一些不安全的程序文件被错误执行。