linux用户权限0666什么意思,linux 权限
最近在一个课题学习的过程中,遇到Linux权限机制,将自己的理解总结如下:1.Linux权限模型——UGO模型当我们用ls -l 命令查看一个目录下的文件或者目录时,我们会看到如下的显示:-rw-rw-r-- 1 linuxw linuxw 18 Apr 16 18:23 Test.txt今天,我们主要学习它的第一个字段-rw-rw-r-- 。这里的r表示可读,w表示可写,x表示可执行。那我们如何
最近在一个课题学习的过程中,遇到Linux权限机制,将自己的理解总结如下:
1.Linux权限模型——UGO模型
当我们用ls -l 命令查看一个目录下的文件或者目录时,我们会看到如下的显示:
-rw-rw-r-- 1 linuxw linuxw 18 Apr 16 18:23 Test.txt
今天,我们主要学习它的第一个字段-rw-rw-r-- 。这里的r表示可读,w表示可写,x表示可执行。那我们如何解读它?首先,我们抛开第一位的“-”,后面的九位分别以三位划分为一组,即一个三元组,也就是说“rw-”、"rw-"、"r--"。它们依次表示该文件或者文件夹的所有者(owner)的权限、其所有组(group)的权限以及其它所有用户(other)的权限。我们把第一个字段综合起来看就是:允许它的所有者以及他的所有组进行读写,允许其他用户读,但不允许写,他们全部都不具有执行它的权力。我们再来看看第一位,本例中以“-”出现,它是一个常规文件。但它只是有这一种,概括来讲,它可能出现的还有:
“d”目录,“l”符号链接,“c”字符专门设备文件,“b”块专门设备文件,“p”先进先出
“s”套接字
在我写这篇博文的时候,我也只见过“d”(文件夹)开头的,其他的几类,在日后的学习中大家可以留心一下。
2.四位八进制数权限模型
总体来说,他和UGO模型极为相似,让我一度没有意识到它们的区别,局中者迷嘛!现在让我们一起来揭开它:
所谓四位八进制数权限模型就是用四个八进制数字(0~7)进行权限表示。比如说0755,现在我们来解读一下它的组成。它可以被分为两个部分。第一位为单独的一部分,第二~四位为第二部分。我们先来理解一下第二部分,为什么说它让人混淆呢?是因为数字0~7与一个三元组之间有着对应关系:
rwx 7rw- 6r-x 5r-- 4-wx 3-w- 2--x 1--- 0
现在:0755抛开第一位,得到的755可以按照对应关系列出三个三元组:rwxr-xr-x它表示的意义与UGO一致,这里不再赘述。我们来看,第一部分。第一部分只有一位数字。但是它仍然被划分为三个二进制数字,这三位对应是 :suid sgid sticky(粘滞)bit 。那么这里为什么要这样处理呢?Linux这样处理是为了使得权限的机制更加的完善。它是如何实现的,我们来详细了解一下:
首先,我们之前说过是三位二进制数,1表示on, 0表示off。它对应到八进制:on on on 7:(111)到off off off 0:(000),其它数字自行补全。那么它这一位数是怎么来的呢?这里我们不得不说Linux权限设置的一些基本方法,首先,当你创建了一个文件而并没有设置它的权限时,一般来说,Linux下默认的权限初始值为0666,但是它会同时参考一个叫做umask的东西来降低权限,使得它的权限设置更为合理,更加安全。umask的值可以在自己的系统中通过命令行输入umask来查看。比如我的值是0002。这里我们把他们统一看成二进制数字:
umask: 000 000 000 010
默认值: 000 110 110 110
我们把这两个值做个异或运算,得到000 110 110 100,我们惊奇地发现,它与我们展示的
“-rw-rw-r--”(0664:二进制:000 110 110 100)一致,这是它们的参考方式的吗?这里由于我只在我的机型上做了演示,所以并不敢给出肯定的答案,但感兴趣,可以去自己的机子上验证,注意这是在你没有指定权限的情况下,或者这里有更深的联系,感兴趣可以做更进一步的了解。现在我们来说一下三个具体的二进制位的作用。当对一个文件设置了suid位后,它的所有者权限的三元组里第三位会相应的变成S。它表示无论谁去执行它,都将以该文件所有者的身份去执行,举个例子,如果这个文件的所有者是root用户,那么将意味着执行它的用户将具备root用户的权限,这样做有时是不安全的,因此设置时需谨慎。sgid同样可以进行设置,意义以suid类推。我们再来说一下sticky位:
[email protected]:/home/linuxw# ls -dl /tmp
drwxrwxrwt 13 root root 4096 Apr 19 22:06 /tmp
当我们查看tmp目录时,会出现t ;那这个t 我们怎么理解呢?它与我们前面介绍的other元组字母组成不太一样啊。其实,这就是我们要讲的sticky位设置后的结果。要理解sticky位,我们先以tmp这个特殊的文件夹来说起。
/tmp目录下存放的是所有用户操作时产生的临时文件。那么,按道理它的权限应该是“rwxrwxrwx",因为它服务于所有的用户,理应所有的用户都可以随意进行读、写(包括修改删除等)、执行等操作。那么这样造成的问题是,如果一个用户删掉了另一个用户在使用时创建的临时文件,那它不就不能恢复了吗?这时啊,我们就说设置sticky位起作用了,它把删除文件的权限收归为只有root用户和它的所有者拥有,而不是任意用户可以去删除它。这也是Linux的一种保护机制。通俗来讲,设置粘滞位的意思相当于说我是你的了,只有你才能处理我,当然这里的你不包括root用户,因为root用户拥有绝对权限。这在文件权限的应用里是很有意义的,它可以防止其他用户损伤一些特定的文件。
3.权限的修改
以Test.txt进行权限的修改为例:
修改权限之前:
-rw-rw-r-- 1 linuxw linuxw 18 Apr 16 18:23 Test.txt
修改常规读、写、可执行权限
chmod u+x Test.txt //所有者设置可执行权限,在Shell脚本编程里很常用。
-rwxrw-r-- 1 linuxw linuxw 18 Apr 16 18:23 Test.txt
chmod g+w Test.txt//所在组设置可写权限
chmod g-x Test.txt //所在组取消可读权限
chmod u+r Test.txt //所有者设置可读权限
chmod o-x Test.txt //设置所有其他用户不可执行权限
设置数字权限:
chmod 0664 Test.txt
设置suid:
chmod u+s Test.txt
-rwsrw-r-- 1 linuxw linuxw 18 Apr 16 18:23 Test.txt
设置sgid
-rwsrwSr-- 1 linuxw linuxw 18 Apr 16 18:23 Test.txt
设置sticky:
chmod +t Test.txt
-rwsrwSr-T 1 linuxw linuxw 18 Apr 16 18:23 Test.txt
总结:首先我们学习了UGO模型和数字权限模型,两者的差异之处是第一位的不同。其次,我们介绍了suid sgid sticky bit位的作用,最后,我们练习了如何修改权限。细心的你可能会发现所有的命令我们都用了chmod,设置权限用“+”,取消权限用“-”,并且设置的三元组与字母间的组合,细心的你肯定会发现。到这里,我们本次的学习就告一段落了。
声明:本文例子均为为本人在Ubuntu kylin上实际演练过的,shell版本为bash.若有浏览到本文,可通过echo $SHELL查看自己的Linux shell版本。本文仅供初学Linux爱好者浏览大致内容,获取更多知识,请参考权威文献著作,本文不负任何法律责任。本文为作者原创,转载请注明出处。
更多推荐
所有评论(0)