1.文件权限
文件针对属主、属组、其他三类用户定义三种权限,即读(r)、写(w)、执行(x)
使用ls -l可以看到完整的权限信息。
通常我们用8进制数字来描述权限,如下:
r,用4代表,表示具有读取\阅读文件内容的权限
w,用2代表,表示具有新增、修改文件内容的权限;如果没有r,那么vi无法编辑,强制编辑的话会覆盖数据,但echo可以追加)
x,用1代表,表示有执行问价您的权限(1、文件本身要能够执行;2普通用户同时r权限才行;3root只要有r的权限就能执行)
-,用0代表,无权限
2.目录权限
针对属主、属组、其他三类用户定义三种权限,即读(r)、写(w)、执行(x)
r,用4代表,如果没有r,不能去取目录下的内容,也就是无法浏览(不能进到目录里,即无法cd dir)
如果没有x权限,ls列表时可以看到所有文件名。但是会提示无权限访问目录下文件。
如果ls -l列表,所有的属性会带有问号,也会提示无权限访问。
w,用2代表,如果没有w,不能修改、删除或创建目录内文件名的权限,需要x权限配合
x,用1代表,如果没有x,不能在目录内执行命令,cd命令将无法进入目录。但是没有r无法列表,没有w无法创建和删除。
3.权限修改
改变权限命令chmod =change mode
改变权限两种方法。
方法1:chmod 数字组合 文件名
rwxr--r--对应值755
方法2: chmod 用户类型 [+|-|=] 权限字符 文件名
+追加
-减去
=设置,抹去之前的,设置现在的
权限字符 r w x -
chmod u=rwx,g=rw,o=rx test.sh
-R目录以及文件权限全部修改
4.相关命令
修改属主、属组命令chown。
chown 新的用户属主名.新的属组名(可选) 目标文件名或目录名
如果是目录名需要使用-R参数
5.生产案例:文件和目录给什么权限,安全临界点
d(目录)755 root root
f(文件)644 root root
6.关于默认权限
创建目录和文件系统定义了默认权限。这个权限通过umask来修改。
系统默认权限是通过/etc/bashrc文件定义的。
属主用户默认设置是0022(普通权限一般看后三位)
其他用户默认设置是0002
权限计算公式:666-mask默认值
这个计算是有缺陷的,要根据情况进行如下修正。
计算出来的默认权限第一、二、三位计算结果如果是奇数,要加1
7.特殊权限位
有些命令是所有用户都可以用的,但是在权限上看是没有执行权限的。如passwd,修改密码所有用户都可以。
这一功能是通过特殊权限位setuid来实现。
[root@c0 oldboy]# ls -l `which passwd`
-rwsr-xr-x. 1 root root 30768 Nov 24 2015 /usr/bin/passwd
“s”(x位置值是s)执行时可以拥有属主的权限,仅限于执行命令中。
setuid用4表示
给rm添加这个权限
chmod 4755 /bin/rm
然后这个命令就可以被任意用户使用时,跟属主一样的权限
find / -type f -perm 4755 查找有setuid的文件,要慎重对待这个功能,它存在一定风险。
setgid是另一个特殊权限,它通过"chmod 2755 目录名"来设置。
如果想要其他用户创建的文件,在本目录内创建的文件属组必须跟本目录组一致
这可以用于多用户共享目录
最后一个特殊权限位是粘贴位。
用途:把一个文件夹的权限都打开,然后来共享文件,像/tmp目录一样。方便带来的安全隐患,生产环境一般不用。
ls -l,最后一位设置为t,没有执行权限用T
设置粘贴位命令:chmod 2755 文件名