Linux驱动:关于Linux权限的概念(我觉得很全面)

本文仅作为学习,如果有错误欢迎指正,有雷同算我抄他,我认错

如果涉及侵权立马删除
全文近4000字

一、Linux 用户与权限管理

在Linux系统中,用户分为两种主要类型

  1. root(超级用户)
    • 具有系统中最高的权限,可以执行任何操作,不受系统限制。
    • 提示符:当以 root 用户登录时,命令行的提示符通常是 #,表示你有超级用户权限。
  2. 普通用户
    • 具有有限的权限,不能随意操作系统关键文件,主要用来执行日常任务。
    • 提示符:普通用户登录时,命令行的提示符通常是 $
su 命令

su(Switch User):用于切换用户。

普通用户切换到 root

su -

要输入root的密码
root
切换到普通用户:

su - xxx

不需要输入密码

sudo以超级用户权限执行命令而无需切换到 root:

sudo command

执行命令,会提示输入当前用户的密码,而不是 root 密码

配置 sudo 权限:可以将普通用户添加到 sudoers 文件中,让其具备 sudo 权限。

sudo visudo //编辑 sudoers

在文件中添加:

xxx ALL=(ALL:ALL) ALL


 

二、权限管理(文件权限结构)

在Linux系统中,每个文件和目录都有权限和所有者信息。权限管理分为三类:

  • 用户(owner)
  • (group)
  • 其他人(others)

文件权限的意义文件的执行权限意味着该文件可以被当作可执行程序运行(例如脚本、二进制文件等)。目录的执行权限意味着用户可以进入该目录,如果没有执行权限,即使有读权限,用户也无法列出该目录的内容

文件权限信息

ls -l 命令显示文件时,权限会以如下形式展示

drwxrwxrwx  3 root root  4096 Oct  1 07:26 nfs_rootfs/
  • d:表示文件类型
  • rwxrwxrwx:表示文件权限,分为三组,分别为用户(owner)、组(group)和其他人(others)的权限,每组三个字符。
  • 第一组(rwx):用户(owner)权限
  • 第二组(rwx):组(group)权限
  • 第三组(rwx):其他人(others)权限
  • 3:表示链接数。
  • root:文件所有者(用户)。
  • root:文件所属组。
  • 4096:文件大小,单位是字节(bytes)。
  • Oct 1 07:26:文件最后一次修改的时间。
  • nfs_rootfs/:文件名或目录名。

下面来讲讲文件的类型:

  • -:普通文件(regular file)
  • d:文件夹(directory)
  • l:符号链接(symbolic link)
  • c:字符设备文件(character device file)
  • b:块设备文件(block device file)
  • s:套接字文件(socket)
  • p:命名管道(FIFO, named pipe)
权限类型
  • r:读取权限(read),表示可以读取文件内容或列出目录。
  • w:写入权限(write),表示可以修改文件内容或在目录中创建、删除文件。
  • x:执行权限(execute),表示可以执行文件或进入目录。

注意:rwx的顺序固定,只能是这样子的
所以就导致:在后面的权限掩码里 r相对于4 w相对于2 x相对于1(这里是八进制噢)

三、文件访问权限设置

命令1:chmod:
功能:更改文件或目录的权限,只有文件的所有者或者 root 用户可以更改权限

一般就是用户表示符 “加减等于” 权限字符

符号模式
用户表示符:u(所有者),g(所属组),o(其他人)。
权限字符:r(读),w(写),x(执行)。


举个例子:

chmod u+x /xxx/a.txt

这个命令的意思就是:对于a.txt文件,用户增加执行权限
 

当然,也可以只用八进制的方式,权限是由三位八进制数字组成的
这里说过“所以就导致:在后面的权限掩码里 r相对于4 w相对于2 x相对于1(这里是八进制噢)”
举例:7 就是可读 可写 可执行 ,5就是 可读 不可写 可执行

举例:

chmod 754 /xxx/a.txt

解释

  • 7:所有者可以读、写、执行(rwx)。
  • 5:组可以读和执行,但不能写(r-x)。
  • 4:其他人只能读取(r--)。

递归设置权限:可以用 -R 选项递归更改文件和目录的权限。

举个例子
递归更改目录 dir1 及其所有子文件的权限为 755

chmod -R 755 /xxx/dir1

命令2:chown:
功能:更改文件的所有者

举个例子
将文件 a.txt 的所有者更改为 user1

chown user1 /xxx/a.txt

命令3:chgrp:
功能:更改文件的所属组

举个例子
将文件 a.txt 的所属组更改为 group1

chgrp group1 /xxx/a.txt



命令4:umask:
功能:查看或设置文件的默认权限掩码。
解释:当新文件创建时,权限会基于系统默认的权限减去 umask 掩码
默认设置:文件默认权限是 666,目录默认权限是 777,然后通过 umask 掩码减去对应的值。

举例:

umask //查看
umask 055 //设置 新的文件将拥有 611 权限,新的目录将拥有 722 权限

命令5:file:
功能:判断文件类型
举个例子
检查文件类型:

file /xxx/a.txt

四、目录权限管理

粘滞位(Sticky bit):chmod +t
功能:防止目录下的文件被其他用户删除。即使其他用户有写入权限,也只能删除自己创建的文件。
常见应用:比如 /tmp 目录,所有用户都有写权限,但每个用户只能删除自己创建的文件。

举个例子
对目录 dir1 启用粘滞位

chmod +t /xxx/dir1

粘滞位(chmod+t):为了防止我的文件被别人删掉
但是能被root、目录所有者,文件所有者删除


--------------------------------------------分割线-----------------------------------------------
下面来补充一点,以便于更加深入的掌握权限管理的知识,有兴趣的可以看看吖

susudo 部分:
su 切换用户并登录到该用户的会话环境,尤其适合在长时间维护任务中使用。
sudo 是以当前用户身份暂时提升权限执行某个特定命令,不用完全切换到 root,也更安全。(也就是我们常说的提权)使用 sudo 还能防止用户一直处于 root 权限下进行危险操作

chmod 部分:
符号模式a 代表 “所有用户”
例子:

chmod a+r file.txt  # 所有用户添加读取权限

补充一些常见的八进制权限表示组合:

  • 777:所有人(用户、组、其他人)都具有读取、写入、执行权限。
  • 755:用户具有全部权限,组和其他人只有读取和执行权限。

chownchgrp 命令:
补充一个递归修改所有者和组的示例:

chown -R user1:group1 /xxx/dir1  # 递归更改目录及其内容的所有者和所属组

-v 选项可以显示更改的详细信息:

chmod -v 754 /xxx/a.txt  # 显示文件权限修改信息

umask 命令:
解释为什么减去 umask 掩码:umask命令通过设置一个权限掩码,来限制新创建的文件或目录的默认权限。这个掩码决定了哪些权限将被取消或保留。当新文件或目录被创建时,其权限将基于默认权限减去umask掩码后的结果来确定。如果 umask 是 022,新创建文件的默认权限为 644(即 666 - 022)新创建目录的权限为 755(即 777 - 022)。

粘滞位(Sticky bit)
补充一下如何查看某个目录是否启用了粘滞位:

ls -ld /xxx/dir1

如果启用了粘滞位,权限位的最后一组会显示为 t,例如:

drwxrwxrwt  2 root root  4096 Mar  1 08:56 /tmp

权限类型解释:
补充一些权限对于 目录 和 文件 的区别:
文件的执行权限:文件可以作为程序运行。
目录的执行权限:用户可以进入该目录(即 cd 命令生效)。
目录的读取权限:用户可以查看该目录下的文件列表。
目录的写入权限:用户可以在该目录中创建或删除文件

符号链接的补充(l):(符号链接 可以理解为文件的快捷方式,链接目标文件或目录。
补充一下如何创建和查看符号链接:

ln -s target_file link_name

例如,如果你有一个文件 /home/user/documents/report.txt,并且你想要在桌面创建一个指向这个文件的符号链接,你可以使用以下命令:

ln -s /home/user/documents/report.txt /home/user/Desktop/report_link.txt

执行这个命令后,你会在桌面上看到一个名为 report_link.txt 的文件。这个文件实际上是一个指向 /home/user/documents/report.txt 的符号链接。当你打开 report_link.txt 时,你实际上是在查看和编辑 /home/user/documents/report.txt 文件。

--------------------------------------------分割线-------------------------------------------------

这里更难了噢,当了解就可以啦,算是高阶的权限操作概念啦
SGID 和 SUID
SUID:对于二进制可执行文件,如果设置了 SUID 位,任何用户执行该文件时,都会以文件所有者的权限执行,而不是以执行用户的权限,示例:

chmod u+s /usr/bin/passwd  # 设置 passwd 程序为 SUID

SGID:对于目录,如果设置了 SGID 位,那么在该目录中创建的文件将自动继承目录的组权限,而不是当前用户的组,示例:

chmod g+s /path/to/directory

默认文件权限的解释:
当使用 touch 命令创建文件时,新文件的默认权限是 666(即没有执行权限),但实际权限会受 umask 影响

如何查看权限:
使用 stat 命令查看文件的详细权限和时间戳:

stat -c "%n: %A %U %G" /xxx/a.txt  # 显示文件名、权限、用户和组

使用alias简化权限管理:
通过 alias 来简化一些权限操作,避免每次都输入完整命令:

alias ll='ls -l'
alias la='ls -la'

你可能感兴趣的:(linux,运维,服务器)