手记

Linux系统文件权限体系详解

改变权限属性的命令chmod

  chmod是来改变文件或者目录权限的命令,但只有文件的属主和超级用户root才有这样的权限,通过chmod来改变文件或目录的权限有俩种方式,一种是通过权限字母和操作符表达式的方法,来设置权限,另一种是使用数字方法来设置权限。

  chmod    [数字组合]  文件名

r read 4
wwrite2
xexecute1
-
0
 

  举例子:创建一个ett.txt文件,并查看文件的权限。

  

  此文件的权限属主位代表的数字为4+2+0=6;属组位代表的数字为4+0+0=4,其他用户组代表的是4+0+0=4,所以数字组合为644

  例一,用chmod命令的数字方法来设置权限,如下:(次数字方法最为常用)

  

  例子二,用touch创建一个.sh文件,测试属主的权限,属组和其他用户组的权限不在一一测试。。。

  

  权限字母和操作符表达式

  

 

  

  小结:针对目录跟文件权限对比说明


文件目录
r(read)读取权限表示具有读取阅读文件内容的权限表示具有浏览目录的权限(注意:与进入目录的权限不同)
w(write)写入权限表示具有新增,修改文件内容的权限(注意:删除和移动文件和文件本身无关,看上级目录)表示具有新增,删除,移动目录的内文件权限(需要有x权限配合,要不没有r 有x ls -l 查看文件会显示文件名 ,但是文件属性都是一堆????)
x(execute)(执行权限)表示具有执行文件权限(普通用户同时还需要r权限,root用户不用r也能执行,文件本身也能执行才可以哦)表示具有进入目录的权限

 

既然我们可以更改权限了,那么有没有想过我们创建的文件或目录默认权限呢?umask可以分配默认权限,文件的默认安全权限为644,目录为755(Linux)

  

 

在linux下我们查看的方式有两种,一种可以直接输入umask,就可以看到数字形态的权限设置分数,一种则是加-S(Symbolic)参数,就能以符号类型的方式来显示出权限了,如下:

   

  Umask的设置很简单,只需要在umask命令后加想要拿掉的权限数字就行:

  

        Linux下的etc/profile和etc/bashrc中都有默认的umask设置,我们来看一下:

1 if [ SUID -gt 99] && [ " 'id -gn' " =" 'id =un' "];then2     umask 0023 else4     umask 0225 fi

 

         这个是在etc/profile中的一部分内容,可以看到根据不同的uid设置了不同的umask,其实在etc/bashrc文件中也有基本相同的这部分代码,我们可以在这两个文件中设置umask,那么二者有什么区别呢?如果实在etc/profile中修改,只有在重新登录用户的时候才会发生改变,而在etc/bashrc中修改的话要是切换目录就会发生改变,因为profile是在登录用户的时候调用的。一般不常永久改umask,只是临时更改用,没啥较大用途的命令(个人观点)

  Linux系统是如何计算出文件或目录权限的呢?


默认最大权限umask值用户创建文件的权限
文件创建文件umask为偶数的时候666[-rw-rw-rw-]022(全偶数)[-----w--w-]644 [-rw-r--r--](说明:偶数加减法  默认的最大权限 —umask 值=用户创建文件的权限)

创建文件umask为奇数的时候

(umask部分或者全部都为奇数)

666[-rw-rw-rw-]123(部分位为奇数) [--x--w--wx]644(以为umask的值123中又个都是奇数,因此在计算543的基础上加上101,即奇数对应的文件数字权限位分别加1即可)
目录 umask为奇数偶数都一样777[-rwxrwxrwx]022[-----w--w-]755[-rwxr-xr-x](说明:默认最大权限—umask值=用户创建目录的权限)

 

 可以看到上面在计算创建的文件和目录的默认权限的时候,我是这样认为的:666-022=644;777-022=755.,这样数字相减正好是用户创建的目录或文件的权限,(说明:如果是文件的话umask为奇数的话,需要在做减法后,奇数对应的文件数字权限上加1,目录则不需要,博主亲测望采纳!)更多计算方法请参考Linux默认权限的计算公式

如何设置UID、GID、STICK_BIT

SUID:置于 u 的 x 位,原位置有执行权限,就置为 s,没有了为 S .

chmod u+s  xxx # 设置setuid权限

chmod 4551 file // 权限: r-sr-x—x

 

SGID:置于 g 的 x 位,原位置有执行权限,就置为 s,没有了为 S .

chmod g+s  xxx # 设置setgid权限

chmod 2551 file // 权限: r-xr-s--x

 

STICKY:粘滞位,置于 o 的 x 位,原位置有执行权限,就置为 t ,否则为T .

chmod o+t  xxx # 设置stick bit权限,针对目录

chmod 1551 file // 权限: r-xr-x--t

说明:suid修改的是执行命令,而不是处理的目标文件,且仅对二进制文件或程序有效,二进制命令或程序需要有可执行权限,

loading....

 

技术的提升是量的积累,思想的提升是质的飞越

原文出处:https://www.cnblogs.com/liang-io/p/9567180.html

0人推荐
随时随地看视频
慕课网APP