个人主页: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 filenamechgrp newgroup filename
在root下操作
在普通用户操作
umak掩码
当用户在 Linux 系统中创建一个文件或目录时,系统会先根据默认权限(文件通常为 666,目录为 777)创建文件或目录,然后再根据 umask 的值移除对应权限位。
这里面为什么是:775 和 664 ?
umask工作原理
umask
值由四个数字组成,每个数字控制特定用户类别的权限:
0
)。第二位控制文件属主权限。第三位控制文件属组权限。第四位控制其他用户权限。 [ocean@hcss-ecs-ad93 test]$ umask0002# 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
,即所有用户均有完全权限,但仅文件属主可以删除自己的文件。