学习文件和目录的权限管理,不仅在学习上对我们的帮助很大,而且在工作上帮助也很大,因为你对文件或目录设置了权限,其他用户只能根据你设置的权限对文件或目录进行浏览,修改,删除或执行,也正是如此,权限的管理很重要。下面我就对Linux的权限管理进行简单的介绍。
Linux下的文件类型
-:普通文件
d:目录文件
b : 块设备
c : 字符设备
l : 符号链接文件
p : 管道文件pipe
s : 套接字文件socket
文件属性
文件权限
文件的权限主要针对三类对象进行定义:
owner: 属主, u
group: 属组, g
other: 其他, o
每个文件针对每类访问者都定义了三种权限:
r 读(read) 4
w 写 (write)2
x 执行 (execute) 1
— 000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
三种普通权限分别在文件和目录中显示的含义不同
文件:
r: 可以查看文本中的内容
w: 可修改其内容,但不能删除文件本身
x: 针对二进制和脚本
目录:
r: 可以使用ls 查看此目录中文件列表,但不能访问文件,不能cd,也不能查看文件的元数据。
w: 可在此目录中创建文件,也可删除此目录中的文件(只一个w什么也做不了)
x: 可以进入dir,也可以访问dir中文件。(你要对目录进行访问,一般都要给r和x权限,或者都不给。)
X:大X是只给目录x 权限,不给文件x 权限(如果文件本身就带有x 权限,它就给)X只使用在目录上。
修改文件权限
chmod [OPTION]… OCTAL-MODE FILE…
-R: 递归修改权限
chmod [OPTION]… MODE[,MODE]… FILE…
MODE: :
修改一类用户的所有权限:
u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限
u+ u- g+ g- o+ o- a+ a- + –
新建文件和目录的默认权限
umask值可以用来保留在创建文件权限
新建FILE 权限: 666-umask 有奇数加一 , 偶数保留。
新建DIR 权限: 777-umask
如:
umask 125
666 110 110 110 777 111 111 111
125 001 010 101 125 001 010 101
642 110 100 010 652 110 101 010
一般默认为非特权用户umask是 002
root 的umask 是 022
umask: 查看
umask #: 设定
umask 002
umask –S 模式方式显示 (新建文件夹的默认)
umask –p 输出可被调用 ,打印出来,
umask的配置文件,全局设置: /etc/bashrc 用户设置:~/.bashrc或~/.bash_profile
修改umask值只当前终端有效,关机或重启umask值将重认为是默认值,修改umask值,想一直有效,只有修改它的配置文件才可以永久生效。
安全上下文
前提:进程有属主和属组;文件有属主和属组
(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限
特殊的文件权限
s suid 4
s sgid 2
t sticky 1
SUID SGID STICKY
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
权限位映射
SUID: user, 占据属主的执行权限位(root没有执行权限,也能想干啥就干啥)
u+s 非常危险,不要轻易改动 , suid 只对二进制程序生效,如果不取消,会一直生效。
s: 属主拥有x 权限
S:属主没有x 权限
权限设定:
chmod u+s FILE… (给属主 s 的权限)
chmod u-s FILE… (取消给属主的 s 权限)
SGID: group, 占据属组的执行权限位(root组没有x(执行权限),即使g+s也执行不了,root组有x,s,但对同属一个组的二进制程序,这个二进制程序对组有什么权限,那么用户就可以执行什么权限 )
(sgid :也可以作用于目录上,将使在该目录中新建文件或目录将自动继承该目录所属组。)
目录上的SGID 权限
默认情况下,用户创建文件时,其属组为此用户所属的主组。
一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组。
通常用于创建一个协作目录。
权限设定:
chmod g+s DIR… (给和属主同一个属组中的其他用户 s 权限)
chmod g-s DIR… (取消给和属主同一个属组中的其他用户的 s 权限)
s: group 拥有x 权限
S:group 没有x 权限
当u+s和g+s都存在时只继承一个权限, 优先继承u+s,
Sticky 位
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权。
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件。
Sticky: other, 占据other 的执行权限位(作用在目录上,o+t后其他用户只能在目录中创建文件,不能删除其他用户的文件,只能删除用户本身建的文件)
权限设定:
chmod o+t DIR…
chmod o-t DIR…
t: other 拥有x 权限
T:other 没有x 权
在工作或学习中,可能会不小心操作失误删除掉某些重要的文件,给我们造成一点损失,现在我给大家介绍一个可以让我们能够避免这种失误的命令,它就是chattr命令,chattr是给文件设置特定的属性,下面我来给大家介绍一下这个命令的使用。
chattr +A 锁定时间的属性2
chattr -A 解除+A的锁定
lsatter 显示特定属性
chattr +i 不能更改
chattr -i 去掉 +i 的属性
chattr +a 只能增加
chattr -a 去掉 +a 的属性
原创文章,作者:AN0519,如若转载,请注明出处:http://www.178linux.com/31169
评论列表(1条)
文章整体思路清晰,通过模拟场景对特殊权限应用场景有有了深刻的理解和认识,