打赏 jQuery火箭图标返回顶部代码

Linux系统文件权限体系详解

改变权限属性的命令chmod

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

  chmod    [数字组合]  文件名

r  read  4
w write 2
x execute 1
-   0
 

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

  

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

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

  

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

  

  权限字母和操作符表达式

标识 u(user) g(group) o(others) a(all) + - =
含义 用户 其他 所有用户 增减权限 减少权限 重新分配权限

  

 

  

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

  文件 目录
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' "];then
2     umask 002
3 else
4     umask 022
5 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....

 

posted @ 2018-09-01 11:29  浪漫De刺猬  阅读(3213)  评论(0编辑  收藏  举报