我们可以通过 ls -l 命令查看文件的属性。总共分为7栏,下面将探索第一栏的详细内容。 第一栏的10个字符又可细分为4组,第一个字符表示的是文件的性质(文件、目录、连接文件等等); 第二到第十个字符表示的是权限 ,他们三个为一组,共分三组 ,第一组表示的是文件的所有者的权限 ,第二组表示的是文件的所属组的权限 ,第三组表示的是其他人的权限
我们再来看看文件具体权限表示的意思
r 可读 可以查看文件内容
w 可写 可以修改文件内容
x 可执行 可以执行文件
注:rwx这三个的位置不能改变,没有就用-代替。
目录权限的概念
对于普通文件的权限不必细说,但是对于目录的权限位则很容易混淆,这里要注意区分:
r (read contents in directory):读取目录里面的内容。
所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件。
w (modify contents of directory):编辑目录里面的内容。拥有更改该目录结构列表的权限:
主要包括
1、创建新的文件与目录
2、删除目录下面的文件与目录(无论该文件的权限是什么,这一点很重要)
3、对目录里面的文件与目录重命名
4、移动目录里面的文件与目录的位置
x (access directory):代表的是用户能否进入该目录成为工作目录。(相当重要的概念)
文件预设权限: umask
默认的情况下:
- 若用户创建“文件“则默认没有可执行(x)权限,即只有r、w这两个选项,也就是最大为666,默认权限如下:-rw-rw-rw-
- 若用户新建“目录“,则由于x与是否可以进入此目录有关,因此默认为所有权限均开放,即为777,默认权限如下:drwxrwxrwx
umask的分数指的是“该默认值需要减掉的权限“; 假设umask为022
- 新建文件时:(-rw-rw-rw-) - (-----w- -w-) = (-rw-r- -r--)
- 新建目录时:(drwxrwxrwx) - (-----w- -w-) = (drw-r-xr-x)
umask的配置文件为:/etc/profile 或 ~/.profile 或 ~/.bash_profile,可通过修改这些文件里的umask值,改变其默认的 umask。
特殊权限位:
SET UID对文件的作用,set uid只能设置文件;
SET UID的限制与功能:
- SUID权限仅对二进制程序(binaryprogram)有效,不能够用在shell script上面。
- 执行者对于该程序需要具有x的可执行权限
- 本权限仅在执行该程序的过程中(run-time)有效
- 执行者将暂时具有该程序所有者(owner)的权限
- 对目录无效
SUID的目的就是:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。在Linux/Unix下,可执行文件可以被setUid,这使得任意使用者在执行该文件时,都绑定了文件拥有者的权限。就好像文件带了一把尚方宝剑一样,默认情况下,用户执行一个指令,会以该用户的身份来运行进程。指令文件上的强制位,可以让用户执行的指令,以指令文件的拥有者或所属组的身份运行进程。注:这个SUID只能运行在二进制的程序上(系统中的一些命令),不能用在脚本上(script),因为脚本还是把很多的程序集合到一起来执行,而不是脚本自身在执行。同样,这个SUID也不能放到目录上,放上也是无效的。setUid文件通常用来提升使用者的权限.最有代表性的su命令.普通用户可以可以执行该命令,使自己升级为root。
SET GID 强制位的作用:
默认情况下,用户建立的文件属于用户所在的组。但是目录设置了setgid,表示在此目录中,任何人建立的文件,都会属于当前目录所属的组。如果用户在此目录下具有w权限的话,若使用者在此目录下建立新文件,则新文件的群组与此目录的群组相同。
对于目录来说:
- 用户若对于此目录具有r与x的权限时,该用户能够进入此目录
- 用户在此目录下的有效用户组(effective group)将会变成该目录的用户组
- 若用户在此目录下具有w的权限(可以新建文件),则用户所创建的新文件的用户组与此目录的用户组相同。
对于文件来说:
- SGID对二进制程序有用
- 程序执行者对于该程序来说,需具备x的权限
- 执行者在执行的过程中将会获得该程序用户组的支持。
Sticky Bit 只针对目录有效。其作用是:
l 当用户对于此目录有w,x权限时,建立的文件或目录仅有自己与root才有权力删除。
换句话说:当甲用户对于A目录来说具有群组或其他人的身份,并且拥有该目录的w权限,这表示甲用户对该目录内任何人建立的目录或文件均可进行“删除、更名、移动”等操作。不过,如果将A目录加上了 Sticky Bit 权限位时,则甲只能够针对自己建立的文件或目录进行“删除、更名、移动”等操作,而无法改动其他人的。
特殊权限位设置方法:
第一种:八进制表示法
4 为 SUID
2 为 SGID
1 为 SBIT
[root@localhost ~]# chmod 4755 /bin/rm
第二种:助记法
u+s
g+s
o+t
[root@localhost ~]# chmod u+s myfile.txt