Linux系统的文件权限,规定了拥有者(owner),所属组成员(group )以及其他成员(others) 三种身份群体的权限——读(r)写(w)执行(x)
文件和目录的权限
文件属性
我们可以使用 ls-l 命令查看文件属性:
第一列的数据我们可以将其分为几部分查看:
【文件类型】+【拥有者权限3位】+【所属群组成员权限3位】+【其他人权限3位】
第一个字符代表文件类型,【d】代表文件为目录,【-】则是文件
接着三位【rwx】一组,代表相应身份对象的权限,若为【-】则代表无权限
权限使用说明
那么,设置这些权限有何意义呢?
总结出以下几点原因:
1.保护系统:Linux中有些文件是不允许管理员外的其他用户查看和修改的,因此,它会将权限设置为【---------】,表明只有root才可以读写。这增强了系统的安全性。
2.团队共享:软件开发时,常常需要团队合作,可以将开发同一项目的团队放到一个群组中,将共享的文件权限设置为【rwxrws—】
同时,我们还应该注意区分权限在文件和目录方面作用的异同点。
例一:有个目录m1它的权限是这样的
m1目录下有两个文件f1 f2, 权限 ——可读可写
尝试对f1执行以下操作:f1不可删除
原因是,尽管f1本身带有w权限,但是它所在的目录m1没有w的权限,故只能修改f1内容,但不能删除f1
例二: m1只有r权限,还能否查看m1目录下的文件列表吗?
需要加入x权限
综上可知,要开放目录给任何人浏览时,至少要给予r以及x的权限。
权限的修改
chgrp 修改文件所属用户组
chgrp 【-R】组名 文件名
-R 递归修改
chown 修改文件拥有者
chown 【-R】拥有者名 文件名
chown 也可以同时修改拥有者和所属组,
chown root:root filename 将filename的拥有者和所属组设为root
chmod 修改文件权限
修改可分为数字类型修改和符号类型修改
数字类型:
r w x分别对应的权重数字为4 2 1
如修改file 文件的权限为-rwxrwx—
chmod 770 file
符号类型:
user u
group g
others o
all a
用英文符号ugoa分别代表身份,配合符号+(增添)-(移除)=(设置)使用
如修改file文件的权限为-rwxrwx—
chmod u,g=rwx file
如所有人都有r权限
chmod a+r file
默认权限
umask介绍
当用户建立一个新的文件或目录时,它的默认权限值是umask指定
输入umask可查看默认权限,后面接四位数,数字大小代表需拿掉的权限
新建文件夹默认权限=0666
新建目录默认权限=0777
如:0022
建立文件时: -rw-r–r–
建立目录时: drwxr-xr-x
粘滞位
我们都知道,假设用户A对于一个指定的目录M是其他人的身份,而A具有该目录w的权限,此时,A用户便可以删除M其下的任何文件,而不关心的是文件的拥有者;这会势必会引起争议,假如ABC在一个群组,共享M中的文件,由于A不能随意修改M中其他人创立的文件,却能删除任何人创建的文件!
因此,使用粘滞位,即在o对应权限x的位置上+t
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
保护了文件不被误删或恶意删除
粘滞位也叫SBIT权限,只针对目录有效
例如,/tmp 的默认权限是加了粘滞位的,尝试以root身份在/tmp下建立文件test,权限设为-rwxrwxrwx, 以一般身份登录,尝试删除test
因/tmp目录中设置了粘滞位,只允许root和文件/目录建立者删除目录中文件