用户身份与能力
UID为0的用户为系统的管理员用户
UID为1-999的用户为系统用户
UID为100+的用户为普通用户
id
用于显示用户的详细信息
正在上传…重新上传取消
useradd
添加用户
参数:
-c:加备注
-u:指定用户默认uid useradd -u [uid] [新用户名]
-g:指定用户默认gid(必须已存在)
-G:指定用户一个或多个扩展组
-d:指定用户家目录(默认:/home/username/)
[root@localhost ~]#
useradd -c
groupadd
添加组
用法: group [参数] [组名]
参数:
-n group -n [新组名] [旧组名]
usermod
修改用户的属性
参数:
-c:添加备注信息
-md:把用户的原家目录移到新目录里(m和d参数要连用)
-g:更改用户所属组 usermod -g [所属组] [用户名]
-G:更改用户扩展组 usermod -G [扩展组] [用户名]
-L:锁定用户禁止登录 usermod -L [用户名]
-U:解锁用户允许登录 usermod -U [用户名]
-u:修改用户uid usermod -u [UID] [用户名]
passwd
修改密码
passwd [用户名]
userdel
删除用户
参数:
-f:强制删除用户
-r:同时删除用户家目录
文件权限与归属
r(可读)w(可写)x(可执行)
文件:
可读(r)代表可以看见文件的内容
可写(w)代表可以增删改
可执行(x)代表可以运行脚本
目录:
可读(r)代表可以看见目录内的文件列表
可写(w)代表可以在目录里增删改文件
可执行(x)代表可以进目录
权限也可以用数字表示
r w x分别用4 2 1代表
例:rwxr--r-- 用744代表
特殊权限
SUID
能让二进制文件(就是命令)程序的执行者临时拥有属主的权限
设置了SUID后属主的权限rwx会变成rws(如果属主的权限没有x,s会是大写的)
SGID
能让二进制文件(就是命令)程序的执行者临时拥有属组的权限
设置了SGID后属主的权限rwx会变成rws(如果属组的权限没有x,s会是大写的)
SBIT
可确保用户只能删除自己的文件(文件只能被属主删除)
设置了SBID后属主的权限rwx会变成rwt(如果属主的权限没有x,t会是大写的)
特殊权限也可以用数字表示,SUID SGID SBIT分别是4 2 1 (加在普通权限前面)
chmod
设置权限
chmod [权限] [文件或目录]
参数:
u+s:设置 SUID
g+s:设置 SGID
o+t:设置 SBIT
u-s:取消 SUID
g-s:取消 SGID
o-t:取消 SBIT
隐藏权限
被隐藏起来的权限,比如文件的权限明明是充足的,却无法删除该文件。就是隐藏权限不能被ls这些命令发现
隐藏权限的专用设置命令是chattr 专用查看命令是lsattr
chattr
设置隐藏权限
chattr [(+)(-)参数] [需要设置隐藏权限的文件或目录]
+(增加该隐藏权限)
-(去掉该隐藏权限)
参数:
i:不能修改文件(文件),不能增删子文件,仅仅可以修改子文件(目录)
a:只能追加内容,无法删除
s:彻底从硬盘删除并且无法恢复
u:与s参数相反,当删除该文件后依然保留在硬盘里的数据
x:可以直接访问压缩文件的内容
lsattr
查看文件(目录)的隐藏的权限
文件访问控制列表ACL
针对指定的用户或用户组对目录或文件的权限
setfacl
设置acl
参数:
-m:修改权限
-x:删除某个权限
-b:删除所有权限
-R:递归子目录
--set 选项会先清除掉原有的 ACL 权限,然后添加新的权限
正在上传…重新上传取消
设置了acl后文件权限后的(.)会变成(+)
getfacl
查看设置的acl权限
acl备份与恢复
备份
getfacl -R [需要备份的文件(目录)] > [保存的文件]
恢复
(必须在要恢复的目录的上一级目录执行命令)
setfacl --restore [备份的文件]
getfacl -R [恢复acl的文件]
创建默认权限
umask
创建文件或目录时的默认权限
新建目录的默认权限是:drwxrwxrwx 新建文件的默认权限是:rw_rw_rw_
umask数字的意思是在默认权限上去掉相应的权限
比如:umask 0022(第一位是特殊不用管)
创建的文件默认权限就应该是:
rw--r--r--
而创建的目录默认权限就应该是:
rwxr-xr-x
查看:
umask
umask -S:更直观地查看
更改umask:
临时:
umask [数字权限]
永久:
修改/etc/bashrc和/etc/profile文件
两个文件的内容是一样的 搜索umask,找到如下代码,不算第一位的特殊权限
if [ $UID -gt 199 ] && [ "id -gn" = "id -un" ]; then
umask 002 //表示uid大于等于199的默认umask值,表示普通用户
else
umask 022 //表示uid小于199的默认umask值,表示root
fi
修改后需要重新读取一下/etc/bashrc或/etc/profile [root@lewis ~]# source /etc/profile
[root@lewis ~]# source /etc/bashrc
su命令与sudo服务
su
切换用户
参数:
-:完全切换到新的用户
sudo服务
把特定命令的执行权限赋予指定用户,比如把root的touch赋予给普通用户,那么在普通用户下用sudo [参数] touch创建的文件属主是root
参数:
-l:列出当前用户可执行的命令
-u [用户名(UID)]:用指定的用户身份执行命令(可以使属组为指定用户名的属组)
-k:清空使用sudo的密码有效时间,下次执行时需要使用密码
-p:更改提示密码的提示语
visudo
visudo用来编辑配置用户sudo的权限
大概在第101行配置
配置格式:
谁可以使用 允许使用的主机 = (以谁的身份)可执行命令的列表
谁可以使用:对那个用户配置sudo服务
允许使用的主机:可以填写all表示不限制可使用的主机,也可以填写网段来限制
以谁的身份:可以填写all表示系统最高权限或者用户
可执行命令的列表:可以填写all表示不限制命令,也可以填写/usr/bin/cat这样的,多个命令文件间用(,)间隔