一切皆文件是linux重要的哲学思想之一,用户通过帐号密码登录系统以获得系统的使用权,在系统内部是通过UID来唯一标识一个用户,那么一个用户是否可以去访问或者使用某个文件资源,就取决于该用户是否有对应的权限。
在linux系统上,使用ls -l选项可以看见每一个文件的权限都分为三段,分别对应文件属主,属组,其它。权限位由r,w,x(读写执行)组成。
权限匹配流程:首先检查执行操作的用户是不是文件的属主,如果是,就应用文件属主 的权限。否则就检查用户是不是文件属组中的用户,最后就应用其它用户持用 的权限
对于目录文件而言,r读权限代表用户可以使用ls命令查看目录中包含 的文件
w写权限代表用户可以在该目录下创建文件,除root用户外,一般用户还需对该目录有x权限
x执行权限代表用户可以cd进该目录执行后续操作
对于一般文件而言,r读权限代表用户可以使用诸如cat类的命令查看文件内容,但是该用户需要对该文件所在目录有x权限
w写权限代表用户可以增删查改文件内容,同上,对所在目录须有执行权限
x执行权限代表用户可以将该文件写在命令提示符下执行,同上
特殊权限:
SUID:一般是对于可执行文件使用该特性,前面说过,在用户匹配好对应权限后,如果是可执行文件,那么该执行起来的进程的属主就是启动者的身份(UID),而一旦文件拥有SUID之后,执行起来 的进程的属主就是该文件 的属主,而不是启动者(但必须启动者有执行权限)。
作用:改变了启动进程的身份,就改变了该进程可以访问的对象。
chmod u+s filename
chmod u-s filename
SGID:一般是对目录文件使用,一般情况用户创建的文件的属主和属组就是该用户和其基本组,当在一个有SGID权限的目录下创建文件时,文件的属组就不再是用户的基本组,而是该目录的属组。
作用:在项目中对于一个目录的共享,将用户全部加入一个组,再将该目录的属组改为该组,那么每一个用户就可以使用属组 的权限去访问非自己的去创建文件
chmod g+s directory
chmod g-s directory
stiky:当使用SGID时,在方便同一组内成员共享信息的同时导致了用户在该目录可以删除其它用户创建的文件,因此stiky的作用就是当给目录添加stiky权限后,用户在该目录下只能删除自己创建的文件,不能删除其它用户创建的文件
chmod o+t directory
chmod o-t directory