文件的基本权限 特殊权限
1.文件的基本权限
权限的作用
通过设定权限可以达到以下三种访问限制权限:
只允许用户自己访问;
允许一个预先指定的用户组中的用户访问;
允许系统中的任何用户访问。
查看文件权限
我们可以通过ls命令来查看一个文件的具体信息,加参数 –l 可以查看这个文件的权限信息
-rw-r--r--. 1 root root 16 Jul 28 06:39 adjtime
解析
- rwx r-x r-x
类型 拥有者的权限 所属组的权限 其他人的权限
user1 user1 time FILENAME
拥有者 属组 最后修改时间 对象
其中:文件类型,
可以为p、d、l、s、c、b和 –
p表示命名管道文件
d表示目录文件
l表示符号连接文件
-表示普通文件
s表示socket文件
c表示字符设备文件
b表示块设备文件
引用
权限说明
对于文件:
r:读
w:写
x:执行
对于目录:
r:读(看到目录里面有什么) ls
w:建文件、删除、移动 touch mkdir rm mv cp
x:进入 cd cat
具体说明:
r (Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限.
w (Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x (execute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
-:表示不具有该项权限
结束:
对于文件的所有者或者是属主, root可以将这些权限改变为任何它想指定的权限;
例如:一个文件只有读权限,那么它就禁止任何普通用户对它的修改;如果文件只有执行权限,那么系统允许它像一个程序一样执行
文件拥有者
所有者-用户组-其他用户
所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。
用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。
其它用户:系统内的其他所有者用户就是other用户类
常见几种文件权限组成
-rwx------:文件所有者对文件具有读取、写入和执行的权限。
-rwxr--r--: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限
-rw-rw-r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
drwx--x—x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
每个用户都拥有自己的专属目录,通常放置在/home目录下
这些专属目录的默认权限为【rwx------】表示目录所有者本身具有所有权限,其他用户无法进入该目录
修改权限
修改权限的相关命令:chmod
作用:修改文件权限
用法:(中间的+、-表示添加还是删除该用户的对应权限)
u-w user 拥有者
g+x group 组
o=r other 其他人
a+x all 所有人
删除文件的写权限
[root@localhost ~]# chmod u-x a.txt
让所有者所在的组用户拥有执行的权限
[root@localhost ~]# chmod g+x a.txt
删除其它用户对文件的读权限
[root@localhost ~]# chmod o-r a.txt
修改文件权限为所有用户都可以读
[root@localhost ~]# chmod a=r a.txt
对目录的权限修改
[root@localhost ~]# chmod u-x /abc/
[root@localhost ~]# chmod u=rwx /abc/ # 一起修改多个权限
修改文件的拥有者及所属组
用到的命令:chown
作用:修改文件拥有者和所属组
语法:
chown user:group 对象
chown user 对象
chown :group 对象
-R :递归(目录下的所有内容全部更改,否则只修改目录)
[root@localhost ~]# chown -R test:test /abc/ # 修改abc 目录下的所有文件的用户和用户组
[root@localhost ~]# chown -R test /abc/ #只修改拥有者
[root@localhost ~]# chown -R :test /abc/ #只修改用户组
使用数字表示权限
rwx
r - - - w - - - x
100 010 001 二进制
4 2 1 十进制
组合 值
rw- 4+2=6
r-x 4+1=5
rw- r-- r-- rw-=6 r--=4 r--=4 rw-r—r--=644
[root@localhost ~]# chmod -R 644 /abc/
补码
[root@localhost ~]# touch 4.txt
[root@localhost ~]# ll 4.txt
-rw-r--r-- 1 root root 0 Mar 10 13:59 4.txt
为什么我们创建的文件的权限是644呢?
如何改变这个默认权限呢?
umask命令
umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字
对于文件来说,这一数字的最大值分别是6;系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限
对于目录来说,则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7
该命令的一般形式为:umask nnn 其中nnn为umask置000 - 777
计算方法:
文件默认权限=666-umask值 666-022=644
目录默认权限=777-umask 值 777-022=755
我们一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。
if [ $UID -gt 199 ] && [ "`id -gn `" = "`id -un `"];then
umask 002
else
umask 022
fi
2. 特殊权限
其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”.
因而用户若无特殊需求,不应该启用这些权限,避免安全方面出现严重漏洞,造成入侵,甚至摧毁系统!!!
特殊权限:
SUID:限定:只能设置在二进制可执行程序上面。对目录设置无效
功能:程序运行时的权限从执行者变更成程序所有者
SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会 继承上级目录的所属组
Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位
s对应的数值为
SUID SGID Stickybit
u=4 g=2 o=1
注意:
1、如果一个文件被设置了SUID或SGID位,会分别表现在所有者或同组用户的权限的可执行位上;
2、linux系统规定,如果原本该位上有x,则这些属性显示问小写字母(有效),否则显示大写字母(无效)
3、由于SUID和SGID是在执行程序(程序的可执行位被设置)时起作用,而可执行位只对普通文件和目录文件有意义,所以设置其他种类文件的SUID和SGID位是没有多大意义的
给文件加SUID和SUID的命令如下:
chmod u+s filename 设置SUID位
chmod u-s filename 去掉SUID设置
chmod g+s filename 设置SGID位
chmod g-s filename 去掉SGID设置
chmod o+t filename 设置SBIT位
chmod o-t filename 去掉SBIT设置
chmod 7777 filename 添加SUID,SGID,SBIT
chmod 7770 filename 去掉SUID,SGID,SBIT
文件权限显示区别
有x权限 无x权限
sst SST