权限总结:
1、 可读r:表示具有读取\阅读文件内容的权限;
2、 可写w:表示具有新增、修改文件内容的权限;
a、 若果没有r配合,那么vi编辑文件会提示无法编辑(但可以强制编辑),echo可以重定向或追加;
b、 特别提示:删除文件(修改文件名等)的权限式受父目录的权限控制,和文件本身权限无关;
3、 可执行x:表示具有执行文件的权限;
a、 文件本身要能够执行;
b、 普通用户同时还需要具备r的权限才能执行;
c、 root只要有x的权限就能执行。
目录读写执行权限说明:
1、 可读r:表示具有浏览目录下面文件及子目录的权限,即ls dir。
a、 如果没有x权限,不能进到目录里,即无法cd dir。
b、 如果没有x权限,ls列表时可以看到所有文件名,但是会提示无权访问目录下文件。
c、 如果ls -l列表,所有的属性会带问号,也会提示无权访问目录下文件,但可以看到所有文件名。
2、 可写w:表示具有增加、删除或修改目录内文件名(一般指文件名)的权限(需要x权限配合)。
3、 可执行x:表示具有进入目录的权限;例如:cd dir。但是没有r无法列表文件及目录,没有w无法新建和删除。
chmod命令总结:
设置特殊权限位:
chmod u+s xxx # 设置setuid权限
chmod g+s xxx # 设置setgid权限
chmod o+t xxx # 设置stick bit权限,针对目录
chmod 4775 xxx # 设置setuid权限
chmod 2775 xxx # 设置setgid权限
chmod 1775 xxx # 设置stick bit权限,针对目录
Note:文件默认权限为666,目录默认权限为777,umask 022
特殊权限位基本说明:
Linux系统基本权限位为9位权限,但还有额外3位权限位,共12位权限:
suid s(有x) S 4 用户对应的权限位(用户对应的3位上)
sgid s(有x) S 2 用户组对应的权限位(用户组对应的3位上)
sticky t(有x) S 1 其他用户对应的权限位(其他用户对应的3位上)
suid特殊权限的作用即当相应权限位上有该特殊权限时,对应位上的用户可以以root(或其他)的用户角色运行只有root(或其他)账号才能允许的程序或命令,或程序命令对应本来没有权限操作的文件等。
Note:仅对二进制命令程序有效,不能再shell等类似脚本文件上(因为shell脚本仅仅是调用二进制命令程序而已,因此,具体权限还需要看二进制命令本身);二进制命令程序需要有可执行权限x配合。
sgid
1、 linux里默认情况所有用户创建文件,默认用户和组都是自身。
2、 sgid可以让用户在此目录下创建的文件和目录,具有和此目录相同的用户组设置。
setgid位主要用在目录中,当为某个目录设置了setgid位以后,在该目录中新创建的文件具有该目录的所属组权限,而不是创建该文件的用户的默认所有者。这样,使得在多个用户之间共享一个目录中的文件变得简单。提示:用八进制数2000表示setgid权限位。
stick
针对目录来说的,如果该目录设置了stick bit(粘滞位),则该目录下的文件除了该文件的创建者和root用户可以删除和修改/tmp目录下的stuff,别的用户均不能动别人的,这就是粘滞位的作用。
Note:有时设置了s或t 权限,会发现它变成了S或T,这是因为在那个位置上没有给它x(可执行)的权限,这样的话这样的设置是不会有效的,可以先给它赋上x的权限,然后再给s或t 的权限。