Linux文件权限与归属、文件的特殊权限、文件的隐藏属性
一、linux系统使用了不同的字符来区分文件:
-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道文件
文件权限的字符与数字表示
权限分配 |
文件所有者 |
文件所属组 |
其他用户 |
||||||
---|---|---|---|---|---|---|---|---|---|
权限项 |
读 |
写 |
执行 |
读 |
写 |
执行 |
读 |
写 |
执行 |
字符表示 |
r |
w |
x |
r |
w |
x |
r |
w |
x |
数字表示 |
4 |
2 |
1 |
4 |
2 |
1 |
4 |
2 |
1 |
文件权限的数字表示法基于字符表示的权限计算出来的。目的是简化权限表示。
二、特殊权限
1.SUID
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制的执行者临时拥有属主权限。
[root@linuxprobe ~]# ls -l /etc/shadow
----------. 1 root root 1133 Jun 20 09:42 /etc/shadow
[root@linuxprobe ~]# ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 30 2014 /bin/passwd
x变为s意味该文件被赋予了SUID权限
2.SGID
主要两个功能:
让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);
在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。
[root@linuxprobe ~]# cd /tmp
[root@linuxprobe tmp]# mkdir testdir
[root@linuxprobe tmp]# ls -ald testdir
drwxr-xr-x. 2 root root 6 Jun 20 10:57 testdir
[root@linuxprobe tmp]# chmod -Rf 777 testdir
[root@linuxprobe tmp]# chmod -Rf g+s testdir
[root@linuxprobe tmp]# ls -ald testdir
drwxrwsrwx. 2 root root 6 Jun 20 10:57 testdir
在设置好目录的777权限(确保普通用户可以向其中写入文件),并为该目录设置SGID特殊权限位后,就可以切换至一个普通用户,然后尝试着该目录中创建文件,并查看新创文件的是否会继承新创建的文件所在的目录的所属组名称:
[root@linuxprobe tmp]# su - linuxprobe
Last login: Wed Jun 20 10:33:19 WST 2018 on :0
[linuxprobe@linuxprobe ~]$ cd /tmp/testdir
[linuxprobe@linuxprobe testdir]$ echo "linuxprobe,com" > test
[linuxprobe@linuxprobe testdir]$ ls -al test
-rw-rw-r--. 1 linuxprobe root 15 Jun 20 11:31 test
chmod命令,设置文件或目录的权限,格式为:chmod[参数]权限 文件或目录名称
chown命令,设置文件或目录的所有者和所属组,格式:chown[参数] 所有者:所属组 文件或目录名称
3.SBIT
确保用户只能删除自己的文件而不能删除其他的文件。
三、文件的隐藏属性
1.chattr
用于设置文件的隐藏权限,格式“chattr[参数] 文件”
参数 |
作用 |
---|---|
i |
无法对文件进行修改,若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件 |
a |
仅允许补充内容,无法覆盖内容 |
S |
文件内容在变更后立即同步到硬盘 |
s |
彻底从硬盘中删除,不可恢复 |
A |
不再修改这个文件或目录的最后访问时间 |
b |
不再修改文件或目录的存取时间 |
D |
检查压缩文件中的错误 |
d |
使用dump命令备份时忽略本文件/目录 |
c |
默认将文件或目录进行压缩 |
u |
当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
t |
让文件系统支持尾部合并 |
X |
可以直接访问压缩文件中的内容 |
2.lsattr 命令
用于显示文件的隐藏权限
格式:lsattr[参数]文件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一次服务器沦陷为肉鸡后的实战排查过程!
- 使用 centOS 7 部署前端项目
- PHP rand() 函数随机整数。
- PHP使用htmlspecialchars方法实现像ASP的Server.HTMLEncode一样的效果
- jquery.ajax()怎么把获取来的内容转为JSON,并使用。
- Spring:IOC 控制反转
- Spring:AOP 面向切面编程
- JavaScript进阶教程(5)-一文让你搞懂作用域链和闭包
- JavaScript进阶教程(6)—硬核动图让你轻松弄懂递归与深浅拷贝
- Spring:JDBC Template,声明式事务
- Spring:讲解编程题
- SpringMVC:基本应用
- SpringMVC:进阶
- SpringMVC:SSM 整合
- 12 | Tornado源码分析:BaseIOStream 对象(上)