Linux权限与用户管理
权限与用户类别
rwx分别代表 读/写/执行 (权限) ugoa分别代表 属主/属组/其他人/所有人 (用户类别) MODE代表0000-7777的权限(数字表示)
文件与目录权限
默认权限 umask命令查看默认权限掩码(/etc/umask) umask改变默认权限的2种方式 umask MODE umask [ugoa][+-=][rwx]
类型 | 默认权限 |
---|---|
文件 | 0666-umask |
目录 | 0777-umask |
文件和目录权限的不同含义
权限名 | 文件 | 目录 |
---|---|---|
r | 读取文件内容 | 列出目录文件 |
w | 修改文件内容 | 创建/删除文件 |
x | 执行文件 | 进入目录/显示文件详细信息 |
权限和用户类别命令
- chmod [ogoa] [+-=] [rwx] FILE/DIR (chmod MODE FILE/DIR)
- chown USER[:GRP] FILE/DIR 修改属主/属组
- chgrp FILE/DIR 修改属组 chmod chown chgrp 命令通用选项
- -R 递归修改目录 权限/属主/属组
- -v 显示详细的处理信息
- -c 显示改变的信息
- --reference=path/file path/file 将前者 权限/属主/属组 赋给 后者
- --deference 作用于软链接指向的文件 (chmod不支持)
特殊权限
SUID: 运行程序时, 相应进程的属主是程序文件自身的属主, 而不是启动者. chmod u+s FILE
如果FILE原有属主执行权限, 则显示为s, 否则显示为S
SGID: 运行程序时, 相应进程的属组是程序文件自身的属组, 而不是启动者的属组. chmod g+s FILE
如果FILE原有属组执行权限, 则显示为s, 否则显示为S. chmod g+s DIR
在目录下创建的文件不是自己的基本组, 而是目录的属组.
Sticky: 给目录设置Sticky特殊权限. chmod o+t DIR
在这个目录下可以创建文件, 删除自己的文件, 不能删除别人的文件.
访问控制列表
- getfacl FILE/DIR 查看ACL信息
- setfacl -[m|x] [D:]T:N:P FILE/DIR 设定/取消ACL信息
- m: 设定ACL
- x: 取消ACL
- D: 是否为目录(目录中文件递归继承ACL)
- T: [u|g] 用户或者组
- N: UID|GID|用户名|组名
- P: 权限[rwx]
setfacl --mask PERM FILE 设置facl中的mask(不能超过umask的权限)
隐藏属性
- chattr [+-=][ia] FILE/DIR 修改隐藏属性
- a: 文件只能增加数据, 不能删除和修改.
- i: 不能对此文件使用 重命名/删除/链接/修改 等操作.
- lsattr FILE/DIR 显示隐藏属性
- -a 显示隐藏文件
- -d 显示目录属性
- -R 递归显示
用户管理
用户/组 配置
- 用户类别(组类别: 管理员组/系统组/一般组)
- 管理员(root) UID=0
- 系统用户 UID=[1, 499]
- 一般用户 UID=[500, 65535]
私有组: 创建用户时, 系统自动为其创建的一个与用户名相同的组. 附加组: 为用户添加额外的组, 用户可以切换到附加组内.
-
用户和组信息文件
- /etc/passwd
- /etc/group
-
用户和组影子口令文件
- /etc/shadow
- /etc/gshadow
-
/etc/passwd中的信息 用户名:密码:UID:GID:注释:家目录:默认SHELL
-
/etc/group中的信息 组名:密码:GID:以此组为其附加组的用户列表
-
/etc/shadow中的信息 用户名:密码:最近一次修改密码时间:最短使用期限:最长使用期限:警告时间:非活动时间:过期时间:保留 最短使用期限: 最短再次修改密码的时间 最长使用期限: 必须在这个时间内修改密码, 否则国企的时间 警告时间: 账号超过时间没有修改密码被警告的时间 非活动时间: 账号修改密码才能继续使用的时间 过期时间: 账号的过期的时间
/etc/login.defs 用户登录默认信息(优先级低于/etc/shadow) /etc/shells 系统所提供的所有SHELL
用户管理命令
- useradd USER 添加用户
- -r 创建系统帐号
- -p PASSWD 为用户账户指定默认密码
- -m 创建家目录
- -M 不创建家目录
- -b HOME_DIR 指定家目录位置
- -k 必须与-m一起使用, 将/etc/skel目录的内容复制到用户的家目录.
- usermod USER 修改用户信息
- -l NAME 修改用户帐号名
- -L 锁定用户密码(无法登陆/密码无效)
- -U 解除密码锁定 useradd/usermod通用选项
- -u UID 指定UID
- -g INITIAL_GROUP 指定用GID或组名
- -d NAME 指定家目录名
- -c COMMENT 新增/修改 用户备注
- -s SHELL 指定默认登录shell
- -G GROUP... 指定用户附加组
- -e EXPIRE_DATE 指定账户过期时间
- -f INACTIVE_DAYS 指定帐户非活动时间 立即(0), 永不(-1)
- userdel USER 删除用户
- -r 同时删除用户的家目录
- -f 强制删除 即使用户在线
- **id USER ** 显示用户信息
- -u UID
- -g GID
- -G 附加组
- -n 对于 -ugG 显示名字而不是数值
- -r 显示名字而不是用户名
- chsh USER 修改用户默认登陆shell (同usermod -s)
- chfn USER 修改用户备注信息 (同usermod -c)
- passwd USER 给用户添加密码
- --stdin 从标准输入中输入密码
- -d 删除密码(用户登录可不输入密码)
- -S 显示用户密码信息
- -l 同(usermod -L) 锁定用户
- -u 同(usermod -U) 解锁用户
- -g 同(gpasswd GROUP) 设定组密码
- chage USER 更新用户密码信息
- -l 列出当前chage的设置
- -m MIN_DATE 最短使用期限 不限制(0)
- -M MAX_DATE 最长使用期限
- -w WARN_DATE 警告时间
- -E EXPIRE_DATE 过期时间
- -d LAST_PSWD_DATE修改上一次更改密码时间
- -i INACTIVE_DATE 非活动时间
- pwck 检查用户帐号完整性 -q 仅报告错误信息 -s 以用户ID排序文件 -r 只读方式运行指令
- groupadd GROUP 创建组
- -g GID 指定GID
- -r 设定为系统组
- groupmod GROUP 修改组信息
- -g GID 指定GID
- -n NAME 修改组名
- groupdel GROUP 删除组
- gpasswd GROUP 设定组密码
- -a USER 添加用户到组
- -d USER 从组删除用户
- -A USER... 指定组管理员
- -M USER... 指定组成员
- -r 删除组密码
- -R 限制用户组 (只有组中成员能使用newgrap加入该组)
- newgrp GROUP 切换到一个新组