【Linux】彻底搞懂Linux权限(超详细解析,小白必看系列)

小魏不崴脚 2024-09-02 12:37:01 阅读 92

目录

1 linux权限概念

1. 1 用户分类

2.1 语法

2.2 功能

2 Linux权限管理

2.1 文件访问者的分类(人)

2.2 权限表示

1 文件类型

2 基本权限

3 文件权限值的表示方法

2.3 权限管理命令

1. chmod 命令

2. chown 命令

3. chgrp 命令

4. umask 命令

2.4 特殊权限(粘滞位)

1 粘滞位的作用

2 设置粘滞位

3 示例

4 注意事项


1 linux权限概念

在Linux 中,权限是控制用户对文件和目录访问的一种机制。每个文件和目录都有三种基本权限:读取(r)、写入(w)执行(x)。这些权限分别适用于三类用户:文件的拥有者

(u)、文件所属组的用户(g)和其他用户

1. 1 用户分类

Linux下有两种用户:超级用户(root)、普通用户

超级用户:可以再linux系统下做任何事情,不受限制

普通用户:在linux下做有限的事情。

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

2.1 语法

su [用户名]

2.2 功能

切换用户

2 Linux权限管理

2.1 文件访问者的分类(人)

用户(User):文件或目录的所有者,通常是创建该文件或目录的用户。符号表示为 <code>u。组(Group):文件或目录所属的用户组,通常是所有者所在的组。符号表示为 g其他用户(Others):除所有者和所属组之外的所有其他用户。符号表示为 o

2.2 权限表示

1 文件类型

d:文件夹-:普通文件l:软链接(类似Windows的快捷方式)b:块设备文件(例如硬盘、光驱等)p:管道文件c:字符设备文件(例如屏幕等串口设备)s:套接口文件

2 基本权限

读取(r):允许查看文件内容或列出目录内容。写入(w):允许修改文件内容或在目录中创建、删除文件。执行(x):允许执行文件或进入目录。“—”:表示不具有该项权限

3 文件权限值的表示方法

a)字符表示方法

b)8进制数值表示方法

2.3 权限管理命令

在 Linux 中,权限管理主要通过以下几个命令来实现:

1. <code>chmod 命令

用于更改文件或目录的权限

chmod [options] mode file

示例

chmod u+rwx file.txt # 给文件所有者增加读、写、执行权限

chmod g-w file.txt # 去掉组用户的写权限

chmod o=rx file.txt # 设置其他用户只有读和执行权限

chmod 755 file.txt # 设置文件权限为 rwxr-xr-x

chmod -R 755 directory # 递归更改目录及其子目录的权限

2. chown 命令

用于更改文件或目录的所有者。

chown [options] owner[:group] file

示例

chown user file.txt # 将文件所有者改为 user

chown user:group file.txt # 将文件所有者改为 user,组改为 group

chown -R user:group directory # 递归更改目录及其子目录的所有者和组

3. chgrp 命令

用于更改文件或目录的所属组。

chgrp [options] group file

示例

chgrp group file.txt # 将文件所属组改为 group

chgrp -R group directory # 递归更改目录及其子目录的所属组

4. umask 命令

用于设置默认权限掩码,决定新创建文件和目录的默认权限。

umask [options] [mask]

示例

umask 022 # 设置新文件默认权限为 755,新目录默认权限为 755

umask 077 # 设置新文件和目录默认权限为 700

在 Linux 中,权限掩码(umask) 是用于设置新创建文件和目录的默认权限的机制。它通过屏蔽某些权限位来决定新文件和目录的最终权限。

a) 权限掩码的工作原理

默认情况下,新创建的文件和目录的权限分别是 666(rw-rw-rw-)和 777(rwxrwxrwx)。权限掩码通过从这些默认权限中减去指定的掩码值来确定最终权限。

b) 计算方法

假设 umask 值为 022

文件默认权限666 - 022 = 644(rw-r–r–)目录默认权限777 - 022 = 755(rwxr-xr-x)

c) 设置和查看 umask

查看当前 umask

umask

设置 umask

umask 022

d) 示例

查看当前 umask

$ umask

0022

创建文件和目录

$ touch newfile

$ mkdir newdir

查看权限

$ ls -l newfile newdir

-rw-r--r-- 1 user user 0 Aug 16 09:04 newfile

drwxr-xr-x 2 user user 4096 Aug 16 09:04 newdir

e) 修改 umask

要永久修改 umask,可以在用户的 shell 配置文件(如 .bashrc.profile)中添加一行:

umask 022

f) 特殊情况

umask 000:新文件和目录将具有最大权限(666 和 777),这通常不推荐使用,因为它会导致安全风险。umask 077:新文件和目录将只有所有者有完全权限(600 和 700),适用于需要高安全性的场景。

通过合理设置 umask,可以有效控制新创建文件和目录的默认权限,确保系统的安全性和资源的合理分配

2.4 特殊权限(粘滞位)

在 Linux 系统中,粘滞位(Sticky Bit) 是一种特殊权限位,主要用于控制对特定目录中文件的删除操作。设置粘滞位后,只有文件的所有者或 root 用户才能删除或移动该文件,而其他用户即使有写权限也不能删除或移动这些文件

1 粘滞位的作用

粘滞位通常用于多用户环境中的公共目录,例如 /tmp 目录,以防止用户删除或移动其他用户的文件。设置粘滞位后,目录的其他用户权限位会显示为 tT

t:表示该目录的其他用户有执行权限。T:表示该目录的其他用户没有执行权限。

2 设置粘滞位

使用 chmod 命令可以设置粘滞位:

chmod +t directory # 为目录设置粘滞位

chmod -t directory # 移除目录的粘滞位

3 示例

查看 /tmp 目录的权限

ls -ld /tmp

drwxrwxrwt 10 root root 4096 Aug 16 09:04 /tmp

可以看到 /tmp 目录的其他用户权限位为 t,表示已设置粘滞位。

为目录设置粘滞位

mkdir mydir

chmod 1777 mydir # 设置粘滞位并赋予所有用户读、写、执行权限

ls -ld mydir

drwxrwxrwt 2 user user 4096 Aug 16 09:04 mydir

4 注意事项

粘滞位只对目录有效,对文件无效设置粘滞位后,其他用户仍然可以修改文件内容,但不能删除或移动文件。

通过合理使用粘滞位,可以有效保护公共目录中的文件,防止未授权的删除和移动操作。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。