【linux】权限设定

一. 文件与目录的权限

1. umask值

当我们新建一个文件或者目录时,它的默认值是多少呢?umask值就和这个有关,umask是指定“目前用户在新建文件或目录时候的权限默认值”。
如何查看umask值呢?直接输入umask即可查看。
在这里插入图片描述

在默认权限的属性上,目录与文件是不一样的。在linux下,一般文件的创建不应该有执行权限,一种说法是因为文件通常用于数据记录,不需要可执行权限;另一种说法是linux下没有杀毒软件,一般病毒都是以二进制可执行文件存在于我们系统当中,因此出于安全考虑默认文件的属性不带可执行权限。因此,文件与目录的默认权限如下:

  1. 用户新建文件
    则默认没有可执行权限x,只有读写权限rw。即文件默认最大的权限为666。
  2. 用户新建目录
    由于可执行权限x是指是否可以进入此目录,因此所有权限均开放。即目录默认最大的权限为777。

而 umask的值是指“该默认值需要减掉的权限”。比如当umask值为022时,相当于user没有被去掉任何权限,而group和other被去掉了2,即没有写权限。那么新建的目录与文件权限也对应不一样,如下图:
在这里插入图片描述
可以看到目录的权限此时为777-022=755,文件的权限此时为666-022=644。
那么umask值有什么用呢?比如一个文件需要同组的用户共同编辑,如果此时umask值是022,意味着我们新建的文件默认权限为644,即同组的用户只能读不能写。此时就需要修改一下umask值,使该文件的组用户拥有读写权限,即664。
在这里插入图片描述

修改umask之后再新建一个文件test2,可以看到与test1文件的权限不同,test2文件的组用户多了一个写权限w。当然umask值只是在这个shell下被修改了,重新开一个shell,查一下umask值仍为022。
在这里插入图片描述
想要永久修改umask值,那就需要以下操作:
vim /etc/profile 编辑系统文件
在这里插入图片描述
vim /etc/bashrc 编辑shell配置文件
在这里插入图片描述
注意:两个文件同时修改,第一个截图是未修改之前。
修改之后要让我们的修改立即生效,需要以下两句命令:
在这里插入图片描述
此时无论是在当前shell还是重新开的shell环境下查看umask,都是已经修改后的:
在这里插入图片描述

2. 三个特殊权限

  1. sticky 粘制位
    作用:只针对目录生效。当一个目录上有sticky权限时,用户在该目录下创建文件或者目录,仅有自己与root才有权力删除该文件。
    简单解释一下,假设/pub目录为公共存储目录,用户tom,harry拥有该目录w权限,这表示harry和tom对该目录内任何人新建的目录或者文件均可以删除、重命名、移动等。如果给/pub目录加上了sticky权限,则tom和harry只能针对自己创建的目录或者文件进行删除、重命名、移动,tom不能删除harry的文件,harry也不能移动tom的文件。
    设定方式:chmod o+t chmod 1xxx
    在这里插入图片描述
    查看/pub目录的权限后面多了一个t,表示添加sticky权限成功。
    在这里插入图片描述
    用户harry在公共存储目录/pub下查看,该目录下仅有一个文件file1属主属组都是tom。harry尝试删除tom的file1文件,权限受限。这就是sticky的功劳。

  2. sgid 强制位
    作用:
    对文件:只针对二进制可执行文件
    当文件上有sgid时,任何人执行此文件产生的进程都属于文件的用户组。
    对目录:当目录上有sgid时,任何人在此目录中建立的文件都属于目录的所有组
    设定方式:
    chmod g+s file|dir
    chmod 2xxx file|dir
    在这里插入图片描述
    给/pub目录设定sgid权限
    在这里插入图片描述
    用student用户在该目录下创建file2文件。可以看到file2文件的属主虽然是student,但是属组是root。
    在这里插入图片描述
    去掉/pub的sgid权限,再以student用户的身份创建file3。可以看到,没有了sgid权限后,student创建的file3属主属组都是student。

  3. suid 冒险位
    作用:只针对二进制可执行文件
    当文件上有suid时,任何人执行这个文件产生的进程都属于文件的所有者。
    简单解释一下,linux系统中,所有帐号的密码都记录在/etc/shadow中。这个目录的权限如下:
    在这里插入图片描述
    意思就是这个文件仅有root可读且仅有root可以强制写入而已。
    在这里插入图片描述在这里插入图片描述
    可以看到root用户可以对该文件可读强制写入,而切换到student用户后,没有读写权限。
    既然这个文件仅有root可以修改,那普通用户使用passwd命令可以修改自己的密码又是怎么回事呢?这就是suid的好处啦。
    在这里插入图片描述
    可以看到student用户对/usr/bin/passwd这个目录具有x权限,表示student可以执行passwd;passwd这个二进制可执行文件的所有者是root;有s权限,表示当student执行passwd的过程中,产生的进程属于passwd的所有者root;/etc/shadow可以被student所执行的passwd所修改,相当于是以root的身份修改shadow。
    对比一下上图的student用户执行命令cat /etc/shadow,权限受限。原因很简单,因为cat不具有s权限。
    在这里插入图片描述
    所以student可以执行cat;cat这个二进制可执行文件的所有者是root;没有s权限,student执行cat的过程中产生的进程不属于cat的所有者root;因此/etc/shadow不可以被student所执行的cat查看。
    设定方式:
    chmod u+s file
    chmod 4xxx file

猜你喜欢

转载自blog.csdn.net/potizo/article/details/83032026