文件安全与权限 笔记
文件安全与权限
文件
对创建的文件,系统会保存文件的全部信息,包括
- 文件的位置
- 文件类型
- 文件长度
- 文件的拥有用户与可访问的用户
- i节点
- 文件的修改位置
- 文件的权限位
使用 ls -l
去查看文件的属性:
total 60
lrwxrwxrwx. 1 root root 7 Apr 26 15:48 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Apr 26 16:01 boot
drwxr-xr-x 19 root root 2960 Oct 9 10:52 dev
drwxr-xr-x. 76 root root 4096 Oct 9 10:52 etc
drwxr-xr-x. 2 root root 4096 Apr 11 2018 home
lrwxrwxrwx. 1 root root 7 Apr 26 15:48 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Apr 26 15:48 lib64 -> usr/lib64
drwx------. 2 root root 16384 Apr 26 15:48 lost+found
drwxr-xr-x. 2 root root 4096 Apr 11 2018 media
drwxr-xr-x. 2 root root 4096 Apr 11 2018 mnt
drwxr-xr-x. 2 root root 4096 Apr 11 2018 opt
dr-xr-xr-x 82 root root 0 Oct 9 10:52 proc
dr-xr-x---. 4 root root 4096 Apr 26 16:02 root
drwxr-xr-x 24 root root 640 Oct 9 10:52 run
lrwxrwxrwx. 1 root root 8 Apr 26 15:48 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 Apr 11 2018 srv
dr-xr-xr-x 13 root root 0 Oct 9 2020 sys
drwxrwxrwt. 9 root root 4096 Oct 9 10:53 tmp
drwxr-xr-x. 13 root root 4096 Apr 26 15:48 usr
drwxr-xr-x. 19 root root 4096 Apr 26 07:54 var
-
total :代表所有文件占的空间
-
第一列(例如dr-xr-xr-x) : 文件类型(参照下一节)及__文件的权限位__,除去第一位的字符,后面的9位是9个权限位,设定用户对文件的访问权限,后面9位分为三组:
- 前三位:文件属主权限
- 中间三位:同组用户权限
- 后三位:其他用户权限
– 代表相应的权限被禁止
-
第二列:代表文件___硬链接___的数目
-
第三列:文件的__属主__
-
第四列:文件的属主所在的缺省组
-
第五列:用字节表示的文件长度
-
第六列:文件的更新时间
-
第七列:文件名
文件类型
ls -l列出的第一列第一位代表文件类型:
- d:目录
- l:符号连接
- s:套接字文件
- b:块设备文件
- c:字符设备文件
- p:命名管道文件
- – :普通文件,即不属于以上文件的文件
权限
创建一个文件 :touch <filename>
这里键入命令 touch myfile
,然后键入命令 ls -l
total 0
-rw-r--r-- 1 root root 0 Oct 9 11:19 myfile
根据之前说的,那么 -rw-r--r--
则定义了:
- 这是一个普通文件
-
rw-
代表了文件属主拥有的权限 -
r--
代表了文件属主缺省组的权限 -
r--
代表了其他用户的权限
每一个组的三个权限位:
- r:读权限
- w:写权限
- x:执行该脚本或程序的权限
改变权限位(使用chmod命令)
chmod命令分为两种格式:
符号模式
格式为:chmod [who] operator [permission] filename
who的含义:
u 文件属主权限
g 同组用户权限
o 其他用户权限
a 所有用户(文件属主、同组用户及其他用户)。
operator的含义:
+ 增加权限
– 减少权限
= 设定权限
permission的含义:
r 读权限
w 写权限
x 执行权限
s 文件属主和组 set-ID
t 粘性位(通常对目录来说,这个目录下的文件只有属主才能删除,即使同组用户有相等权限。对文件来说,会被放在虚拟存储进行执行)
l 给文件加锁,使其他用户无法访问
u,g,o 针对文件属主、同组用户及其他用户的操作
使用举例
myfile初始权限
-rw-r--r-- 1 root root 0 Oct 9 11:19 myfile
执行 chmod u+x myfile
chmod o-w myfile
后
权限变为
-rwxr--r-- 1 root root 0 Oct 9 11:19 myfile
绝对模式
命令形式为
chmod [mode] file
mode是一个八进制数
在绝对模式中,每一个权限位用一个八进制数代表,如下表
八进制数 | 含义 |
---|---|
0400 | 文件属主可读 |
0200 | 文件属主可写 |
0100 | 文件属主可执行 |
0040 | 同组用户可读 |
0020 | 同组用户可写 |
0010 | 同组用户可执行 |
0004 | 其他用户可读 |
0002 | 其他用户可写 |
0001 | 其他用户可执行 |
设定权限时,根据表中各个要设定的权限加起来就可以得到相应的权限表示
比如 777 就是所有权限
可以通过 chmod -R
去递归的设置目录树的权限
目录权限
目录的权限值和文件有所不同
r:可以列出该目录中的文件
w:可以在目录下创建或者删除文件
x:可以搜索或进入该目录
如果我对目录用户设置--x
,那么我无法列出目录中的文件,但是我只要知道路径和文件名,仍然可以执行里面的文件。
suid/guid
这个权限比较特殊,系统提供商可能会不允许实现这一位或忽略这一位。
这个权限会导致euid/egid 被 suid/guid覆盖,从而使任何进程都将拥有程序属主的权限
这个权限可以通过符号方式设置,或者设置权限数字的前面加上一个4设置suid,加上2设置guid,6设置两个
chown && chgrp
把文件的所有权交给另一个/etc/passwd文件中存在的合法用户
chown
chown命令的一般形式为:
chown -R -h owner file
-h指不改变该链接指向的目标文件
-R意味着对子目录下的文件执行同样的操作
例子:myfile的权限从bin转给了root
[root@iZ2ze5p0lt0ld1jussmap7Z ~]# ls -l
total 0
-rwxr--r-- 1 bin root 0 Oct 9 11:19 myfile
[root@iZ2ze5p0lt0ld1jussmap7Z ~]# chown root myfile
[root@iZ2ze5p0lt0ld1jussmap7Z ~]# ls -l
total 0
-rwxr--r-- 1 root root 0 Oct 9 11:19 myfile
chrgp
同理,是转移用户组,命令只是把chown换为chrgp,不再测试
找出组的命令
- groups 找出当前用户的属于组
- id 查询uid,gid,groups
- groups 找出这个username 用户所在组
缺省值
umask:每个用户的unmask确定了创建文件的缺省权限,防止非同组用户对你有不希望的权限
符号链接(软链接)
ln [-s] source_path target_path
例子:创建myfile的符号链接
[root@iZ2ze5p0lt0ld1jussmap7Z ~]# ls
myfile
[root@iZ2ze5p0lt0ld1jussmap7Z ~]# ln -s myfile temp
[root@iZ2ze5p0lt0ld1jussmap7Z ~]# ls -l
total 0
-rwxr--r-- 1 root root 0 Oct 9 11:19 myfile
lrwxrwxrwx 1 root root 6 Oct 12 17:37 temp -> myfile
其实他就是一种指向文件的指针
还有一种连接是硬链接,暂时不表
链接目录权限会是777 但是实际权限并未改变