文件和目录权限管理
以下三种用户需要设置文件和目录的权限:
- 文件所有者(owner):建立文件、目录的用户。(也就是文件创建者)
- 同组用户(group):属于同一组群的用户对属于该组群的文件有相同的访问权限。
- 其他用户(other):除了文件所有者、同组用户的其他用户。(既非以上两种用户,也非用户root)
文件所有者(u)、和文件所有者同组的用户(g)和其他用户(o)
对于每一类用户,又可以设置读(r)、写(w)和执行(x)3种权限。
权限介绍
文件、目录访问权限:
1)文件
读(r):允许读文件的内容
写(w):允许向文件中写入数据
执行(x):允许将文件作为程序执行
2)目录
读®:允许查看目录中有哪些文件和目录
写(w):允许在目录下创建(或删除)文件、目录,修改文件名字或者目录名字
执行(x):允许访问目录(用 cd 命令进入该目录,并查看目录中可读文件的内容) 文件、目录访问权限的表示方法:
(1)字母表示法
(2)数字表示法
其中r=4、w=2、x=1、-=0
rwx 这组权限就是4+2+1=7,,表示用户拥有读、写、执行的权限
r-x 这组权限就是5,表示用户具有读和执行的权限,没有修改的权限
- - - 表示用户读、写、执行的权限都没有
【例】/home的权限就可以用755表示
执行ls –l
命令可以查看到文件的权限信息。
说明:
该文件的创建者是hellod;
hellod对该文件有读、写、创建的权限;days文件的所有组是test,test组的所有用户对days文件有读、执行的权限,没有修改的权限;
其他用户对该文件有读、写、执行的权限
修改权限
改变文件所有权
:使用 chown 和 chgrp
chown命令
功能:更改属主和组。(改变文件的所有权,可以改变文件的所有者和文件所在的组)
格式:chown [-R] <用户[:组]> <文件或目录>
选项:-R:对目录及其子目录进行递归设置。
例如:
chown sjh:sjh result.txt
操作示例:
新建一个组,然后查看:
把days文件的所有者改为fff,所在的组改为test:
只改文件的所在组,不改所有者:
以下看看对目录的操作:
先查看现在的文件情况:
更改文件夹A的所属者和所属组:
注:因为A文件夹里有文件,要进行更改的话,就要递归地进行,所以要加上-R,
chgrp命令
格式:chgrp: [选项] [组名] [文件名]
其中group:组名或组代号
功能: 改变文件或目录组群
操作示例:
更改文件的所属组(chgrp命令也只能更改所属组):
更改文件夹的所属组:
修改文件的权限
:使用chmod命令
数字修改法
数字修改权限的格式:
chmod n1n2n3 <文件|目录>
其中n1代表所有者的权限,n2代表同组用户的权限,n3代表其他用户的权限。
功能:为指定文件或目录修改给定的数值访问权限。(把指定文件或目录修改为数值)
选项:n1n2n3三位数字表示的文件访问权限。
操作示例:
设置days文件的所有者拥有全部权限,其他人拥有执行权限:
字母修改法
格式:
chmod [ugoa][+-=][rwxugo] <文件名或目录名〉
功能:修改文件或目录的访问权限。(通过给用户或组加、减权限的方式来增加、删除相应的权限)
选项:
(1)用户标识
所有者(u)
同组(g)
其他人(o)
所有的人员(a)
(2)设定方法
+
增加权限
-
删除权限
=
分配权限,同时删除旧的权限
(3)权限字符
r
(读)
w
(写)
x
(执行)
u
(和所有者的权限相同)
g
(和所同组用户的权限相同)
o
(和其他用户的权限相同)
操作示例:
修改所有者的权限:
修改所有组的权限:
修改其他人的权限:
修改所有人的权限:
让一个的权限等于另一个的:
两个的权限可以一起设定:
另:桌面环境下修改文件权限
桌面环境下选中需要修改文件权限的文件、文件夹(目录),右击弹出快捷菜单,选中文件“属性”对话框。在“基本”选项卡中修改文件名,并可修改文件图标。在“权限”选项卡,可以修改文件的权限。
默认权限、隐藏属性、特殊权限
1.默认权限
umask命令
格式:umask [mask]
功能:设置文件或目录的默认权限
当用户创建文件或目录后,系统将设置一个默认权限,可通过命令umask查看或设置系统默认的权限。umask用一个3位2进制数来指定,由命令的mask可看出这是要屏蔽部分权限。当创建文件时,文件的权限就设置为创建程序请求的任何权限去掉umask屏蔽的权限。
由于系统默认屏蔽的权限为022,因此新创建的目录权限就为777-022=755,即新创建的目录的权限为755(用字符表示就是rwxr-xr-x),表示所有者具有所有权限,同组用户和其他用户具有读和执行权限,没有写的权限。新创建的普通文件权限为666-022=644,即rw–r--r–。
(注:r=4、w=2、x=1、-=0)
2.文件隐藏属性
1)查看文件隐藏属性:lsattr
2)修改文件隐藏属性:chattr
chattr [+-=] [ ai] 文件或目录名称
- a: 当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,必须要为root才能设置这个属性。
- i:不能删除,不能修改,不能改名。必须要为root才能设置这个属性。
举例:
touch attrtest
查看查看文件隐藏属性(此时,文件attrtest能改名,能删除,能修改):
lsattr attrtest
修改文件隐藏属性为a(此时,文件attrtest不能改名,不能删除,不能修改,只能在文件尾追加内容):
chattr +a attrtest
在文件尾追加内容,按Ctrl+c结束输入:
cat >>attrtest
修改文件隐藏属性为i(此时不能删除,不能修改,不能改名,也不能追加数据)
chattr +i attrtest
cat >>attrtest
3.文件特殊权限
文件特殊权限有以下三种:
SUID ,SGID,SBIT
1)SUID:Set UID
s这个标志出现在文件所有者的x权限上时,则就被称为Set UID
作用:
1、SUID权限仅对二进制程序(binary program)有效;
2、执行者对于该程序需要具有x的可执行权限;
3、本权限仅在执行该程序的过程中有效(run-time);
4、执行者将具有该程序拥有者(owner)的权限。
目的:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。
例如:
ls -l /usr/bin/passwd
ps:没太懂这行代码是要干嘛……
系统中的用户密码是保存在/etc/shadow中的,而这个文件的权限如上图,是----------。当用户执行passwd命令的时候,需要修改/etc/shadow文件。除了root用户能修改密码外,用户自己同样也能修改密码,为什么没有写入权限,还能修改密码,就是因为这个SUID功能。
passwd这个命令的执行过程:
1、因为/usr/bin/passwd的权限对任何的用户都是可以执行的,所以系统中每个用户都可以执行此命令。
2、而/usr/bin/passwd这个文件的权限是属于root的。
3、当某个用户执行/usr/bin/passwd命令的时候,就拥有了root的权限了。
4、于是某个用户就可以借助root用户的权力,来修改了/etc/shadow文件了。 5、最后,把密码修改成功。
注意:SUID只能运行在二进制程序(系统中的一些命令),对shell script(脚本)无效
因为脚本还是把很多的程序集合到一起来执行,而不是脚本自身在执行。
同样,这个SUID也不能放到目录上,放上也是无效的。
2)SGID:Set GID
s放到文件的所属用户组x位置上时,就是SGID。
功能:获得该程序所属用户组的权限
注意:
1、SGID对二进制程序有用;
2、程序执行者对于该程序来说,需具备x的权限;
3、SGID主要用在目录上;
如果用户在此目录下具有w权限的话,若使用者在此目录下建立新文件,则新文件的群组与此目录的群组相同。
例如:
ls -l /usr/bin/locate
注意:当用户执行locate命令的时候,需要读取/var/lib/mlocate/mlocate.db文件。
ps:没太懂这个例子是啥意思……
3)SBIT:Sticky Bit
针对others来设置的
SBIT(Sticky Bit)目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。
例如:
ls -dl /tmp
任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与 root能够删除自己的目录或文件。
/tmp 的permission是rwxrwxrwt
chmod 0777 /abc
rwxrwxrwx
chmod 777 /abc
rwxrwxrwx
chmod 1777 /abc
rwxrwxrwtThe “t” character in your permission indicates that only the user (and the root) that has created the file inside of /tmp folder can
delete/modify that specific file.suppose chmod 1777 /tmp here is 2 part
1 and 777
1 mean : this file only be deleted by root, its called sticky bit ( i guess) need to check again
rwx | rwx | rw | t |
---|---|---|---|
owner | group | other | only deleted by root |
so this file is user has full access
group has full access
other has read and write
but this file only be deleted by root
数字表示:
4 为 SUID = u+s
2 为 SGID = g+s
1 为 SBIT = o+t