LINUX的权限中,分为目录权限和文件权限,两者不是一回事
目录权限:
r:能够列出该目录下的所有的文件,仅仅是能够查看目录下的文件列表
w:能够在该目录下进行创建和删除文件
x:可以搜索到并且访问该目录
(根据目录权限相应能够做到的事情可以看出,拥有目录权限工作时,目录中的文件的内容是隐藏的,也就是说,当我们获得目录权限的时候,不能对文件的内部的内容进行操作,只能对文件的这个整体做一些改动,比如创建文件,删除文件等等)
如果非属主用户对一个目录的权限是--x,那么,如果这个目录下有一个可执行的shell脚本文件,那么只要用户知道这个目录的绝对路径, 依然可以执行。只不过此用户不会再拥有r,w的权限。
目录的权限将会覆盖该目录中文件的权限,比如一个文件的权限都是rwx,但是它所在目录的权限除了属主是rwx,其余的都是r--,这样的话,即使这个文件可以被其他用户修改或者执行,但是当他们访问到这个文件的上一级的目录的时候,就会被目录相应的权限所阻止。
SUID/GUID:
suid这两种权限位在显示系统中是不存在的,因为他们会造成安全隐患。他们意味着,如果超级用户写了一个shell脚本的话,那么其他用户在执行这个脚本的时候,会有着与属主 相同的权限。但是好的一方面是,如果确实需要让普通用户对某个脚本以管理员的 身份来执行的话,比如数据库的备份,如果直接变更普通用户的权限,风险可能会更大,这时候这个办法就有用了,当普通用户执行完对这个脚本的时候,它的权限就又会变成普通用户
guid是在执行这个脚本的时候获得文件属主同组用户的权限。
如果希望设置suid,那么就在chomod的时候,在相应的权限位之前的一位加上4,设置guid加2,两者同时设置,加6.之后再文件的执行权限上,就会看到S标记
chmod这个命令,在对文件设置权限组合的时候不会检查任何东西,比如设置执行权限的文件可能根本就不是一个可执行文件,而是一个文本。