文件安全与权限

一个文件一经创建,就具有三种访问方式:
读,可以显示该文件的内容。
写,可以编辑或删除它。
执行,如果该文件是一个shell脚本或程序。
按照所针对的用户,文件的权限可分为三类:
文件属主,创建该文件的用户。
同组用户,拥有该文件的用户组中的任何用户。
其他用户,即不属于拥有该文件的用户组的某一用户
1、文件
当你创建一个文件的时候,系统保存了有关该文件的全部信息,包括:文件的位置,文件类型,文件长度,哪位用户拥有该文件,哪些用户可以访问该文件,i节点,文件的修改时间,文件的权限位。
让我们使用ls -l命令,来看一个典型的文件:
$ ls –l
total 4232
-rwxr-xr-x 1 root root 3756 Oct 14 04:44 dmesg
下面让我们来分析一下该命令所得结果的前面两行,看看都包含了哪些信息:
total 4232:这一行告诉我们该目录中所有文件所占的空间
-rwxr-xr-x:这是该文件的权限位。如果除去最前面的横杠,这里一共是9个字符,他们分别对应9个权限位。通过这些权限位,可以设定用户对文件的访问权限。这9个字符可以分为三组:
rwx:文件属主权限这是前面三位
r-x:同组用户权限这是中间三位
r-x:其他用户权限这是最后三位
出现在r、w、x位置上的横杠表示相应的访问权限被禁止
1 该文件硬链接的数目
root文件的属主
root文件的属主root所在的缺省组(也叫做root)
3578 用字节来表示的文件长度
Oct 14 04:44 文件的更新时间
dmesg 文件名
2、文件类型
从ls -l命令所列出的结果的第一位是文件类型位:
d 目录
l 符号链接(指向另一个文件)
s 套接字文件
b 块设备文件
c 字符设备文件
p 命名管道文件
- 普通文件,或者更准确地说,不属于以上几种类型的文件
3、改变权限位
对于属于你的文件,可以按照自己的需要改变其权限位的设置。可以使用c h m o d命令来改变文件权限位的设置。
3.1、符号模式
chmod命令的一般格式为:
chmod [who] operator [permission] filename
who的含义是:
u 文件属主权限。
g 同组用户权限。
o 其他用户权限。
a 所有用户(文件属主、同组用户及其他用户)。
operator的含义:
+ 增加权限。
- 取消权限。
= 设定权限。
permission的含义:
r 读权限。
w 写权限。
x 执行权限。
s 文件属主和组set - ID
t 粘性位*
l 给文件加锁,使其他用户无法访问
3.2、绝对模式
chmod命令绝对模式的一般形式为:
chmod [mode] file
其中mode是一个八进制数。
在绝对模式中,权限部分有着不同的含义。每一个权限位用一个八进制数来代表,读属性r代表数是4,写属性w代表数是2,执行属性x代表数是1,如果同时具有三者属性就是4+2+1=7,如果只具备读属性和写属性就是4+2=6,如果只具备读属性就是4。chomd 744 file命令的意思是给用户增加度、写、执行属性;用户所在组具有读属性;其余用户具有读属性
如果希望一次设置目录下所有文件的权限,可以用:
chmod 644 *
这将使文件属主和同组用户都具有读和写的权限,其他用户只具有读权限
还可以通过使用- R选项连同子目录下的文件一起设置:
chmod -R 664 /usr/local/home/dave/*
这样就可以一次将/usr/local/home/dave目录下的所有文件连同各个子目录下的文件的权限全部设置为文件属主和同组用户可读和写,其他用户只读。
4、目录
目录的权限位和文件有所不同,目录的读权限位意味着可以列出其中的内容,写权限位意味着可以在该目录中创建文件,如果不希望其他用户在你的目录中创建文件,可以取消相应的写权限位,执行权限位则意味着搜索和访问该目录
目录的权限将会覆盖该目录中文件的权限
5、chown和chgrp
当你创建一个文件时,你就是该文件的属主。一旦你拥有某个文件,就可以改变它的所有权,把它的所有权交给另外一个/etc/passwd文件中存在的合法用户。可以使用用户名或用户ID号来完成这一操作。只有文件的属主和系统管理员可以改变文件的所有权。一旦将文件的所有权交给另外一个用户,就无法再重新收回它的所有权。如果真的需要这样做,那么就只有求助于系统管理员了。
chown命令改变文件的所有权,其形式为:
chown -R -h owner file
-R选项意味着对所有子目录下的文件也都进行同样的操作。- h选项意味着在改变符号链接文件的属主时不影响该链接所指向的目标文件
chgrp命令改变用户所属的组,格式和chown命令差不多
找出你所属于的用户组:group
找出其他用户所属的组:group 用户名
6、umask
当最初登录到系统中时,umask命令确定了你创建文件的缺省模式。你的系统管理员必须要为你设置一个合理的umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。
在已经登录之后,可以按照个人的偏好使用umask命令来改变文件创建的缺省权限。相应的改变直到退出该shell或使用另外的u m a s k命令之前一直有效。
一般来说,umask命令是在/etc/profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久性地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile文件中。
如何计算umask值
umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来说, umask中各个数字最大可以到7
该命令的一般形式为:
umask nnn
其中nnn为umask置000-777
通过设置umask值,可以为新创建的文件和目录设置缺省权限。
umask是从权限中“拿走”相应的位,例如,对于umask值002,相应的文件和目录缺省创建权限是什么呢?
第一步,我们首先写下具有全部权限的模式,即777 (所有用户都具有读、写和执行权限)。
第二步,在下面一行按照umask值写下相应的位,在本例中是002。
第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。稍加练习就能够记住这种方法。
第四步,对于文件来说,在创建时不能具有文件权限,只要拿掉相应的执行权限比特即可。
这就是上面的例子,其中umask值为002:
1) 文件的最大权限rwx rwx rwx (777)
2) umask值为002 - - - - - - -w-
3) 目录权限rwx rwx r-x (775) 这就是目录创建缺省权限
4) 文件权限rw- rw- r-- (664) 这就是文件创建缺省权限
如果想要知道当前的umask值,可以使用umask命令:
$ umask
$ 022
如果想要改变umask值,只要使用umask命令设置一个新的值即可:
$ umask 002
7、符号链接
存在两种不同类型的链接,软链接和硬链接,这里我们只讨论软链接。软链接实际上就是一个指向文件的指针。
使用软链接来保存文件的多个映像
下面我们就解释一下符号链接是怎么回事。比方说在/usr/local/admin/sales目录下有一个含有销售信息的文件,销售部门的每一个人都想看这份文件。你可以在每一位用户的$HOME目录下建立一个指向该文件的链接,而不是在每个目录下拷贝一份。这样当需要更改这一文件时,只需改变一个源文件即可。每个销售$HOME目录中的链接可以起任何名字,不必和源文件一致。
该命令的一般形式为:
ln [-s] source_path target_path
其中的路径可以是目录也可以是文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值