文件权限的管理

ls -l中显示的内容如下:

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

  10个字符确定不同用户能对文件干什么

  第一个字符代表文件(-),目录(d),链接(l)

  其余字符每3个一组(rwx) 读(r) 写(w) 执行(x)

第一组rwx : 文件拥有者的权限是读、写和执行

第二组rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行

第三组r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行 可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7

1 表示连接的文件数(如果是文件夹也就是目录的话,表示:该目录下面的文件数)

root 用户

root 组

1213 文件大小(字节)

Feb 2 09:39 最后修改日期

abc 文件名

现在我用jiesen登陆创建文件: 例如:-rw-r--r-- 现在我用shitailong用户进入到jiesen的目录下面,结果如下: 结果可以进入到该目录下面,原因是jiesen目录的权限如下: 对照上面的分析:其他组的用户对jiesen目录有可读的权限。

Linux下使用对目录权限的管理,不能一个用户进入到另外一个用户的目录。

现在jiesen允许shitailong进入到自己的主目录下面,并且有可写权限该如何操作?,如下图所示:

注意:不能使用shitailong开修改jiesen的目录权限。只能有jiesen和root能修改。 这样设置的话等于是完全公开,其他组的用户也可以进入到该目录下面,所以我要该用户本身以及该用户所在的组可以进入,其他组的用户不允许进来。 然后,我用gz用户登录,看看能不能进入到jiesen目录中,结果如下 注意:这里只是修改文件夹(目录的)权限,目录下面的文件权限没有修改。

补充:

改变权限的命令:

chmod 改变文件或目录的权限

  chmod 755 abc : 赋予abc权限rwxr-xr-x

  chmod u=rwx,g=rx,o=rx abc : 同上 u=用户权限 g=组权限 o=不 同组其他用户权限

  chmod u-x,g+w abc : 给abc去除用户执行的权限,增加组写的权限

  chmod a+r abc :给所有用户添加读的权限

改变拥有者(chown)和用户组(chgrp)命令

  chown xiaoming abc : 改变abc的拥有者为xiaoming

  chgrp root abc : 改变abc所属的组为root

  chown root ./abc : 改变abc 这个目录的所有者是root

  chown -R root ./abc : 改变abc 这个目录及其下面所有的文件和目 录的所有者是root

umask

一 权限掩码umask

umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读(4)+写(2)+执行(1),同组的和其它用户有读写权限)

二 umask的作用

默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认权限是755(7-0,7-2,7-2),可以用ls -l验证一下哦 现在应该知道umask的用途了吧,它是为了控制默认权限,不要使默认的文件和目录具有全权而设的 三 修改umask值

知道了umask的作用后,你可以修改umask的值了,例如:umask 024则以后建立的文件和目录的默认权限就为642,753了

四 将umask值保存到环境文件

若要长期修改umask的值,可以把它写进/etc/profile或~/.profile或~/.bash_profile中,大家应该知道这几个文件是干什么用的吧。

您知道当你建立一个新的档案或目录时,他的预设属性会是什么吗?呵呵!那就与 umask 有关了!那么 umask 是在搞什么呢?基本上, umask 就是指定『目前使用者在建立档案或目录时候的属性默认值』,那么如何得知或设定 umask 呢?他的指定条件以底下的方式来指定:语法:

[root @test root]# umask 0022 [root@vbird test]# umask 002 <==后面接 3 个数字! [root@vbird test]# umask 0002

说明:查看 umask 数值为直接输入 umask 即可,而设定呢?没错!就是 umask 之后接三个数字!那么如何来指定呢?主要还是跟 Linux 的档案属性(那九个属性, r, w, x )有关的,而且是以分数的那一个关系为例的,而有底下的规则为辅:

若使用者建立为『档案』则预设『没有可执行 ( x ) 项目』,亦即只有 rw 这两个项目,也就是最大为 666 分

–rw-rw-rw-

若使用者建立为『目录』,则由于 x 与是否可以进入此目录有关,因此预设为所有权限均开放,亦即为 777 分

drwxrwxrwx   那么 umask 指定的是『该默认值需要减掉的权限!』因为 r、w、x 分别是 4、2、1 分,所以啰!也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6 分,而要拿掉执行与写入的权限,也就是 3 分,这样了解吗?请问您, 5 分是什么?呵呵!就是读与执行的权限啦!如果以上面的例子来说明的话,因为 umask 为 002 ,所以 user, group 并没有被拿掉属性,不过 others 的属性被拿掉了 2 ( 也就是 w 这个属性 ),那么由于当使用者:   建立档案时:(-rw-rw-rw-) – (——–w-) ==> -rw-rw-r– 建立目录时:(drwxrwxrwx) – (——–w-) ==> drwxrwxr-x   不相信吗?你只要使用 touch test 然后看看这个 test 的档案属性,就可以知道了!那么如何看你这个使用者目前的 umask呢?直接下达 umask 即可!实作看看先:   [root@vbird test]# umask 0002 [root@vbird test]# touch test1 [root@vbird test]# mkdir test2 [root@vbird test]# ls -l -rw-rw-r– 1 root root 0 Oct 22 00:00 test1 drwxrwxr-x 2 root root 4096 Oct 22 00:00 test2/

发现了什么?呵呵! Test1 的属性为 666-002 = 664 !正确吗?是的!正确!而 test2 这个目录呢?就是 777-002 = 775 !也正确!

[root@vbird test]# umask 003 [root@vbird test]# touch test3 [root@vbird test]# mkdir test4 [root@vbird test]# ll -rw-rw-r– 1 root root 0 Oct 22 00:03 test3 drwxrwxr– 2 root root 4096 Oct 22 00:03 test4/

嘿!属性又跟刚刚的不一样啰!仔细推敲一下为什么呦!test3 666-003 =663,这是怎么一回事?! 663 应该是 -rw-rw–wx 才对啊!怎么会是上面的属性!呵呵!这里就要特别的给他强调了!『尽量不要以数字相加减啦!』容易造成类似上面的问题!你应该要这样想(-rw-rw- rw-) – (——–wx)=-rw-rw-r–这样就对啦!了解了吗?不要用十进制的数字喔!够能力的话,用二进制来算,不晓得的话,用 rwx 来算喔!

由上面的例子您应该很轻易的就可以发现 umask 的用途!而这个 umask 可以在 /etc/bashrc 里面进行修改喔!预设的情况之下, root 的 umask 为 022 而一般使用者则为 002 ,因为可写的权限蛮严重的,因此预设都会拿掉这个权限!此外,因为 root 比较重要!所以为了安全的需求,其同群组的写入属性就被拿掉了!这东西对于安全性也有一定程度的贡献呦!

例如,对于u m a s k值0 0 2,相应的文件和目录缺省创建权限是什么呢? 第一步,我们首先写下具有全部权限的模式,即7 7 7 (所有用户都具有读、写和执行权限)。 第二步,在下面一行按照u m a s k值写下相应的位,在本例中是0 0 2。 第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。 稍加练习就能够记住这种方法。 第四步,对于文件来说,在创建时不能具有文件权限,只要拿掉相应的执行权限比特即 可。 这就是上面的例子,其中u m a s k值为0 0 2:

  1. 文件的最大权限rwx rwx rwx (777)
  2. umask值为0 0 2 – - – - – - -w-
  3. 目录权限rwx rwx r-x (775) 这就是目录创建缺省权限
  4. 文件权限rw- rw- r– (664) 这就是文件创建缺省权限 下面是另外一个例子,假设这次u m a s k值为0 2 2:
  5. 文件的最大权限rwx rwx rwx (777) 2 ) u m a s k值为0 2 2 – - – -w- -w-
  6. 目录权限rwx r-x r-x (755) 这就是目录创建缺省权限
  7. 文件权限rw- r– r– (644) 这就是文件创建缺省权限 umask的计算方法: 就是直接将权限数字代表的栏位写出来,进行对比判断,比较简单直观,适用于知道umask然后计算权限的考题,而对于给予权限然后计算umask的题目第一种方法可做参考:
隐藏权限lsattr_chattr

chattr命令可以修改文件的特殊权限(附加)。 (+ - =)表示增加、减少和设定

(2)i:增加该选项后,表示文件或者目录不能删除,重命令,设定链接,写入以及新增数据,和修改创建时间。 (3)a:增加该选项后,文件或者目录都只能进行追加。但可以在目录下创建的文件中写入数据 lsattr命令用来查看文件或者目录的特殊权限。加上-a 查看所有的文件(包括隐藏文件) 1.txt~这样的文件表示在vi1.txt时会自动创建同文件名的缓存文件。当保存退出时,会把写入的数据覆盖到1.txt文件后才会被删除。

lsattr -R 可以查看目录下所有的子目录或者文件。