Linux基本权限
1、权限:代表Linux中的用户能对文件和文件夹做哪些操作
- 访问权限
- 读取 r:允许查看文件内容、显示目录列表
- 写入 w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
- 可执行 x:允许运行程序、切换目录
- 归属(所有权)
- 属主:拥有该文件或目录的用户帐号
- 属组:拥有该文件或目录的组帐号
2、权限表示方法:
在表示属主、属组内用户或其他用户对该文件的访问权限时,主要使用了四种不同的权限字符:
- r 可读 ;w 可写 ;x 可执行 ;- 无权限
- r、w、x、- 权限字符还可分别表示为8进制数字4、2、1、0
- 例如:
- rw-r-----: 640
- 660: rw-rw----
- rwxrwxr-x: 775
3、设置文件和目录的权限命令chmod
格式:
- chmod [ugoa] [+-=] [rwx] 文件或目录...
- 或
- chmod nnn 文件或目录...
注:
- u、g、o、a 分别表示属主、属组、其他用户、所有用户
- +、-、= 分别表示增加、去除、设置权限
- nnn 代表3位八进制数
常用命令选项
- -R:递归修改指定目录下所有子项的权限
例:
- chmod u+wx 给所有者增加写和执行权限
- chmod o-rx 取消其他人的读和执行权限
- chmod g=rwx 不管原来是什么权限,让所属组有所有权限
4、设置文件和目录的归属命令chown
格式:
- chown 属主 文件或目录
- chown : 属组 文件或目录
- chown 属主 : 属组 文件或目录
常用命令选项:
- -R:递归修改指定目录下所有文件、子目录的归属
5、命令名称 chgrp
- 命令英文原意:
change the file group ownership
- 命令所在路径:
/bin/chgrp
- 执行权限:所有用户
- 语法:chmod [用户组] 文件或目录
- 功能描述:改变文件或目录的所属组
- 范例:
$chgrp adm file1
- 改变文件
file1
的所属组为adm
6、命令名称 umask
- 命令所在路径:
/bin/umask
- 执行权限:所有用户
- 语法:
umask –S
-S
以rwx
形式显示新建文件或目录缺省权限
- -S以rwx形式显示新建文件或目录缺省权限
- 功能描述:显示、设置文件的缺省权限
- 范例:
$ umask
$ umask -S
特殊权限
1、SUID
- SUID简介:
- 只有可以执行的二进制程序文件才能设定SUID权限,非二进制文件设置SUID权限没任何意义.
- 命令执行者要对该程序文件拥有执行(x)权限.
- 命令执行者在执行该程序时获得该程序文件属主的身份.
- SUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。
- 语法: chmod u+s file
- 运行某程序时,相应进程的属主是程序文件自身的属主,而不是用户本身了,只对二进制程序有效,执行者对于程序需要有 x 权限
- 例子:passwd命令是一个可执行的二进制文件,可以使用它进行用户密码的修改。 root和普通用户都可以执行
- [root@mall ~]# ll /etc/passwd
-rw-r--r-- 1 root root 1330 Apr 9 00:50 /etc/passwd
2、SGID
- 对于目录:
- 用户对此目录有rx权限可以进入目录
- 用户进入此目录后,有效用户组会变成该目录的用户组
- 若用户在此目录有w权限,则用户创建的文件用户组与该目录用户组相同
- SGID简介:
- 只有可执行二进制程序才能设置SGID权限
- 命令执行者要对该程序拥有执行(x)权限
- 命令执行者在执行程序的时候,组身份升级为该可执行程序文件的属组
- SGID权限只在该程序执行过程中有效,也就是组身份只在程序执行过程中发生改变,命令结束用户组身份恢复.
3、Sticky(SBIT)
- 只针对目录有效,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录,只有自己与root才可以删除。
- 在一个公共目录,每个人都可以创建文件,删除自己的文件,但是不能删除别人的文件(冒险位,粘贴位)
- 语法:chmod o+t 文件夹名
4、SUID是4 SGID是2 SBIT是1
- chmod 4755 filename
- 第一个4代表的就是这三个特殊命令,后面的755是普通权限。上面的命令把filename这个文件加入了SUID权限。
FACL 权限
- 文件系统访问控制列表
- FACL: filesystem access control list
- 利用文件的扩展属性,保存了额外的访问控制权限
getfacl 查看
查看caiwu文件夹的额外权限。
[root@mall abc]# getfacl /project/caiwu/
getfacl: Removing leading '/' from absolute path names
# file: project/caiwu/
# owner: caijing
# group: caiwubu
user::rwx
group::r-x
other::---
setfacl 设置
语法:setfacl [-bkRd] [-m|-x acl 参数] 目标文件名
选项与参数:
- -m:设置权限,设置后续的acl参数,不可与-x一起使用
- -x: 取消权限,删除后续的acl参数,不可与-m一起使用
- -b:删除所有的acl参数
- -k:删除默认的acl参数
- -R:递归设置acl参数
- -d:设置默认acl参数,只对目录有效
setfacl -m m:rw inittab
-m设定,可以设定到用户或者是组上
u:uid:perm
g:gid:perm
权限的优先级
- 设置的
facl
权限和普通权限有冲突时: owner>facl,user> group > facl group>
- 如果属于属主,则使用属主的权限,若不属于,再看
facl
是的user
,也不属于再看基本权限里的group
,再看facl
里的group
。 - 所有权限都不能超过
mask
的权限
sudo 提权
- su 命令切换用户的时候,需要输入对方账户的密码,导致密码安全性不够
sudo:
- 某个用户能够以另外一个用户的身份通过某主机执行某命令,而不用输入对方账户密码
- sudo 的配置文件 /etc/sudoers
- 每一行就定义了一个sudo的条目:
- who which——hosts = (runas)TAG:command
- 基本配置格式
- < user list > < host list > = < operator list > < tag list > < command list >
- user list 用户/组,或者已经设置的用户的别名列表, 用户名直接 username,用户组加上%,比如%admin,
- host list 主机名或别名列表
- operator list runas用户,即可以以哪个用户、组的权限来执行
- command list 可以执行的命令或列表,使用命令的绝对路径,多个命令间用逗号隔开
- tag list 这个经常用到的是 NOPASSWD: ,添加这个参数之后可以不用输入密码
- 别名机制:类似定义了一个组
- 4类别名:
- 用户别名: User_Alias
- 主机别名: Hosts_Alias
- 参照用户: Runas_Alias
- 命令别名: Cmnd_Alias
- 别名的名字只能使用大写的英文字母组合
- 别名:可使用!取反
- User_Alias USERADMIN = 系统用户名 或 %组名 或用户别名
- Hosts_Alias 主机名 IP 网络地址 其它主机名 可以嵌套
- Runas_Alias 用户名 #UID 别名
- Cmnd_Alias 命令绝对路径 目录(下面所有命令) 其它定义的命令别名
记录 sudo 日志到指定的文件:
- 编辑/etc/sudoers文件,添加如下行:
- Defaults logfile=/var/log/sudo.log
- Defaults !syslog
- visudo -c 可以检查配置文件语法