文件权限
[root@CentOS6 ~]# ll 3.txt
-rwxrw-rw-. 3 root root 16 Jul 27 10:15 3.txt
- 前3位:定义属主(user)的权限
- 中3位:属组的(group)权限
- 后3位:不是属主也不是属组的其他人(other)的权限
文件:
r: 可使用文件查看类工具获取其内容
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程
目录:
r: 可以使用ls 查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l 查看此目录中文件列表,可以cd进入此目录
X:只给目录x权限,不给文件x
常用于-R递归给目录及其子目录时防止给予文件执行权限
Linux文件系统上的特殊权限
- 任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限
- 决定命令有哪些操作取决于用户的权限大小,我们知道在Linux系统中常用的权限有三种 r,w,x 我们可以对user ,group,other这三种可以设定权限。
- 我们除了r,w,x这三种权限也有三种特殊的文件权限分别是SUID,SGID,STICKY (粘滞位)
SUID
- suid 只能对二进制可执行程序有效
- 用户运行该程序时,自动继承该程序所属主的权限
- SUID 设置在目录上无意义
- 在常用命令中有一个修改用户密码的命令passwd 它就是一个有suid权限的命令
[root@centos7 ~]# ll `which passwd`
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
- 我们知道修改用户密码需要改/etc/shadow ,但是普通用户是无法查看和修改、etc/shadow文件的 ,但是用passwd却可以间接修改,这是因为passwd文件上在所有者上有个S的权限
- 当二进制程序有S权限时,用户使用这个二进制程序的时候会继承所有者的权限。
- 当然如果把所有者上的执行权限去掉,那么S权限则显示错误,所以s权限时基于执行权限的
- 由于这只能对二进制程序文件有效我们也可以在vim上加s,这样其它用户都可以编辑任何文件都是用所有者编辑的,危害很大要慎用。
如何添加权限
普通加法 chmod u+s /file
删除权限 chmod u-s /file
数字加权 chmod 4777 /file
删除权限 chmod 777 /file
SGIU
- 作用在二进制程序上:执行sgid权限的程序时,此用户将继承此程序的所属组权限
- 作用在目录上:在此目录新的文件的所属组,将自动继承目录的所属组
- 默认情况下,用户创建文件时,其属组为此用户所属的组,一旦某目录被设定了SGID ,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组
- 通常用于创建一个协作目录,用于同组内的用户,可互相修改对方文件,协同工作
如何添加权限
加chmod g+s /file
删除chmod g-s /file
加chmod 2777 /file
STICKY (粘滞位)
- 只能作用在目录
- 具有sticky权限的目录,普通用户只能自已删除自已的文件
- 防止某些用户对该目录有权限,则胡乱删除该目录下的(属主是自己或属主不是自己)文件
- /tmp 目录就是
[root@centos6 ~]# ll -d /tmp/
drwxrwxrwt.36 root root 4096 Nov 18 06:31 /tmp/
如何添加权限
加 chmod o+t /file
删除 chmod o-t /file
加 chmod 1777 /file