深入解析 Linux 文件权限
个人主页:chian-ocean
文章专栏
前言
在Linux系统中,文件和目录的权限是确保系统安全和管理访问控制的关键。权限控制决定了谁能够访问和操作哪些文件或目录。在Linux中,权限主要分为三个部分:文件所有者(User)、文件所属组(Group)以及其他用户(Others)。以下是对Linux权限的详细讲解
Linux中的用户类型
**超级用户(Root 用户):**Root 用户是系统管理员,具有系统中最高的权限,可以执行任何操作
普通用户:普通用户创建后通常没有系统管理权限,拥有对自己创建的文件和目录的控制权。
普通用户切换root用户
要从普通用户切换到 root
用户,可以使用以下命令:
su -
然后输入 root
用户的密码。成功后,您将切换到 root
用户的环境。
如果您没有 root
用户密码,但有 sudo 权限,可以用以下命令来执行 root
权限的命令:
sudo su -
这将允许您切换到 root
用户,无需单独的 root
密码,只需输入您当前用户的密码即可。
sudo
sudo
: 在 Linux 系统中,sudo 是一个用来以超级用户权限(即 root 权限)执行命令的工具.
sudo
(全称是“superuser do”)是 Unix 和 Linux 系统中用于以超级用户权限(root 权限)执行命令的工具。sudo
可以临时授予普通用户执行系统管理任务的权限,不必切换到 root
用户,保证系统安全性和灵活性。
为什么使用 sudo
使用 sudo
有助于:
- 提高安全性:允许普通用户执行特定管理任务,而不暴露
root
用户的密码。 - 权限控制:通过
sudoers
文件,可以精细控制不同用户可以执行哪些命令。 - 记录管理操作:
sudo
会将所有命令记录在日志文件中,方便审计和排查问题。
将普通用户加入到root白名单
普通用户想要可以运用sudo
指令是需要得到root管理身份信任的。
vim /etc/sudoers
Linux 权限管理
在 Linux 系统中,每个文件和目录都属于一个用户和一个组,并有各自的权限设置:
- 用户(User):拥有文件的用户,一般是文件的创建者。
- 组(Group):多个用户可以属于同一个组,组内用户共享权限。
- 权限(Permissions):分为三种基本权限——读、写、执行。
权限的三类分配对象
每个文件和目录的权限被分配给三类对象:
- 文件属主(Owner/User):创建文件的用户。
- 文件属组(Group):与文件关联的用户组。
- 其他用户(Others):不属于文件属主和属组的其他所有用户。
权限类型
文件和目录权限可以按以下类型分配:
- 读(r):允许查看文件内容或列出目录内容。
- 写(w):允许修改文件或创建、删除、重命名目录中的文件。
- 执行(x):允许执行文件(可执行文件)或访问目录内容。
在 Linux 中,权限用三个字符表示(如 rwx
),分别表示读、写、执行权限。如果某个权限缺失则用 -
表示,例如 rw-
表示有读写权限但没有执行权限。
文件类型
d
:文件夹-
:普通文件l
:软链接(类似Windows的快捷方式)b
:块设备文件(例如硬盘、光驱等)p
:管道文件c
:字符设备文件(例如屏幕等串口设备)s
:套接口文件
-rw-rw-r-- 1 ocean ocean 102 Nov 12 22:50 code.cpp
权限的两种更改方式
符号模式更改权限
在符号模式下,权限更改的方式如下:
+
:添加权限-
:移除权限=
:设置特定权限(覆盖原有权限)
# 给文件属主添加执行权限
chmod u+x filename
# 移除属组的写权限
chmod g-w filename
# 设置其他用户的权限为只读(覆盖其他权限)
chmod o=r filename
# 给所有用户添加读权限
chmod a+r filename
- 三类对象均不可执行,仅仅可以读和写 现在进行上述操作
八进制模式更改权限
八进制模式通过数值来表示权限,每位数字对应三种权限的组合。每个数字表示不同的权限组合:
权限 | 数字 | 解释 |
---|---|---|
--- | 0 | 无权限 |
--x | 1 | 只有执行权限 |
-w- | 2 | 只有写权限 |
-wx | 3 | 写和执行权限 |
r-- | 4 | 只有读权限 |
r-x | 5 | 读和执行权限 |
rw- | 6 | 读和写权限 |
rwx | 7 | 读、写和执行权限 |
八进制模式的使用方式为:chmod XYZ filename
,其中 X
表示属主的权限,Y
表示属组的权限,Z
表示其他用户的权限
将所三个对象有权限设置为—
将所三个对象有权限设置为rwx
权限所属对象的更改
在 Linux 中,可以通过 chown
和 chgrp
命令更改文件或目录的权限所属对象。具体来说:
chown
用于更改文件的属主和属组。chgrp
用于更改文件的属组。
chown [选项] 用户:组 文件名
chown newuser filename
chgrp newgroup filename
在root下操作
在普通用户操作
umak掩码
当用户在 Linux 系统中创建一个文件或目录时,系统会先根据默认权限(文件通常为 666,目录为 777)创建文件或目录,然后再根据 umask 的值移除对应权限位。
这里面为什么是:775 和 664 ?
umask工作原理
umask
值由四个数字组成,每个数字控制特定用户类别的权限:
- 第一位通常保留(设为
0
)。 - 第二位控制文件属主权限。
- 第三位控制文件属组权限。
- 第四位控制其他用户权限。
[ocean@hcss-ecs-ad93 test]$ umask
0002
# linux系统下默认的umask掩码是002
计算新创建文件或目录的权限:
- 文件默认权限:
666
(没有执行权限) - 目录默认权限:
777
权限计算公式:
- 文件权限 = 默认权限
666 &(~umask)
掩码 =774
- 目录权限 = 默认权限
777 &(~umask)
掩码 =664
目录权限
目录权限的三种类型
-
读权限 ®:
- 读权限 (
r
) 允许用户查看目录中的文件和子目录列表。 - 没有读权限时,用户无法列出目录内容。
- 读权限 (
-
写权限 (w):
- 写权限 (
w
) 允许用户在目录中创建、删除和重命名文件和子目录。 - 注意:写权限一般与执行权限 (
x
) 搭配使用。仅有写权限但没有执行权限的情况下,用户无法实际在目录中进行操作(如删除或创建文件)。
- 写权限 (
-
执行权限 (x):
- 执行权限 (
x
) 允许用户进入目录,即“访问”该目录。 - 没有执行权限时,用户无法切换到该目录,甚至无法查看目录中的文件,即便拥有读权限。
- 在目录权限中,执行权限非常关键,它影响了用户对该目录内容的可操作性。
- 执行权限 (
粘滞位
在 Linux 中,粘滞位(Sticky Bit)是一种特殊的权限位,通常用于目录中。粘滞位主要用于公共目录,确保只有文件的属主或 root 用户才能删除或修改该文件,即使其他用户对该目录具有写权限
粘滞位的作用
当一个目录设置了粘滞位后,目录中的文件和子目录只能被以下用户删除或修改:
- 文件的属主(文件的创建者)
- 目录的属主
- 系统管理员(root 用户)
使用场景
粘滞位常用于公共目录(如 /tmp
),因为 /tmp
目录允许所有用户写入数据,但为了避免用户删除他人的文件,通常会设置粘滞位。
设置粘滞位
使用 chmod
命令可以设置粘滞位:
-
符号模式:
chmod +t directory_name
-
八进制模式:粘滞位的八进制值是
1000
,可以在其他权限基础上加上1000
。chmod 1777 directory_name
例如,设置
/tmp
目录的权限为1777
,即所有用户均有完全权限,但仅文件属主可以删除自己的文件。
式**:
chmod +t directory_name
[外链图片转存中…(img-WPqjYhpW-1731563326066)]
-
八进制模式:粘滞位的八进制值是
1000
,可以在其他权限基础上加上1000
。chmod 1777 directory_name
例如,设置
/tmp
目录的权限为1777
,即所有用户均有完全权限,但仅文件属主可以删除自己的文件。
原文地址:https://blog.csdn.net/Cayyyy/article/details/143769201
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!