文件的权限-

文件的权限-

权限管理

文件的一般权限

文件详细信息

使用命令ll或ls -l 查看

结果分析:

文件权限构成

权限针对三类对象定义

owner:所属者,缩写u

group :所属组,缩写g

other :其他人,缩写o

访问者三种权限

r:文件可读 w:文件可写 x:文件可执行 -:表示没有权限

三位一组,第一位表示文件是否可读,第二位表示文件是否可写,第三位表示文件是否可执行

rw-

r--

r--

组成模式分析

字符表示二进制表示数字表示---0000--x0011-w-0102-wx0113r--1004r-x1015rw-1106rwx1117

文件与目录权限含义

权限对文件的影响对目录的影响r(read)可以读取文件的内容可以列出目录的内容,即目录下的文件的文件名w(write)可以更改文件的内容可以创建或者删除目录中的任一文件(只有w权限无法创建删除文件,需要和x权限一起使用)x(execute)可以作为可执行文件,如脚本可以切换到目录,如cd命令文件可能出现的权限目录可能出现的权限---、r--、r-x、rw-、rwx---、r-x、rwx注意

root账户不受文件权限的读写限制,执行权限受限制

示例

例1:写出下列文件的字符权限

764 : rwxrw-r--

642: rw-r---w-

153: --xr-x-wx

731: rwx-wx--x

例2:写出下列文件的数字权限

r-xrw-r-- : 564

rw--w--wx : 623

rw-r--r-- : 644

chmod命令

作用

chmod(change mode):修改文件或目录的权限

格式

+:加上某个权限 -:减去某个权限 =:重新赋值

a:表示所有全部与u,g,o同级意为all

# 格式1

chmod [选项] [ugoa][+-=][rwx] 文件或目录...

# 格式2

chmod [选项] nnn 文件或目录...`(可看可不看)

参数

-R:递归修改指定目录下所有文件、子目录的权限 (了解即可)

ugoa:表示权限设置所针对的用户类别,可以是其中字母中的一个或组合,u(user)表示文件或目录的属主(所有者);g(group)表示属组内的用户;o(others)表示其他用户;a(all)表示所有用户(即u+g+o)

+或-或=:表示设置权限的操作动作,+代表添加;-代表取消;=表示只赋予给定的权限,并取消原有的权限。

rwx:用字符形式表示的所设置的权限,可以是其中一个字母或组合

nnn:用数字表示的权限

单写一个数字系统会默认前面加两个00

示例

例1

[root@server ~]# touch t1.txt

[root@server ~]# ll t1.txt

-rw-r--r--. 1 root root 0 5月 6 17:29 t1.txt

[root@server ~]# chmod u+x t1.txt

[root@server ~]# ll t1.txt

-rwxr-xr-x. 1 root root 0 5月 6 17:29 t1.txt

[root@server ~]# chmod o+w t1.txt

[root@server ~]# ll t1.txt

-rwxr-xrwx. 1 root root 0 5月 6 17:29 t1.txt

例2

[root@server ~]# touch t2.txt

[root@server ~]# ll t2.txt

-rw-r--r--. 1 root root 0 5月 6 17:27 t2.txt

[root@server ~]# chmod 777 t2.txt

[root@server ~]# ll t2.txt

-rwxrwxrwx. 1 root root 0 5月 6 17:27 t2.txt

[root@server ~]# chmod 000 t2.txt

----------. 1 root root 0 5月 6 17:27 t2.txt

[root@server ~]# chmod 6 t2.txt

会自动在6的前面进行补00,也就是说实际上设置的权限是006

例3 (了解即可)

[root@server ~]# mkdir -p m1/m2/m3

[root@server ~]# touch m1/m2/m3/t3.txt

[root@server ~]# cd m1

[root@server m1]# tree

.

└── m2

└── m3

└── t3.txt

2 directories, 1 file

[root@server m1]# cd ..

[root@server ~]# ls -ld m1

drwxr-xr-x. 3 root root 16 5月 6 17:33 m1

[root@server ~]# cd m1

[root@server m1]# ls -ld m2

drwxr-xr-x. 3 root root 16 5月 6 17:33 m2

[root@server m1]# cd m2

[root@server m2]# ls -ld m3

drwxr-xr-x. 2 root root 20 5月 6 17:34 m3

[root@server m2]# cd m3

[root@server m3]# ll t3.txt

-rw-r--r--. 1 root root 0 5月 6 17:34 t3.txt

[root@server ~]# chmod -R 755 m1 # 递归设置

[root@server ~]# ll m1

总用量 0

drwxr-xr-x. 3 root root 16 5月 6 17:33 m2

[root@server ~]# cd m1

[root@server m1]# ll m2

总用量 0

drwxr-xr-x. 2 root root 20 5月 6 17:34 m3

[root@server m1]# cd m2

[root@server m2]# ll m3

总用量 0

-rwxr-xr-x. 1 root root 0 5月 6 17:34 t3.txt

chown命令

作用

修改文件或目录的所属者和属组

格式

修改文件或目录的所属者

chown -参数 所有者:所属组 文件名或目录名 冒号前改所属者,冒号后改所属组

# 参数-R递归设置

示例 (改名)

[root@server m2]# cd ~

[root@server ~]# touch t4.txt

[root@server ~]# ll t4.txt

-rw-r--r--. 1 root root 0 5月 6 17:40 t4.txt

[root@server ~]# chown fox:fox t4.txt

[root@server ~]# ll t4.txt

-rw-r--r--. 1 fox fox 0 5月 6 17:40 t4.txt

总结:其他用户是否能够删除该文件,不是取决于该文件对其的权限设置,而是该文件的所属目录对该用户的权限设置。

![image-20241025230823081](https://zzq-1258460726.cos.ap-nanjing.myqcloud.com//typora-pic/image-20241025230823081.png)

取消掉other用户对/test目录的r权限, ll -d /test (-d 表示查看的是目录本身)

发现other用户无法ls /test

依次展示其他的。

一旦其他人对目录可以w,那么对目录下任何人创建的文件都可以进行删除(包括root用户创建的文件)

链接文件的权限不可信,因为取决于源文件的权限

普通用户对于系统文件无法进行改动原因是::::查看一下权限发现文件夹其他人都是没有可写w的权限

权限掩码

新建文件权限与umask关系

在Linux系统中,当用户创建一个新的文件或目录时,系统都会为新建的文件或目录分配默认的权限,该默认权限与umask值有关

第一位0表示的是特殊权限位

新建文件的默认权限=0666-umask值即06449(rw-r--r--)(减去)

新建目录的默认权限=0777-umask值即0755(rwxr-xr-x)

权限掩码的修改是临时的(例如 umask 000 )

查看默认umask值

[root@server ~]# umask

0022 umask的值

0022

[root@server ~]# touch file1

[root@server ~]# mkdir dir1

[root@server ~]# ll -d file1 dir1

drwxr-xr-x. 2 root root 6 5月 6 18:23 dir1 # 755

-rw-r--r--. 1 root root 0 5月 6 18:23 file1 # 644

修改默认umask

[root@server ~]# umask 000 # 临时修改

[root@server ~]# touch file2

[root@server ~]# mkdir dir2

[root@server ~]# ll -d file2 dir2

drwxrwxrwx. 2 root root 6 5月 6 18:26 dir2

-rw-rw-rw-. 1 root root 0 5月 6 18:25 file2

suid (不太重要)

对于一个可以执行的文件添加上suid权限后,普通用户在执行该文件时,会临时拥有该文件所有者的权限

普通用户可以使用passwd改命令,但是/etc/shadow文件对普通用户没有写的权限???

which passwd 查看命令文件的路径

ll /usr/bin/passwd

会发现在所属者的权限位置上存在s,表示suid权限

举例:普通用户不能用cat查看/etc/shadow

[gouxin@study ~]$ cat /etc/shadow

cat: /etc/shadow: 权限不够

[root@study etc]# ll /usr/bin/cat

-rwxr-xr-x. 1 root root 37464 5月 31 2022 /usr/bin/cat

[root@study etc]# chmod u+s /usr/bin/cat

[root@study etc]# ll /usr/bin/cat

-rwsr-xr-x. 1 root root 37464 5月 31 2022 /usr/bin/cat

SGID (了解即可)

SetGID(SGID):当对一个可执行的程序文件设置了SGID后,普通用户在执行该文件时临时拥有 其所属组的权限,该权限只在程序执行过程中有效,程序执行完毕后用户恢复原有组身份

当对一个目录作设置了SGID权限后,普通用户在该目录下创建的文件的所属组,均与该目录的所 属组相同

SetGID权限会附加在所属组的 x 权限位上,所属组的 x 权限标识会变成 s

设置SetGID命令格式:chmod g+s 文件名

Sticky BIT特殊权限:

针对目录的,一旦目录存在BIT特殊权限,即使其他用户具有文件的rwx,也只能删除自己创建的文件

chmod o+t 目录名

#为目录设置SBIT

[root@localhost ~]# chmod o+t /test

[root@localhost ~]# ll -d /test

drwxrwxrwt. 2 root root 6 4月 11 16:07 /test

[lisi@localhost test]$ ls

kenji.txt laowang.txt lisi.txt

[lisi@localhost test]$ rm -rf *

rm: 无法删除"kenji.txt": 不允许的操作

rm: 无法删除"laowang.txt": 不允许的操作

FACL访问控制列表

单独为每一个用户量身定制一个权限(不是你们部门的,但是需要一些权限)

命令格式:setfacl 选项 归属关系:用户名:权限 文档 常用选项:

-m 设置权限

-x 删除指定用户权限

-b 删除所有用户权限

查看ACL权限

格式

getfacl 文件名

[root@server ~]# touch temp.cfg

[root@server ~]# getfacl temp.cfg # getfacl命令

# file: temp.cfg

# owner: root

# group: root

user::rw-

group::r--

other::r--

设置ACL权限

格式

setfacl -参数 文件名

参数

-m:设定 ACL 权限

给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名

给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名

-x:删除指定的 ACL 权限;

-b:删除所有的 ACL 权限;

-d:设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限;

-k:删除默认 ACL 权限;

-R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效

示例

例:root用户在根目录下创建目录/project及所属工作组QQgroup,所属组里面创建两个用户zhangsan和lisi,此文件权限是770,再创建一个旁听用户 pt,给他设定/project目录的 ACL 为 r-x

[root@server ~]# mkdir /project

[root@server ~]# useradd zhangsan

[root@server ~]# useradd lisi

[root@server ~]# groupadd QQgroup

[root@server ~]# gpasswd -M zhangsan,lisi QQgroup

[root@server ~]# chown root:QQgroup /project

[root@server ~]# chmod 770 /project

[root@server ~]# ll -d /project

drwxrwx---. 2 root QQgroup 6 5月 6 18:12 /project

[root@server ~]# useradd pt # 新建旁听账户

[root@server ~]# setfacl -m u:pt:rx /project

[root@server ~]# ll -d /project # 注意:某文件下有+标志则说明其具有acl权限

drwxrwx---+ 2 root QQgroup 6 5月 6 18:12 /project

[root@server ~]# getfacl /project

getfacl: Removing leading '/' from absolute path names

# file: project

# owner: root

# group: QQgroup

user::rwx

user:pt:r-x

group::rwx

mask::rwx

other::---

# 为了验证 pt 用户对于 /project 目录没有写权限,我们用 su 命令切换到 pt 用户,然后进入 /project 目录,在此目录下创建文件,看是否能成功:

[root@server ~]# su - pt

[pt@server ~]$ cd /project

[pt@server project]$ touch test.txt

touch: 无法创建 'test.txt': 权限不够

删除acl权限

# 删除指定用户的 ACL 权限setfacl -x u:用户名 文件名

# 删除指定用户组的 ACL 权限setfacl -x g:组名 文件名

# 删除文件的所有 ACL 权限setfacl -b 文件名

相关推荐