linux文件权限系统之初体验
发布日期:2021-09-30 04:14:39 浏览次数:2 分类:技术文章

本文共 2864 字,大约阅读时间需要 9 分钟。

Linux中的一切都是文件,它的文件分为以下几类:

普通文件:分为纯文本文件(ASCII文件,一般可以直接读取的文件,比如配置文件)、二进制文件(比如可执行文件),数据格式文件(比如登陆文件);

目录文件:就是目录

连接文件:类似windows的快捷方式

设备文件:通常在/dev中,又分为块设备文件和字符设备文件,块设备是以字符块为传输单位,而字符设备是以单个字符为传输单位。

套接字:  这类文件通常作用于网络数据连接中,通常放在/var/run目录中

管道文件:用于多个进程间的通信,它是指上是一个文件缓冲区

 

当我们使用ls –al这条命令列出目录中的文件信息时,我们可以看到它的文件属性是以下格

式:-rwxrwxrwx,其中’-’这个表示文件类型:

【d】表示目录;【-】表示文件;【l】表示连接文件;【b】表示块设备文件;【c】表示字符设

备文件;

而后面的9个属性又分为三组,没三个一组,分别表示用户,群组和其它。其中【r】表示

可读;【w】表示可写;【x】表示可执行。同时,这三种属性可以分别用数字来表示:

【r】:4;【w】:2;【x】:1

以上所述是文件的基本权限,此外,linux下的文件还有三个特殊的权限:SUID/SGID/Sticky Bit

SUID:当s权限取代user的x时,也就是类似-r-s—x—x,称为set UID,简称为SUID,这时,当

用户执行这个文件时,就会暂时得到这个文件拥有者的权限。

setGID:与SUID类似,只不过它的s是取代群组的x。

SBIT:当t权限取代其它的x时,就表示SBIT,它只对目录有效,对文件没有任何效果。在具

有SBIT的目录下,用户若再该目录下具有w及x的权限,则当用户在该目录下建立文件或

目录时,只有文件拥有者与root才有权限删除。

 

文件权限的更改

Chgrp:改变文件所属群组

用法:chgrp [-R] dirname/filename;//下列的-R参数统一为目录下文件的递归

例:chgrp users install.log

 

Chown:改变文件拥有者

用法:chown [-R] 拥有者文件或目录

      Chown [-R] 拥有者:群组 文件或目录

例:chown huli install.log

    Chown huli:usersinstall.log

注意:当我们使用cp将自己的文件拷贝给另一个用户时,该文件的拥有者和群组并没有改

变,因此,要让这个文件彻底地属于这个用户,还必须修改该文件的拥有者和群组。

 

Chmod:更改文件属性

前面已经提到过,r,w,x三个属性分别对应的数字是4、2、1。而9个属性又分为三组,那么

一组的属性就是这三个属性的的累加。

例如,当属性为【-rwxr-x---】时,可知

Owner=rwx=4+2+1=7;group=r-x=4+1=5;others=---=0+0+0=0;

这个文件的权限就为750

用法:chmod [-R] xyz 文件或目录

其中xyz就是刚刚提到的文件权限,如上面的750

例:chmod 777 ~/.bashrc

 

还有一种更改文件权限的方法。可以使用u,g,o分别表示三组的属性,a表示all,语法如下:

Chmod [ugoa][+-=] [rwx] 文件或目录

参数:

其中u表示用户,g表示群组,o表示其他,a表示所有,+表示加入属性,-表示减去属性

=表示设置属性。

例:chmod u=rwx,go=rx ~.bashrc

    Chmod a+w~/.bashrc

    Chmod a-x~/.bashrc

 

注意:目录属性有一个特别之处,那就是能否进入它与x这个属性有关

例:cd /tmp

    Mkdir testing

    Chmod 766testing

    Su huli

    Cd testing;//permissiondenied

可以看到,在上面的例子中,我在/tmp下建立了一个目录,并将目录的权限更改为【rwxrw-rw-】

然后将切换到huli这个用户下,可以看到,该用户对于这个目录有读写的权限,但是没有执

行权限,这时,我使用cd命令进入这个目录,会看到permission denied的提示信息,表示

没有权限进入该目录。这时,如果你将x权限补上,chmod o+x testing,再使用cd命令,便

可以顺利进入该目录。

由此可知,能否进入该目录是与x属性息息相关的。

 

前面提到过SUID/SGID/SBIT这几个权限,那么这里就理所当然地要涉及到这几个权限的设置。

与普通属性相似,SUID/SGID/SBIT所对应的数字也为4、2、1

例:将文件的权限更改为【-rwsr-xr-x】

chmod 4755 test

将文件的权限更改为【-rwxr-sr-t】

Chmod 3755 test

由此可知,这三个权限是设置在最前面。

注意:当一个文件的权限为【-rw-rw-rw-】时,我们再来更改这几个特殊权限试试看

Chmod 7666 test;ls –l test

可看到,打印出的结果为【rwSrwSrwT】,为什么是大写的S和T呢,这是因为文件原来的基础属性中,用户,群组和其它中都没有x这个属性,而SUID表示“该文件在执行时,具有文件拥有者的权限”,但文件拥有者都无法执行了,又哪来的权限给别人呢,因此,大写的S和T都表示空的意思。

 

文件与目录的默认权限

当我们新建立一个文件或者目录时,它的默认属性是什么呢?这就与umask相关。umask就是“文件或者目录的属性默认值要减掉的权限”。如果查看umask值和文件或者目录的属性默认值呢?

Umask有两种方式来查看。

第一种是直接使用umask

0022

第一组数字就是指刚才讲到的特殊属性

第二种是以符号的形式打印unmask  -S

U=rwx,g=rx,o=rx

 

文件与目录的属性默认值也是不一样的。默认权限下,文件是没有可执行权限的,也就是

666,【-rw-rw-rw-】;

而由于x与是否进入此目录有关,因此默认为所有权限开放,即为777,【drwxrwxrwx】;

当新建立一个文件或者目录时,它们的属性就是上面的默认属性减去umask的值。

 

文件的隐藏属性

文件有隐藏属性,在系统安全性方面,该隐藏属性非常的重要

Chattr:设置文件隐藏

用法:chattr [+-=] [ASacdistu] 文件或者目录名

所有的参数就不一一列举了,这里只列举两个比较重要的参数

a:设置了a之后,这个文件只能增加数据,而不能删除,只有root才能设置这个属性。

i:它的作用很大,它可以让一个文件“不能被删除、改名、设置连接,也无法写入或者增加数据”

注意:这两个属性是较常用的属性,而且只有root才能设置

 

lsattr:显示文件的隐藏属性

格式:lsattr [-aR] 文件或者目录

-a表示将隐藏文件的属性也显示出来,而-R连同子目录的属性也一并列出来。

 

 

 

转载地址:https://blog.csdn.net/huli870715/article/details/6889637 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux搜索系统
下一篇:js对象类型检查(续)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月06日 21时13分06秒