一、文件的基本权限
权限:
r, w, x
对于文件来讲,
r::可读,可以使用类似cat等命令查看文件内容;
w:可写,可以编辑或删除此文件;
x:可执行,exacutable,可以命令提示符下当作命令提交给内核运行;
对于目录来讲,
r: 可以对此目录执行ls以列出内部的所有文件;
w: 可以在此目录创建文件;
x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;
与用户权限相关的命令有
chown chgrp chmod umask
二、文件的特殊权限
特殊权限
passwd:s
SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者;
chmod u+s FILE
chmod u-s FILE
如果FILE本身原来就有执行权限,则SUID显示为s;否则显示S;
SGID: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组;
chmod g+s FILE
chmod g-s FILE
develop team, hadoop, hbase, hive
/tmp/project/
develop
Sticky: 在一个公共目录,每个都可以创建文件,删除自己的文件,但不能删除别人的文件;
chmod o+t DIR
chmod o-t DIR
解释下:
1.当一个用户执行某一个命令时,就是相当于开启一个进程,指定该命令的文件。
2.如果执行的该命令的文件没有s特殊权限时,就是以当前进程的用户的权限来进行执行操作。
结果:对于执行的目标文件来讲,根据当前用户的所属范围返回结果。
3.如果执行的该命令的文件包含有s特殊权限时,就是以当前进程中执行的命令文件本身来执行操作。
结果:如果执行的命令文件包含有root权限,则就可以操作目标文件。
比如:普通用户liukai,开启一个进程,需要执行 cat /etc/shadow
执行过程:查看cat命令,是否包含s特殊权限,
liukai@ubuntu:~$ ls -alh /bin/cat
-rwxr-xr-x 1 root root 46K Nov 19 2012 /bin/cat
因为没有s特殊权限位,所以只能以当前进程的用户权限执行
liukai@ubuntu:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied
liukai@ubuntu:~$ ls -alh /etc/shadow
-rw-r----- 1 root shadow 1.4K Aug 18 06:22 /etc/shadow
因此无权限查看。
同理当我执行/usr/bin/passwd命令时,
liukai@ubuntu:~$ ls -alh /usr/bin/passwd
-
rwsr-xr-x 1 root root 41K Sep 12 2012 /usr/bin/passwd
该文件中包括s特殊权限,当开启进程时,它会以passwd文件本身的权限去执行命令。由于其文件本身的权限位
root,所以可以执行。
附录鸟哥关于SUID和SGID、SBIT的讨论
SUID:
1.SUID仅对二进制程序有效。
2.执行者对于该程序需要具有x的可执行权限。
3.本权限仅在执行该程序的过程中有效。
4.执行者将具有改程序所有者的权限。
SUID不能用于shell script上面,对目录也无效。
SGID:
对文件:
SGID对二进制有效。
程序执行者对于程序来讲,需要具有x的权限。
执行者在执行的过程中将会获得该程序用户组的支持。
对目录:
用户若对于此目录有r与x的权限时,该用户能够进入此目录。
用户在此目录下的有效用户组将会变成该目录的用户组。
若用户在此目录下具有w的权限,则用户所创建的新文件的用户组与此目录的用户组相同。
Sticky Bit
1.当用户对于此目录具有w、x权限时,既具有写入的权限。
2.当用户在该目录下创建文件或目录时,仅有自己与root才有权删除该文件。