查看文件及目录属性
1.使用 ls -l filename查看文件属性
注意:文件属性各字段的含义如下
1.第1位-:表示普通文件
2.第2-10位:三位一组,表示三组文件权限。第一组是文件所有者的权限,第二组是同组用户的权限,第三组是其他用户的权限。(r表示读权限,w表示写权限,x表示执行权限,-表示没有权限)
3.第3字段:SELinux Context
4.第4字段:文件硬链接个数
5.第5字段:文件拥有者
6.第6字段:文件拥有组
7.第7字段:文件大小
8.第8字段:文件最后一次被修改的时间
9.第9字段:文件名称
2.使用 ls -ld directory查看目录属性
注意:目录属性各字段含义如下
1.第1位d:表示目录文件
2.第2-10位:三位一组,表示三组目录权限。第一组是文件所有者的权限,第二组是同组用户的权限,第三组是其他用户的权限。(r表示读权限,w表示写权限,x表示执行权限,-表示没有权限)
3.第3字段:SELinux Context
4.第4字段:目录中子目录的个数
5.第5字段:目录拥有者
6.第6字段:目录拥有组
7.第7字段:目录中子文件或子目录元数据大小
8.第8字段:目录最后一次被修改的时间
9.第9字段:目录名称
更改文件拥有者和拥有组
1.chown 用户名 文件 #文件所有者改为指定用户
2.chgrp 组名称 文件 #文件所有组改为指定组
3.chown -R 组名称 目录 #目录及目录下文件所有者改为指定用户
4.chgrp -R 组名称 目录 #目录及目录下文件所有组改为指定组
5.chown 用户名:组名称 文件|目录 #同时更改文件或目录的所有者和所在组
使用 watch -n 1 ‘ls -lR /mnt’ 进行监控
更改文件拥有者
更改文件拥有组
注意:文件拥有者和拥有组只有超级用户root可以修改
设定文件权限
1.字符方式设定文件权限
使用 chmod <u|g|o|a><+|-|=><r|w|x> 文件名 指令
u:拥有者 g:拥有组 o:其他用户
+:添加权限 -:去掉权限 =:给予权限
r:读文件的权限 w:写文件的权限 x:执行文件的权限(文件)
r:使用ls 命令将该目录下的子目录和文件罗列出来的权限 w:表示用户可在该目录下创建子目录或文件的权限 x:表示可以用cd进入该目录的权限(目录)
1.chmod u=rw file #对file文件的拥有者增加读写权限
2.chmod ug-w,o+x file #对file文件的拥有者和拥有组去掉写权限,其他用户增加执行权限
3.chmod a-w file #对file文件的所有用户去掉写权限
对文件拥有者的更改
对文件拥有组、其他用户的更改
去掉目录拥有者的写权限,发现无法列出目录内容
去掉目录拥有者的写权限,发现无法在该目录下建立文件
去掉目录拥有者的执行权限,发现无法使用cd进入该目录
2.数字方式设定文件权限
使用 chmod 数字 文件 指令
权限可以用一个八进制数字来表示:
权限 | 二进制 | 八进制 |
---|---|---|
- - - | 000 | 0 |
- - x | 001 | 1 |
- w - | 010 | 2 |
- w x | 011 | 3 |
r - - | 100 | 4 |
r - x | 101 | 5 |
r w - | 110 | 6 |
r w x | 111 | 7 |
其中 -R 表示递归修改目录权限
3.依照模板复制文件权限
使用 chmod --reference=属性源文件 文件名 指令
chmod --reference=/mnt/westos westos1
将 redhat3 的权限复制给 redhat1
预留阈值设定权限
系统中使用umask来预留权限,umask值越高,系统越安全。
1.设置本shell的umask值(临时)
1.umask #查看预留阈值
2.umask 预留阈值 #设置本shell的预留阈值
可以发现设置的umask值只能在本shell内有效
2.设置系统所有进程的umask值(永久)
vim /etc/bashrc #修改shell配置文件
vim /etc/profile #修改系统配置文件
source /etc/bashrc #读取文件执行语句,使设置立即生效
souce /etc/profile #读取文件执行语句,使设置立即生效
/etc/bashrc 和 /etc/profile 都用于保存用户的环境信息
/etc/bashrc 用于交互式 non-login shell,为每一个运行bash shell 的用户执行此文件
/etc/profile 用于交互式 login shell,用户第一次登录时执行此文件
注意:文件的默认权限是666,目录的默认权限是777
我们可以修改umask值来更改权限,例如当umask值为022时:
文件权限为:666-022=644 即表明文件拥有者可以读写文件,而拥有组和其他用户只能读取文件。
目录权限为:777-022=755 即表明目录拥有者具有读写执行的满权限,而拥有组和其他用户只能进入目录列出文件并读取文件。
修改 /etc/bashrc 文件,将umask值改为077
使用 source指令使其立即生效
同样,编辑/etc/profile文件
特殊权限的设置
权限的提升
SUID(setuid):只针对二进制可执行文件,使文件所有者在执行阶段具有文件所有者的权限
1.chmod u+s 文件名 #为文件加上setuid标志
2.chmod 4原文件属性 文件名 #添加setuid标志
SGID(setgid):针对二进制可执行文件,使文件所有组在执行阶段具有文件所有组的权限;对于目录,目录新建文件的所属组与该目录的所有组保持一致。
1.chmod g+s 文件名|目录名 #添加setgid标志
2.chmod 2原文件属性 文件名|目录名 #添加setgid标志
1.第一种方式
2.第二种方式
权限的下放
sudo 能把某些超级权限针对性的下放,并且不需要当前用户知道root密码
sudo 的流程:当前用户切换到root身份,以root身份执行命令。执行完成后,直接退回至当前用户。
切换到linux身份,发现无法进行用户添加删除操作,于是使用root身份编辑visudo文件进行设置。
进行下一步操作前,需要知道linux的主机名
在visudo文件第100行处,添加 linux hostname =(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel 指令
可以发现linux可以进行用户添加、删除操作了(注意要使用sudo命令)
补充
STICKYID(粘滞位):对于文件,表明文件即使没有被程序调用也会被加载到交换空间中;对于目录,表明所有用户在该目录下均可创建文件,但只有文件拥有者和root用户可以删除该目录下的文件。
1.chmod o+t 文件|目录 #添加STICKYID权限
2.chmod 1原文件属性 文件|目录 #添加STICKYID权限
可以发现,用户不仅可以删除自己创建的文件,还可以删除别人创建的文件
使用 chmod o+t 指令,解决了这一问题
特定权限的设置
ACL(访问控制列表):可以针对某一个使用者,某一个群组来设定特定的权限需求。
1.getfacl #查看权限列表
2.setfacl -m d:u:ly:rwx 目录 #对用户ly的目录设置默认读写执行权限
3.setfacl -m u:ly:rwx 文件|目录 #对文件或目录的拥有者ly设定读写执行权限
4.setfacl -m g:test:rw 文件|目录 #对文件或目录的拥有组test设定读写权限
5.setfacl -x u:ly 文件|目录 #删除用户ly的acl权限
6.setfacl -b 文件|目录 #关闭列表功能
注意:设置默认ACL权限的作用如下
如果给父目录设定了默认ACL权限,那么父目录中新建的文件或子目录都会继承父目录的ACL权限。(对目录本身不生效,对目录中原有文件不生效)
来源:CSDN
作者:L*YUEYUE
链接:https://blog.csdn.net/weixin_41708548/article/details/103893965