一、文件安全与权限
点击此处打开《Linux与Unix Shell编程指南》本章pdf文档
1.1 文件
当你创建一个文件的时候,系统保存了有关该文件的全部信息,包括:
a、文件的位置; b、文件类型; c、文件长度;
d、哪位用户拥有该文件,哪些用户可以访问该文件。
e、i结点; f、文件的修改时间; g、文件的权限位。
1.2 文件类型
d 目录
l 符号连接(指向另一个文件)
s 套接字文件
b 块设备文件
c 字符设备文件
p 命名管道文件
- 普通文件,即不属于以上几种类型的文件。
1.3 权限
当新创建一个文件时系统并没有赋于属主执行权限,这是出于加强系统安全的考虑,必须手工修改这一权限位。
1.4 修改权限位
a、符号模式
chmod [who]operator[permission] filename
who的含义
u 文件属主权限
g 同组用户权限
o 其他用户权限
a 所有用户权限
operator的含义:
+ 增加权限
- 取消权限
= 设定权限
permission的含义
r 读权限
w 写权限
x 执行权限
s 文件属主和组set-ID
t 粘性位*
l 给文件枷锁,使其他用户无法访问。
如果在一个文件列表看到“t“,那么意味这该脚本或程序在执行时会被放在虚存中。
如果在一个目录上出现“t“,意味这该目录中的文件只有其属主才可以删除,其他用户不能。
例如:
设置一个用户的权限: chmod u+x myfile
设置两个用户的权限: chomd u+x o-w myfile
b、绝对模式
chmod [mode] file
其中mode是一个八进制数。
八进制数 含义
0400 文件属主可读
0200 文件属主可写
0100 文件属主可执行
0040 同组用户可读
0020 同组用户可写
0010 同组用户可执行
0004 其他用户可读
0002 其他用户可写
0001 其他用户可执行
由此可知,文件属主、同组用户和其他用户分别能够具有的最大权限值为7,即4+2+1=7,指可读、可写、可执行。
例如:
如果希望一次设置目录下所有文件的权限,可以用:
chmod 644 *
这将使文件属主具有读和写的权限,同组用户和其他用户只有读的权限。
还可以通过使用-R选项连同子目录下的文件一起设置:
chmod -R 664 /usr/local/home/dave/*
以上强调的是文件的权限,下面说明目录权限
r 可以列出该目录中的文件
w 可以在该目录中创建或删除文件
x 可以搜索或进入该目录
设置方法同设置文件权限方法一样,有以下两点注意:
a、如果把同组用户或其他用户针对某一目录的权限设置为--x,那么他们将无法列出该目录中的文件。如果该目录中有一个执行位置位的脚本或程序,只要用户知道它的路径和文件名,仍然可以执行它。
b、目录的权限将会覆盖该目录中的文件的权限。例如,目录docs具有权限:
drwxr--r-- 1 louise admin 2390 Jul 23 09:44 docs
而该目录下的文件pay的权限为:
-rwxrwxrwx 1 louise admin 5567 Oct 3 05:40 pay
那么admin组的用户将无法编辑该文件,因为它所属的目录不具有这样的权限。
1.7 chown和chgrp
chown用来更改文件的属主,chgrp用来更改文件属主所在的组。只有文件的属主和系统管理员可以改变文件的所有权,一旦将文件的所有权交给另外一个用户,就无法再重新收回它的所有权。只有求助于系统管理员。更改用户或用户组时相应的suid也将被清除。
格式:chmod -R -h owner file
owner可以是合法的用户名或者用户ID。
-R意味着对所有子目录下的文件也都进行同样的操作。
-h意味着在改变链接文件的属主时不影响该链接所指向 的目标文件。
注意:
通过groups或id命令找出自己属于哪些用户组。
通过groups [user_name]查出user_name所在用户组。
1.8 umask
作用:
当最初登录到系统中时,umask命令确定了你创建文件的缺省模式,这一命令实际上和chmod命令正好相反。
注意:
1、设置了umask值后,相应的改变直到退出该shell或使用另外的umask命令之前一直有效。
2、对于文件来说,系统不允许你在创建一个文本文件时就赋于它执行权限,所以创建一个文本时的3个x位都为"-",必须在创建后用chmod修改,所以umask值最大为6。
3、对于目录来说,允许设置执行权限,所以umask值最大为7。
命令umask用来查看当前umask值。
命令umsak number用来设置umask值。
umask值与权限:
umask 文件 目录
0 6 7
1 6 6
2 4 5
3 4 4
4 2 3
5 2 2
6 0 1
7 0 0
记忆方法:
假如当前umask值为021:
新创建文件的默认最大权限 rw-rw-rw- 666
新创建目录的默认最大权限 rwxrwxrwx 777
修改umask后新创建文件的最大权限 rw-r--rw- 646
修改umask后新创建目录的最大权限 rwxr-xrw- 756