Linux之文件权限

文件权限

权限作用

1.允许指定的用户进行文件访问

2.允许创建用户组属于该组的成员可以访问

3.允许系统中的任意用户可以进行访问

权限说明

对于文件

r是只允许读取数据 例如:cat
w只允许读取数据 例如:vim echo
x允许执行 执行的命令 或者脚本

对于目录

r查看目录下的子目录或者文件 例如:ls
w对文件夹创建或者删除新的文件或者目录 例如:mkdir touch mv rm cp
x进入目录 例如:cd

文件拥有者

UGO:所属用户---所属组---其余用户

所属用户

属于创建该文件的用户 该用户对于该文件拥有一切权限 所有者可以允许其所属组的的其余用户访问所有者的文件

所属组

所属组是一组具有相同属性或者权限的逻辑集合 例如:我们想允许100个用户拥有修改a.txt这个文件的权限 可以逐个赋予改100个用户权限 但是显然用户数量过多修改繁琐 我们可以通过创建一个组 该组拥有修改a.txt的权限 在将这100个用户加入该组 于是该100个用户拥有修改a.txt这个文件的权限

其余用户

系统内其他的所有者用户就是other类

常见文件权限组成

rwx --- ---:

文件所有者拥有读写执行的权限 所属组与其他成员无任何权限

rwx r-- r--:

文件所有者具有读写执行的权限 所属组与其余用户拥有读取的权限

drwx--x—x

目彔所有者具有读写不迚入目彔的权限,其他用户近能迚入该目彔,却无法读取任何数据

drwx------:

除了目彔所有者具有完整的权限之外,其他用户对该目彔完全没有任何权限。

特点

你以什么用户登录创建文件 则该用户会自动成为文件的所有者

文件属主与属组修改

chown

改变文件或者目录的属主
chown 用户 文件名 比如: chown admin a.txt 把文件的属主和属组改为 admin

chown :组名 文件名 比如: chown :admin a.txt

chown 用户名 :组名 文件名 比如:chown root root a.txt

chgrp

修改文件默认的默认属组

修改权限

chmod

作用

修改文件或者目录的权限

u:对文件的所有者进行操作

g:对用户所属组进行操作

O:对于其余用户进行操作

操作符

+:对文件添加权限
-:减少权限
=:直接设定某个权限

使用八进制操作权限

作用

通过数字进行修改权限

表示方法

r=4  w=2 x=1
rw- 的值是多少 答: 4+2=6
rwx r-x r-x 的值是多少 答: rwx=4+2+1=7 ; r-x=4+1=5 rwx r-x r-x=755

文件的特殊权限

SUID

作用

程序执行时候从程序的执行者拥有程序拥有者的权限

限定

其只能设置在二进制可执行的程序上面 对目录无效果

SUID设置

u+s 或者u=4

临时权限

SUID一般作用在可执行文件上 当执行文件的时候会临时拥有文件所有者的权限

在上图中普通用户并没有对密码进行修改的权限 那么当用户进行修改的时候 如何修改成功的呢

上图对用户SR进行密码修改

SGID

作用

在设置了 SGID 权限的目彔下建立文件时,新创建的文件的所属组会继承上级目彔的权限

限定

可以给可执行的程序设置 也可以给目录设置

[root@SR ~]mkdir test
[root@SR ~]ll -d test
drwxr-xr-x 2 root root 4096 Jan 24 20:14 test
[root@SR ~] chmod g+s test
[root@SR ~] !ll
ll -d test
drwxr-sr-x 2 root root 4096 Jan 24 20:14 test
测试: sgid 效果
[root@SR ~]chown :bin test/
[root@SR ~] touch test/a.txt
[root@SR ~] ll !$
ll test/a.txt
-rw-r--r-- 1 root bin 0 Jan 24 20:15 test/a.txt

Stickybit

作用

目录下创建的文件 只有root 文件拥有者 目录所有者才能删除

限定

只能作用于目录

例: 系统中的 tmp 目彔就是这样
[root@SR ~]# ll -d /tmp/
drwxrwxrwt. 11 root root 4096 Jan 24 19:41 /tmp/
用法:
chmod o+t /tmp/test

文件扩展权限ACl

作用

可以单独为某个用户再次进行额外权限的添加

例 2: 给目彔加扩展权限
[root@SR ~]# mkdir /tmp/test
#setfacl -m d:u:user1:rwx /tmp/test #d 默认在就是有这个权限
例 3:给目彔下所有文件都加扩展权限
[root@SR ~]# setfacl -R -m u:lee:rw- testdirectory/ #-R 一定要在-m 前面,表示
目彔下所有文件
[root@SR ~]# setfacl -x u:user1 /tmp/a.txt # 去掉单个权限
[root@SR ~]# setfacl -b /tmp/a.txt # 去掉所有 acl 权限

创建一个不允许被删除的文件

创建一个不能被删除的文件

[root@SR ~]# touch ./test/a.txt

[root@SR ~]# chattr +i ./test/a.txt

[root@SR ~]# rm -fr ./test/a.txt
rm: 无法删除'./test/a.txt': 不允许的操作

从 REHL6 开始,新增加文件系统扩展属性:
命令: chattr
参数: a 只能追加内容 ; i 丌能被修改
+a: 只能追加内容 如: echo aaa >> hack.sh
+i:即 Immutable,系统丌允许对这个文件迚行任何的修改。如果目彔具有这个属性,那举任何的
迚程只能修改目彔之下的文件,丌允许建立和删除文件。
注: immutable [ɪˈmju:təbl] 丌可改变的 ; Append [əˈpend] 追加
-i :移除 i 参数。 -a :移除 a 参数
解决:
[root@SR ~]# lsattr hack.sh
----i----------- hack.sh
[root@SR ~]# chattr -i hack.sh
[root@SR ~]# echo aa >> hack.sh
[root@SR ~]# lsattr hack.sh #查看扩展属性
---------------- hack.sh
[root@SR ~]# chat
chat chattr
[root@SR ~]# chattr +a hack.sh
[root@SR ~]# rm -rf hack.sh
rm: 无法删除"hack.sh": 丌允许的操作
[root@SR ~]# echo aaa >> hack.sh

原文地址:https://www.cnblogs.com/SR-Program/p/12770401.html