Linux 用户 组 目录 权限
一. 用户管理:
众所周知,linux 是一个多任务多用户的操作系统,任何一个要使用系统资源的用户,都必须向系统管理员申请一个账号\
useradd 命令:
useradd 命令使用来创建用户的,创建完默认会在/home目录下创建一个和用户名同名的家目录
useradd [参数] # 参数是用户名 useradd -d [参数1] [参数2] # 选项 -d 就是指定家目录, 参数1 指的是要指定的用户的家目录 参数2 指的是新用户名
passwd 命令:
修改用户密码
passwd [参数] # 参数是用户名 如果不写用户名就是给当前登录的用户修改密码
使用 echo 命令一次性设置密码
echo 123456 | passwd --stdin user1 echo 123456 | passwd --stdin user2 # echo 后面接的是密码
账户管理:
chage 命令:
用于设置用户账户失效时间:
chage 选项 [参数] # 参数为用户名 chage -E 2024-5-7 szq # 设置账号什么时候过期 # -d 显示上一次更改的日期 # -E 设置帐号到期的日期 # -i 设置密码到期后还可以使用几天 # -l 显示当前的设置 # -m 设置密码可更改的最小天数 # -M 设置密码保持有效的最大天数 # -R 设置用户的chroot目录 # -W 设置提前收到警告信息的天数
设置用户密码失效时间:
usermod -e 命令:
设置单个用户密码失效时间:
usermod -e [参数1] [参数2] # 参数1 是时间 参数2 是用户名 usermod -e 2024-5-27 szq
/etc/login.defs 批量设置 密码失效时间:
vim /etc/login.defs PASS_MAX_DAYS 99999 # 密码过期时间 99999 为用户永不过期 PASS_MIN_DAYS 0 # 密码最小修改天数 PASS_MIN_LEN 5 # 可接受密码最小长度 PASS_WARN_AGE 7 # 密码过期前多少天给出提示
userdel 命令:
用于删除用户:
userdel [参数] # 参数是用户名 此种方式删除用户是保留家目录的 userdel -r [参数] # 此参数是用户名 -r 是删除用户的同时删除用户的家目录, 一般情况下建议保留家目录
id 命令:
用来查询用户的信息:
id [参数] # 参数是用户名,也可以不写,不写查询的就是当前用户
whoami 命令:
用来查询当前用户的信息:
whoami who am i
su - 命令:
用来切换用户
su - [参数] # 参数是用户名 # 高权限切换到低权限不需要密码, 低权限到高权限需要密码
二. 用户组管理 :
**可以对系统中有相同共性(权限)的用户进行统一管理,每个用户都要属于一个组不能独立于组之外 **
groupadd 命令:
用于创建用户组
groupadd [参数] # 参数是用户组名称
groupdel 命令:
用于删除用户组
groupdel [参数] # 参数是用户组的名称
useradd -g 命令:
用于在创建用户的时候指定用户的组 (修改组名)
useradd -g [参数1] [参数2] # 参数1 是用户组的名称 参数2 是用户的名称 # 如果在创建用户的时候没有指定用户的组,系统回默认生成一个和用户名相同的组
useradd -G 命令:
用于加入组
useradd [参数1] -G [参数,参数,...] # 参数1 用户名 参数2 要加入的组多个用,号隔开
usermod -g 命令:
用于修改用户组:
usermod -g [参数1] [参数2] # 参数1 是用户组的名称 餐数2 用户的名称
usermod -G 命令:
设置一个用户属于多个组
usermod -G [参数1,参数1,....] [参数2] # 参数1 是组名, 多个组名用 , 号隔开 参数2 是用户名
usermod -d 命令:
用于修改用户登录的初始目录,修改的新的目录要保证这个用户要有能登陆这个目录的权限:
usermod -d [参数1] [参数2] # 参数1 目录的路径 参数2 用户名
usermod -e
用户和组的相关配置文件:
1. /etc/passwd 文件:
用于存放用户(user)的各种信息,每一行代表一个用户:
# root:x:0:0:root:/root:/bin/bash 用户名:口令:用户标识符:组标识符:注释性描述:主目录:登录shell
2. /etc/shadow 文件:
口令配置文件
# root:$6$qXAhlBKCYAdtYoIv$2vYa/RB7ukhWnghOiv00RAE.2h9LwV8sJ5UYhIlIa650uwKN4wyUOIa76OMTF0BgcjR9gv9WdhMfjTRVA6cT40::0:99999:7::: 登录名:加密口令:最后一次修改时间:最小间隔时间:最大间隔时间:警告时间:不活动时间:失效时间:标志
3. /etc/group 文件:
存放组的配置文件,记录linux包含的组信息
# root:x:0: 组名:组标识符:组内用户列表(用户信息)
三. 所有者 所在组 其他组 :
文件所有者 所在组 其他组 :
文件所有者:
一般为文件或目录的创建者,可以使用 ll 命令,来查看用户的所有者:
# dr-xr-xr-x. 5 root root 4096 2月 24 04:35 boot 权限 文件硬链接数或目录子目录数 所有者 所在组 所占字节数 最后修改日期 文件名
chown 命令:
改变文件的所有者
chown 选项 [参数1] [参数2] # 参数1 是用户名 参数2 文件名 # 选项 -R (大写) 处理指定目录以及其子目录下的所有文件
chgrp 命令:
改变文件的所在组
chgrp 选项 [参数1] [参数2] # 参数1 是组名 参数2 是文件名 # 选项 -R (大写) 处理指定目录以及其子目录下的所有文件
三. 权限:
drwxr-xr-x. 19 root root 3100 2月 24 04:35 dev lrwxrwxrwx. 1 root root 7 2月 24 04:31 bin -> usr/bin -rw-r--r--. 1 root root 0 3月 3 09:55 ss # 第一个字段的第一个字符 d 表示目录,l表示链接(快捷方式),-表示文件,c表示字符设备,b表示块设备(硬盘) # rwx r代表可读(作用在文件上表示可以查看) # w代表可写(作用在文件上表示可以修改,不可以删,要删除文件的话你要对该文件的目录也要有写的权限) # x表示可执行(如果是目录的话表示可以进入该目录) # 1-3 位表示所有者 4-6位表示所属组 7-9位表示其他用户拥有该文件的权限
权限也可以使用数字表示:
# r = 4; w = 2; x = 1 rwx = 4 + 2 + 1 = 7
chmod 命令:
修改文件或者目录的权限, u表示所有者, g表示所有组,o其他
chmod u= g= o= [参数] # 参数 目录或者文件 # 选项 -R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) chmod u=rwx g=rw o=r [参数] #----------------------------------------或者 chmod 764 [参数]
默认权限 :
umask:
系统用户: umask 022
普通用户: nmask 002
文件目录权限 = 文件目录默认权限 - umask 值 (这是一个记忆的方法, 但是不严谨,大部分情况下是对的)
真确的方法是通过 把默认权限每一位转换成二进制, 把umask 值每一位转换成二进制, 进行与运算
决定umask 的配置文件 /etc/bashrc 但是不要瞎修改
高级权限:
s 所对应的数值为: u 4, g 2,o 1
SUID:
限制:只能设置在二进制可执行程序上, 对目录文本无效
功能: 程序运行时的权限从执行者变更成程序的所有者
chmod u+s /usr/bin/less chmoe 4755 /usr/bin/less
SGID:
限制: 既可以给二进制可执行程序设置, 也可以给目录设置
功能: 在设置了 SGID 权限的目录下建立文件时, 新创建的文件的所属组会继承上一层目录的所属组
chmod 2755 /www/ chmod g+s /www/
Stickybit:
限制: 只作用与目录
功能:目录下创建的文件只有 root 用户,文件的创建者, 文件所有者, 才能删除
chmod o+t /sss/ chmod 1755 /sss/
ACL 权限:
直接给用户配置权限
getfacl 命令:
查看文件的ACL 的权限:
getfacl 选项 [参数] # 参数 是文件 或者路径 如果是路径的话要加选项 -d # -a 显示文件的ACL策略 # -c 不显示注释标题 # -d 显示目录的ACL策略 # -e 显示所有的有效权限 # -L 找到符号链接对应的文件 # -n 显示用户UID和组群GID # -P 不找符号链接对应的文件 # -R 递归处理所有子文件 # -t 设置表格输出格式
setfacl 命令:
设置 acl 权限:
# 针对文件配置 acl 权限 setfacl -m u:[用户名称]:[权限] [文件名] # 要递归处理多个文件的话要使用参数 -R # 针对目录设置 acl 权限 setfacl -Rm u:[用户名称]:[权限] [文件名] # 删除单个用户的 acl 权限: setfacl -x u:[用户名] [文件名] # 删除所有用户的 acl 权限: setfacl -b [文件名] # -b 清空扩展访问控制列表策略 # -d 应用到默认访问控制列表 # -k 移除默认访问控制列表 # -L 跟踪符号链接文件 # -m 更改文件访问控制列表策略 # -P 找到符号链接对应的文件 # -R 递归处理所有子文件 # -x 根据文件中访问控制列表移除指定策略
文件扩展属性:
Linux 的文件扩展属性有 +a 只能追加内容 +i 不能修改内容
chattr 命令:
设置文件的扩展属性
# +a 只能追加内容 # +i 不能修改内容 # 增加文件的扩展属性 chattr +a [参数] chattr +i [参数] # 参数 是文件 # 删除文件的扩展属性 chattr -a [参数] chattr -i [参数] # 参数是文件
lsattr 命令:
查看文件的扩展属性
lsattr [参数] # 参数为 文件