Linux权限

在这里插入图片描述
🍉变好的过程都不太舒服,试试再努力点🍉

Linux权限

Linux的两种用户:超级用户(root)和普通用户(user)

特征 / 权限超级用户(root)普通用户(user)
权限等级最高权限,可以执行任何操作受限权限,无法执行特权操作
系统管理可以安装、删除软件包,修改系统配置等不能进行系统级操作,如安装软件包
文件访问可以访问系统中的所有文件和目录只能访问自己有权限的文件和目录
用户身份标识为用户名 root,UID 为 0根据系统分配的用户名和 UID
家目录/root普通用户各自的家目录,如 /home/user
任务使用系统管理和维护日常任务操作,如文件管理、应用运行
风险和安全需要谨慎操作,风险较高操作受限,系统安全性较高
权限管理可以修改任何文件和目录的权限只能修改自己的文件和目录权限
推荐用途系统管理员操作普通用户日常操作

用户切换

su 命令可以用来切换到超级用户(root)或其他普通用户。

基本语法:su [options] [username]

  1. 切换到超级用户(root)

    执行以下命令后,系统将要求输入超级用户(root)的密码:

    su
    
  2. 切换到其他用户

    切换到名为 user2 的普通用户:

    su user2
    

选项

  • -:使用 - 选项可以模拟完整的登录环境,包括用户的环境变量、工作目录等。

    su -
    
  • -c:使用 -c 选项后面跟随要执行的命令,可以在切换用户后立即执行指定的命令。

    su -c "command_to_execute"
    

权限管理

Linux中对访问文件的人分为3种:所有者、所有组、其他,即对应u(user)、g(group)、o(other)

image-20240809164240185

文件类型:

符号文件类型说明
-普通文件(Regular File)一般的文件,例如文本文件、二进制文件等。
d目录(Directory)表示这是一个目录。
l符号链接(Symbolic Link)指向另一个文件或目录的指针(软链接)。
b块设备文件(Block Device)提供块设备访问的特殊文件,例如硬盘。
c字符设备文件(Character Device)提供字符设备访问的特殊文件,例如键盘、鼠标。
p命名管道(Named Pipe, FIFO)允许进程间通信的特殊文件。
s套接字(Socket)用于网络通信的特殊文件。
D门(Door)用于进程间通信的文件(主要在某些UNIX系统上使用)。

基本权限:

所有者、所有组和其他各自对应的有3个字符分别对应 rwx,分别代表可读可写可执行。可读可写可执行对于文件和目录所代表的意义略有区别。

权限文件(File)目录(Directory)
可读 (r)允许读取文件内容。允许列出目录中的文件和子目录名。
可写 (w)允许修改文件内容。允许在目录中创建、删除和重命名文件和子目录。
可执行 (x)允许执行文件,如果是可执行文件。允许进入目录,访问其中的文件和子目录。
  1. 文件权限示例

    • 如果一个文件的权限是 -rwxr--r--
      • 文件所有者可以读、写和执行这个文件。
      • 文件所属组的用户可以读这个文件,但不能写入或执行。
      • 其他用户可以读这个文件,但不能写入或执行。
  2. 目录权限示例

    • 如果一个目录的权限是 drwxr-x---
      • 目录所有者可以读、写和进入这个目录。
      • 目录所属组的用户可以读和进入这个目录,但不能写入。
      • 其他用户无法访问这个目录。

表示方法:

文件和目录的权限既可以用字符表示,也可以用八进制数字表示。

权限类型字符表示八进制表示
无权限---0
可执行--x1
可写-w-2
可写可执行-wx3
可读r--4
可读可执行r-x5
可读可写rw-6
可读可写可执行rwx7

文件或目录的权限由三组字符组成,每组对应于所有者(user)、所属组(group)、和其他用户(other)的权限。这三组权限也可以用三个八进制数字表示,分别对应于文件或目录的所有者、所属组和其他用户的权限。

-rwxr-xr--

最终的八进制表示法为:754

drwxr-x---

最终的八进制表示法为:750

文件权限设置

chmod

chmod命令允许用户以字符形式或八进制形式设置文件的读取(read)、写入(write)、执行(execute)权限。

文件权限的字符表示法包括以下几个部分:

  1. 所有者权限u(user)
  2. 所属组权限g(group)
  3. 其他用户权限o(other)
  4. 特殊权限a(all),即所有用户(ugo)的权限

语法:chmod [选项] 模式 文件名

  • 添加权限

    chmod u+x file.txt  # 给文件所有者添加执行权限
    chmod go-w file.txt # 剥夺所属组和其他用户的写权限
    chmod a=r file.txt  # 将文件的所有者、所属组和其他用户的权限设置为只读
    
  • 移除权限

    chmod u-x file.txt  # 移除文件所有者的执行权限
    chmod go+r file.txt # 给所属组和其他用户添加读权限
    
  • 完全重置权限

    chmod 644 file.txt  # 设置文件的权限为 -rw-r--r--
    chmod 755 script.sh # 设置可执行脚本的权限为 -rwxr-xr-x
    

八进制表示法是数字形式,每个数字表示一组权限的组合:

读、写、执行权限组合分别可以为rwxrw-r-x等对应的八进制数字表示为765等。

  • 将文件设置为-rwxr-xr--的权限

    chmod 754 file.txt
    

    这里的 7 对应所有者权限 rwx5 对应所属组权限 r-x4 对应其他用户权限 r--

  • 将文件设置为-rw-r--r--的权限

    chmod 644 file.txt
    

    这里的 6 对应所有者权限 rw-4 对应所属组和其他用户权限 r--

chown

chown命令用于更改文件或目录的所有者和/或所属组,而文件和目录的所有者和所属组决定了谁可以访问这些文件及其权限。

语法:chown [选项] 所有者:所属组 文件名

常用选项

  • -R:递归更改目录及其所有子目录和文件的所有者和/或所属组。
  • --reference=文件名:将权限设置为与另一个文件相同的所有者和所属组。
  1. 更改文件的所有者

    chown user1 file.txt
    

    这将把 file.txt 的所有者更改为 user1,保持当前的所属组不变。

  2. 更改文件的所有者和所属组

    chown user1:group1 file.txt
    

    这将把 file.txt 的所有者更改为 user1,并将所属组更改为 group1

  3. 递归更改目录及其所有子目录和文件的所有者和所属组

    chown -R user1:group1 /path/to/directory
    

    这将把 /path/to/directory 目录及其所有子目录和文件的所有者更改为 user1,并将所属组更改为 group1

  4. 将文件的所有者和所属组设置为与另一个文件相同

    chown --reference=reference.txt file.txt
    

    这将把 file.txt 的所有者和所属组设置为 reference.txt 的所有者和所属组。

chgrp

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

语法:chgrp [选项] 所属组 文件名

常用选项

  • -R:递归更改目录及其所有子目录和文件的所属组。
  • --reference=文件名:将所属组设置为与另一个文件相同的所属组。
  1. 更改文件的所属组

    chgrp group1 file.txt
    

    这将把 file.txt 的所属组更改为 group1,保持当前的所有者不变。

  2. 递归更改目录及其所有子目录和文件的所属组

    chgrp -R group1 /path/to/directory
    

    这将把 /path/to/directory 目录及其所有子目录和文件的所属组更改为 group1

  3. 将文件的所属组设置为与另一个文件相同

    chgrp --reference=reference.txt file.txt
    

    这将把 file.txt 的所属组设置为 reference.txt 的所属组。

文件掩码

文件掩码(File Mask)是用来控制新创建的文件和目录的默认权限的一种机制。文件掩码实际指的是umask(用户文件创建掩码)。

文件的最终权限是由默认权限和 umask 的掩码值共同决定的。

  1. 默认权限
  • 文件的默认权限666rw-rw-rw-
  • 目录的默认权限777rwxrwxrwx
  1. umask

umask 是一个三位八进制值,表示从默认权限中去除的权限。

  1. 计算最终权限的步骤

步骤 1:获取 umask 的反码

  • 反码是将 umask 的每一位按位取反。反码值用于计算实际权限。

步骤 2:计算实际权限

  • 实际权限 是通过将默认权限与 umask 的反码进行按位与操作来计算的。

公式:
实际权限 = 默认权限 & ∼ umask \text{实际权限} = \text{默认权限} \& \sim \text{umask} 实际权限=默认权限&umask
示例 1:umask = 022

  1. 文件权限计算

    • 默认权限(文件):666rw-rw-rw-
    • umask:022----w--w-

    取 umask 的反码:

    • umask 022 的反码是 755rwxr-xr-x

    新文件的实际权限是 644rw-r--r--)。

  2. 目录权限计算

    • 默认权限(目录):777rwxrwxrwx
    • umask:022----w--w-

    取 umask 的反码:

    • umask 022 的反码是 755rwxr-xr-x

    新目录的实际权限是 755rwxr-xr-x)。

umask

umask 是一个用于设置文件和目录默认权限掩码的命令,其值影响新创建文件和目录的权限。

查看当前 umask 值:

image-20240809172206682

这表示当前的 umask 值为 0022,意味着新创建的文件和目录的权限会在默认权限的基础上去除 0022 指定的权限。第一个0代表八进制

  1. 修改 umask(如果需要更改):

    umask 0077
    

    设置 umask0077,去除组和其他用户的所有权限。新创建的文件和目录将会有最严格的权限设置。

    image-20240809172401806

临时与永久设置

  • 临时设置
    使用 umask 命令修改当前会话的 umask 值。更改只对当前终端会话有效,一旦会话结束,设置将恢复到默认值。

  • 永久设置
    可以将 umask 命令添加到用户的 shell 配置文件中,例如 ~/.bashrc~/.profile 文件。这样设置会在每次登录时应用。

    echo "umask 0022" >> ~/.bashrc
    

    然后,重新加载配置文件以应用更改:

    source ~/.bashrc
    

file

用于确定文件类型的实用工具。在Linux和Unix系统中,file 命令可以分析文件的内容并尝试识别文件的类型,而不仅仅是依赖于文件扩展名。

**基本用法:**file [选项] 文件名

image-20240809172713370

常用选项

  • -b--brief

    • 仅显示文件类型,不显示文件名。
  • -i--mime

    • 显示文件的 MIME 类型而不是传统的文件描述。
  • -f

    • 从指定的文件中读取文件名列表,依次识别每个文件的类型。
    file -f filelist.txt
    

    filelist.txt 应该包含文件名列表,每行一个文件名。

  • -z

    • 试图识别压缩文件中的文件类型。
    file -z archive.tar.gz
    

    这将识别压缩文件中的内容类型。

解析输出

  • ASCII text:表示文件是 ASCII 文本文件。
  • PNG image data:表示文件是 PNG 图像数据。
  • application/pdf:表示文件是 PDF 文件,MIME 类型为 application/pdf
  • gzip compressed data:表示文件是经过 gzip 压缩的数据。

粘置位

粘着位(Sticky Bit) 是一种特殊的文件权限位,用于控制文件或目录的删除权限。在共享目录中非常有用。

  1. 对于目录

    • 粘着位用于目录时,确保只有文件的所有者(或根用户)才能删除该目录中的文件。即使其他用户有写权限,也不能删除或重命名该目录中的文件,除非他们是这些文件的所有者。
    • 这种机制通常用于公共或共享目录,例如 /tmp,以防止非所有者的用户删除或修改其他用户的文件。
  2. 对于文件

    • 粘着位对文件的作用不大,主要用于目录。

设置粘着位

  • 使用 chmod 命令设置粘着位,可以使用 +t 选项。
chmod +t directory_name

image-20240809173333621

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拖拉机厂第一代码手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值