Linux文件特殊属性

简介:
文中有不对或者有不清楚的地方,请大家告诉我,谢谢!
 
Linux文件特殊属性
Linux文件特殊属性主要包括它的默认权限、隐藏属性和特殊权限(SUID/SGID/SBIT)。
下面我们就来分别讲解它的这些特殊属性。
 
1. Linux文件默认权限:umask
我们在新建立一个文件时,它都有自己的默认属性。它们的默认属性是通过“umask”值来设定的。
那么如何来查看和设置umask值呢?
① 查看umask值
0022
上面的命令显示出umask值的两种表现形式。我们看到数字表现出来的有4位数字,第一位数字用来表示特殊权限,我们在后面介绍,第二三四位数字分别用来表示用户/组/其他用户的权限。
在默认权限的属性上,目录文件和普通文件是不同的。因为我们不希望普通文件具有可执行权限,所以,普通文件在默认情况下是没有执行权限的。又因为目录文件需要具有可执行权限才可以进入,所以普通文件的默认属性最大为666,目录文件的默认属性最大为777。
 
② umask值的意义
umask值就是指“Linux文件的默认属性需要减掉的权限”。比如Linux普通文件的最大默认属性是666,目录文件的最大属性是777。但是我们不想要用户在新建立文件时,文件的属性是666或777,那么我们就要设置umask值。Linux系统预置的umask值是022,那么用户在新建立普通文件时,普通文件的属性就是666-022=644,新建立目录文件时,目录文件的属性就是777-022=755。
 
③ umask值设置
我们不想要新建立的普通文件的属性是644,目录文件的属性是755,我们想要新建立普通文件的属性是664,新建立目录文件的属性是775。那么我们就设置umask值为002即可。设置方法就是“umask 002”。
 
2. Linux文件隐藏属性
文件都具有隐藏属性,隐藏属性对于系统安全来说很重要。
① 设置文件隐藏属性
[root@localhost /]#chattr [-R] [-+=] [AacDdijsSu] 文件名
常用参数意义:
-R:递归处理。
-:删除某个隐藏属性,其他原本存在的属性不改变。
+:添加某个隐藏属性,其他原本存在的属性不改变。
=:将隐藏属性设置为指定的参数,其他原本存在的属性会被改掉。
A(atime):如果设置了A属性,则这个文件的最后访问时间atime不能被修改。
a(append only):如果设置了a属性,则这个文件只能增加数据,不允许任何进程覆盖或截断这个文件。如果某个目录具有这个属性,那么只能在这个目录下建立和修改文件,而不能删除任何文件。
i(immutable):如果设置了i属性,则不能对这个文件做任何修该。如果某个目录具有这个属性,那么只能修改该目录下的文件,而不能建立和删除文件。
s(secure deletion):如果设置了s属性,则这个文件将从硬盘空间中完全删除。
u(undeletable):与s完全相反。如果设置了u属性,则这个文件虽然被删除了,但是还在硬盘空间中存在,还可以用来还原恢复。
 
② 查看文件隐藏属性
文件既然有隐藏属性,那么我们如何查看这些文件的隐藏属性呢?
[root@localhost /]#lsattr [-RVadlv] 文件名
 
[root@localhost /]#lsattr –Ra CaiWu
 
3. Linux文件特殊权限
Linux文件特殊权限主要体现在set UID、set GID、Sticky Bit这三个上面。
要理解这三个特殊权限,就要先理解账号的ID(UID和GID)以及进程等概念。
① SUID
SUID就是Set UID。设置它是为了让普通用户在执行某些程序时,能够暂时具有该程序的拥有者权限。
比如:在Linux系统中普通用户也可以使用passwd命令来修改自己的密码。但是密码文件shadow只有root用户有读权限,其他用户没有任何权限,那么普通用户是怎样通过passwd命令来修改自己的密码呢?我们看下/usr/bin/passwd程序的属性就知道了。
[root@localhost /]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22984 Jan 7 2007 /usr/bin/passwd
我们发现passwd程序user的x权限位变成了s。那么在这里就是这个s使普通用户有权限来执行这个程序。它让普通用户在执行passwd这个程序时暂时拥有了root的权限。
因此,当某程序user的x权限位变成s时,就是进行了Set UID设置,简称SUID。
SUID仅可用于二进制文件,对于其他普通文件,目录文件和脚本之类的文件是无效的。
 
② SGID
SGID就是Set GID。设置它用来作用于用户组。
如果将SGID设置在二进制文件上,则不论用户是谁,在执行该程序时,它的有效用户组将会变成改程序的用户组所有者;
如果将SGID设置在目录文件上,则在该目录文件内所建立的文件或目录的用户组,将会变成该目录的用户组。
SGID一般用于团队的项目开发上,在系统中很少使用。如果设置了SGID,那么该二进制文件或者目录group的x属性位将会变成s。
 
③ SBIT
SBIT就是Sticky Bit。如果在设置了SBit属性的目录中,用户在该目录下拥有w和x权限,那么当用户在该目录下新建文件时,只有文件拥有者和root才有权利删除。
比如:root在/目录下建立了一个文件夹test,test的权限是0777。在没有加特殊权限前,任何人都可以在test目录下做任何事,包括删除别人建立的文件。当我给test目录设置了SBit属性后,那么bobyuan这个用户在test下新建了一个文件bobtest, 属性是0777;bob这个用户进入test目录下试图删除bobtest,发现没有权限删除。
如果某个目录设置了SBit属性,那么该目录other的x属性位将会变成t。如【drwxrwxrwt】。
SBIT仅可用于目录文件对于普通文件是不生效的。
如果某个文件的user或者group或者other没有设置x属性,但是设置了SUID或者SGID或者GBIT,那么,这些特殊属性将会以大写的S和T表现出来。
 
④ 设置SUID/SGID/SBIT
我们用数字形式来表示这三个特殊属性,他们和r/w/x的数字表现形式类似。
SUID:4
SGID:2
SBIT:1
比如我要设置cat命令的SUID属性,那就可以用chmod 4755来实现。
比如我要设置test目录的SBIT属性,那就可以用chmod 1777来实现。
注意,在设置目录或者二进制文件的特殊属性时,一定要给予这些目录或者文件可执行权限。如果未给予可执行权限,即使设置了特殊属性,也将会是空的,会用大写的S和T表示。
      本文转自yuanbin0710 51CTO博客,原文链接:http://blog.51cto.com/yuanbin/114913,如需转载请自行联系原作者

 

相关文章
|
4月前
|
Linux 开发工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
|
2月前
|
存储 数据管理 Linux
区分Linux中.tar文件与.tar.gz文件的不同。
总之,".tar"文件提供了一种方便的文件整理方式,其归档但不压缩的特点适用于快速打包和解压,而".tar.gz"文件通过额外的压缩步骤,尽管处理时间更长,但可以减小文件尺寸,更适合于需要节约存储空间或进行文件传输的场景。用户在选择时应根据具体需求,考虑两种格式各自的优劣。
314 13
|
3月前
|
安全 Linux
Linux赋予文件000权限的恢复技巧
以上这些步骤就像是打开一扇锁住的门,步骤看似简单,但是背后却有着严格的逻辑和规则。切记,在任何时候,变更文件权限都要考虑安全性,不要无谓地放宽权限,那样可能
117 16
|
3月前
|
存储 Linux 数据处理
深入剖析Linux中一切即文件的哲学和重定向的机制
在计算机的奇妙世界中,Linux的这套哲学和机制减少了不同类型资源的处理方式,简化了抽象的概念,并蕴藏着强大的灵活性。就像变戏法一样,轻轻松松地在文件、程序与设备之间转换数据流,标准输入、输出、错误流就在指尖舞动,程序的交互和数据处理因此变得既高效又富有乐趣。
52 4
|
4月前
|
Linux
【Linux】 Linux文件I/O常见操作技巧
以上就是Linux文件I/O操作的一些技巧,接纳它们,让它们成为你在Linux世界中的得力伙伴,工作会变得轻松许多。不过记住,技巧的运用也需要根据实际情况灵活掌握,毕竟,最适合的才是最好的。
118 28
|
4月前
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
547 12
|
3月前
|
Linux
linux文件重命名命令
本指南介绍Linux文件重命名方法,包括单文件操作的`mv`命令和批量处理的`rename`命令。`mv`可简单更改文件名并保留扩展名,如`mv old_file.txt new_name.txt`;`rename`支持正则表达式,适用于复杂批量操作,如`rename 's/2023/2024/' *.log`。提供实用技巧如大小写转换、数字序列处理等,并提醒覆盖风险与版本差异,建议使用`-n`参数预览效果。
|
5月前
|
Linux Shell
Linux系统下快速批量创建和删除文件的方法
总的来说,使用shell脚本来批量处理文件是一种非常强大的工具,只要你愿意花时间学习和实践,你会发现它能大大提高你的工作效率。
278 19
|
6月前
|
监控 Linux
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
127 19
|
6月前
|
Linux
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
210 5
Linux 常用文件查看命令

热门文章

最新文章