文件权限和用户权限
权限问题chmodSUIDSBITchgrpchownumaskACLchattrlsattr用户权限
权限问题
rwx-rw-r 764 r--r--r 444 rw------- 600 rwxrwxrwx 777
r read 读取 4
w write 写入2
x execute 执行 1
权限 9位 分为3组
rwx rwx rwx 1
第一组 代表文件所有者具有的权限 owner
第二组 代表文件所有者 所在组的权限 group
第三组 代表其他用户的权限 others
chmod
chmod 变更文件或目录权限
chmod 777 file.c #对所有权限组添加权限
等价:chmod a=rwx file.c
chmod ug=rwx,o=x file.c #拥有者和群组读写执行权限,其他为执行
chmod 771 file.c
u 文件或目录的拥有者
g 文件或目录的所属群组
o 文件或目录的其它拥有者
a 全部,含拥有者,群组,其它拥有者
将文件设为所有人都可读取
chmod ugo+r file.txt #与下面表达式等价
chmod a+r file.txt
将file1.txt和file2.txt文件拥有者和所属群组可写入,其他人不可写
chmod ug+w,0-w file1.txt file2.txt
参数:
-R recursive递归处理,指定目录下所有文件及子目录
SUID
SUID:继承二进制程序所有者权限(权限前加4)
-rwsr-xr-x #chmod 4755 filename s权限添加到二进制程序文件,添加到目录无意义
chmod 0755 file 删除文件s权限,无法删除目录的SUID
----------. 1 root root /etc/shadow
-rwsr-xr-x. 1 root root /usr/bin/passwd
具有S权限的passwd命令可以被普通用户执行继承passwd权限修改shadow
SGID:继承二进制程序所有组的权限,作用于组时新建文件继承目录所属组
-rwxr-sr-x #chmod 2755 filename s权限出现在所属组x位置上
SBIT
SBIT:(sticky bit)作用于目录,此目录文件只能被所有者删除
rwxr-xr-t #chmod 1755 filename t权限出现在其他者的x权限上
4 SUID =u+s
2 GUID=g+s
1 SBIT=o+t
chgrp
chgrp 更改所属组
chgrp -R weng /home/text #递归
chown
chown更改文档的所有者和所属组,使用权限为root,一般使用者没有权限
格式:chown [选项] 文档
-c 作用与-v相似,只传回修改的部分
-f 不显示错误信息
-h 只对符号链接的文件做修改,不更改其他任何文件
-R 递归处理,对子目录一并处理
-v 显示指令执行过程
chown -R 用户名称 文件或目录
chown test:root test.txt #将文件test.txt属主改为test,属组为root,之间用”:”或者”.”连接
chown test.root test.txt
chown .root test.txt #只更改属组
chown root. test.txt #只更改属主
umask
创建目录或文件的默认权限,系统默认值可在/etc/profile文件中设置
#umask #查看权限掩码
umask值 目录权限 文件权限
022 755 644
027 750 640
002 775 664
006 771 660
007 770 660
umask值为权限反码,7为权限数字,目录权限为755,对应umask值为022(7-7=0,7-5=2,7-5=2)
umask值对应的文件权限为目录权限去掉执行权限
ACL
ACL权限,独立于u,g,o的rwx的权限之外的具体权限设置,可以针对单一用户,单一文件或目录来进行rwx权限控制,对于需要特殊权限的使用设置,如,某一个文件不让单一某个用户访问
-rwxrwx---+ #+表示ACL权限
setfacl :设置acl权限命令
-m 配置acl参数给文件或目录,不能与-x合用
-x 删除acl参数,不能与-m合用
-b --remove-all 删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留
-k --remove-default 删除缺省的acl规则。如果没有缺省规则,将不提示
-n --no-mask 不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定
--mask 重新计算有效权限,即使ACL mask被明确指定
-d --default 设定默认的acl规则
--restore=file 从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行
--test 测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出
-R --recursive 递归的对所有文件及目录进行操作
-L --logical 跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录
-P --physical 跳过所有符号链接,包括符号链接文件
--version 输出setfacl的版本号并退出
--help 输出帮助信息
-- 标识命令行参数结束,其后的所有参数都将被认为是文件名
- 如果文件名是-,则setfacl将从标准输入读取文件名
设置acl权限
#setfacl -m u:test:rw- file 给test用户向file文件增加读写acl规则
指定用户和组删除ACL权限
setfacl -x u: 用户名 文件名
setfacl -x g: 组名 文件名
setfacl -b 文件名 删除文件所有ACL权限
getfacl 查看指定文件目录的ACL权限
# file: note.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
rwxrwxr–. 权限后面的点权限,关于selinux安全上下文,具体请查看selinux相关设置
chattr
chattr命令用来修改文件系统的权限属性,只有root用户可以使用,凌驾于rwx之上授权
chattr [选项] 文件或目录名
+ 增加权限
- 删除权限
= 等于权限
i 对文件设置i属性,不允许对文件删除、改名、添加和修改数据,对目录设置i属性,只能修改目录下文件的数据,不允许建立和删除文件
a 对文件设置a属性,只能在文件中增加数据,但是不能删除和修改数据,对目录设置a属性,只允许在目录中建立和修改文件,不允许删除文件
e linux中大部分文件默认拥有e属性,表示文件使用ext文件系统进行存储,而且不 能使用chattr -e取消e属性
chattr +i test.txt #增加i属性,root不能强制删除
lsattr
lsattr显示文件系统属性
lsattr [选项]
-a 显示所有文件和目录
-d 目标为目录,仅列出目录本身属性,不列出文件属性
用户权限
sudo 以其它用户身份执行root指令
配置文件/etc/sudoers中指定用户就能执行sudo指令
usersname ALL=(ALL) ALL
用户 机器 用户 命令
test ALL=(ALL) /usr/bin/systemctl start mysqld,/usr/bin/systemctl restart mysqld,
多个命令使用","逗号分割
username用户可以在所有机器上运行所有的命令
test ALL=(root) /usr/sbin/mysql test可在所有机器上以root用户运行mysql命令,只能用wq!强制保存退出
使用:#sudo command
-u 后面接切换的用户,无此选项则代表身份为root
-b 将后续指令放入背景中,自行运行
sudo -u name mkdir /home/source #以name用户身份建立一个文档