Linux 权限管理

目录

0.前言

1.shell命令及其运行原理

2.Linux权限概念

3.Linux权限管理

3.1文件访问者分类(人属性)

3.2文件类型与访问属性(事物属性)

3.2.1文件类型

3.2.2基本权限

3.3文件权限值的表示方法

3.3.1字符表示

3.3.2八进制/二进制数字表示

3.4文件访问权限的设置方法

3.4.1chmod

3.4.1.1用户表示符+/-=权限字符

3.4.1.2三位8进制数字

3.4.2chown

3.4.3chgrp

3.4.4umask

4.file指令

4.1使用 sudo 分配权限

4.1.1 修改 /etc/sudoers 文件分配权限

4.1.2 使用 sudo 调用授权的命令

5.目录的权限

5.1目录权限介绍

5.2粘滞位

6.结语


(图像由AI生成)

0.前言

在前面的章节中,我们介绍了Linux的一些基本指令和操作。这一节我们将深入探讨Linux系统中的权限管理,这是保障系统安全和正常运行的关键环节。通过对权限管理的理解和掌握,可以有效地保护系统文件和数据,避免不必要的安全风险。

1.shell命令及其运行原理

在Linux中,Shell是用户与操作系统之间的重要桥梁。虽然我们无法直接与Linux内核(kernel)交互,但可以通过Shell与其进行沟通。Shell的主要功能是解释用户输入的命令并将其传递给内核,执行相应的操作。

Shell的工作原理可以简单归纳为以下几点:

  • 将用户的指令翻译成内核可以理解的命令。
  • 反馈执行结果并显示给用户。

与Windows的图形用户界面(GUI)不同,Linux通过命令行界面(CLI)与用户进行交互,这使得操作更加灵活和强大。用户可以通过输入命令来执行各种任务,例如文件管理、系统监控和网络配置等。

Shell在Linux中的作用主要体现在以下方面:

  • 命令解释器:将用户输入的命令翻译成内核可以理解的操作指令。
  • 脚本执行器:可以编写Shell脚本,自动化执行多条命令,简化复杂任务。

2.Linux权限概念

在Linux系统中,权限管理是保证系统安全和稳定运行的重要机制。权限控制决定了谁可以访问、修改或执行文件和目录。

用户分类

Linux中的用户分为三类:

  • 超级用户(root):拥有系统的最高权限,可以执行任何操作。
  • 普通用户:权限受限,只能访问和操作自己拥有的文件和目录。
  • 组用户:与文件所有者同组的用户,具有特定的组权限。

权限类型

每个文件和目录都具有三种基本权限:

  • 读(r):允许查看文件内容或列出目录内容。
  • 写(w):允许修改文件内容或在目录中创建、删除文件。
  • 执行(x):允许执行文件或进入目录。

通过理解这些基本概念和权限类型,用户可以更有效地管理和保护Linux系统中的资源。

示例命令

  • su [用户名]:切换用户身份。如果普通用户要切换到root用户,则使用su命令,并输入root用户的密码。这使得用户可以临时获得超级用户权限,执行需要更高权限的操作。

3.Linux权限管理

3.1文件访问者分类(人属性)

在Linux系统中,文件和目录的访问者被分类为三种类型:

  • 用户(User,u):文件或目录的所有者。
  • 组(Group,g):文件或目录所属的用户组。
  • 其他人(Others,o):系统中的其他用户。

例如,在下图中:

可以看到每个文件和目录的权限设置,包括所有者、所属组以及其他用户的权限。

3.2文件类型与访问属性(事物属性)

3.2.1文件类型

Linux系统中的文件类型主要包括:

  • 普通文件(-):例如文本文件、脚本文件等。
  • 目录文件(d):用于存放其他文件和目录。
  • 符号链接文件(l):类似于Windows的快捷方式。
  • 块设备文件(b):例如硬盘、光驱等。
  • 字符设备文件(c):例如屏幕、串口设备等。
  • 管道文件(p):用于进程间通信的特殊文件。
  • 套接字文件(s):用于网络通信的特殊文件。

如3.1中截图所示,不同的文件类型(具体为每行的第一个字符)在权限显示中有不同的表示方式。如install.sh为“-”,表示普通文件;linux_learning为“d”,表示目录(文件夹)。

3.2.2基本权限

每个文件和目录都有三种基本权限:

  • 读(r):允许查看文件内容或列出目录内容。
  • 写(w):允许修改文件内容或在目录中创建、删除文件。
  • 执行(x):允许执行文件或进入目录。

在3.1的示例截图中:(注:每行第2-4字符为“所有者”权限,5-7为“所属组”权限,8-10为“其他用户”权限

  • -rw-rw-r--表示普通文件install.sh的权限,其中所有者和所属组都有读写权限,而其他用户只有读权限。
  • drwxrwxr-x表示目录linux_learning的权限,其中所有者和所属组都有读写执行权限,而其他用户只有读和执行权限。

3.3文件权限值的表示方法

3.3.1字符表示

文件权限可以通过字符来表示,每个权限用三个字符表示,分别对应读(r)、写(w)、和执行(x)。以下是不同权限组合的字符表示方法:

Linux表示说明Linux表示说明
r--只读-w-仅可写
--x仅可执行rw-可读可写
-wx可写和可执行r-x可读可执行
rwx可读可写可执行---无权限

3.3.2八进制/二进制数字表示

文件权限也可以用八进制和二进制数字来表示。以下是不同权限符号对应的八进制和二进制表示方法:

权限符号 (读写执行)八进制二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
---0000

通过以上两种表示方法,可以清晰地理解和设置Linux系统中文件的访问权限。字符表示法直观易懂,而八进制/二进制表示法则在权限设置命令中更加简洁和高效。

3.4文件访问权限的设置方法

在Linux系统中,文件和目录的访问权限可以通过多种命令进行设置。以下是常用的命令和其使用方法。

3.4.1chmod

chmod命令用于设置文件的访问权限。其基本格式为:

chmod [参数] 权限 文件名

常用选项:

  • -R:递归修改目录及其文件的权限。

说明:只有文件的所有者和root用户才可以改变文件的权限。

3.4.1.1用户表示符+/-=权限字符

使用符号表示法,可以通过以下符号来设置权限:

  • +:向权限范围增加权限代号所表示的权限。
  • -:向权限范围取消权限代号所表示的权限。
  • =:向权限范围赋予权限代号所表示的权限。

用户符号:

  • u:所有者
  • g:所有者同组用户
  • o:其他用户
  • a:所有用户

实例

  • 向文件/home/abc.txt的所有者增加写权限:
    chmod u+w /home/abc.txt
  • 取消文件/home/abc.txt对其他用户的执行权限:
    chmod o-x /home/abc.txt
3.4.1.2三位8进制数字

使用八进制数字表示法,可以一次性设置所有权限。(如忘记,可返回阅读3.3.2八进制/二进制数字表示)注意:第一、二、三个八进制数字分别代表所有者、所属组和其他用户的权限。

实例

  • 设置文件/home/abc.txt的权限为所有者读写,组用户和其他用户只读:
    chmod 644 /home/abc.txt
  • 设置文件/home/abc.txt的权限为所有者读写,组用户只读,其他用户无权限:
    chmod 640 /home/abc.txt

3.4.2chown

chown命令用于修改文件的所有者。其基本格式为:

chown [参数] 用户名 文件名

实例

  • 将文件f1的所有者改为用户user1
    chown user1 f1
  • 递归修改目录filegroup1及其文件的所有者为用户user1
    chown -R user1 filegroup1

3.4.3chgrp

chgrp命令用于修改文件或目录的所属组。其基本格式为:

chgrp [参数] 用户组名 文件名

常用选项:

  • -R:递归修改文件或目录的所属组。

实例

  • 将文件f1的所属组改为组group1
    chgrp group1 f1
  • 递归修改目录filegroup1及其文件的所属组为组group1
    chgrp -R group1 filegroup1

3.4.4umask

umask命令用于查看或修改文件权限掩码(umask)。创建新文件或目录时,系统默认权限会受到umask值的影响。

新建文件的默认权限是0666(即所有用户都有读写权限),新建目录的默认权限是0777(即所有用户都有读写和执行权限)。然而,实际创建的文件和目录的权限往往不是这些默认值,这是因为它们受到了umask的影响。

假设默认权限是mask,实际创建的文件权限是:mask & ~umask。

格式

umask 权限值

说明: 将现有的权限值减去权限掩码值后,即可产生建立文件时的预设权限。超级用户默认掩码值为0022,普通用户默认为0002

实例

  • 查看当前umask值:

    umask
  • 设置umask值为755

    umask 755

通过设置umask值,可以控制新建文件和目录的默认权限,从而提高系统的安全性和管理的灵活性。例如,设置umask值为0022,意味着新建文件的默认权限将从0666变为0644(即所有者有读写权限,组和其他用户只有读权限),新建目录的默认权限将从0777变为0755(即所有者有读写执行权限,组和其他用户有读执行权限)。

这对于系统管理员和开发者来说,是一种有效的权限管理方式,可以确保新建文件和目录的安全性,同时减少不必要的权限设置操作。

4.file指令

file命令用于识别文件类型,它通过检查文件的头部信息和内容来确定文件的具体类型。该命令在文件管理和系统维护中非常有用。

功能:辨识文件类型。

语法

file [选项] 文件或目录...

常用选项

  • -c:详细显示指令执行过程,便于排错或分析程序执行的情况。
  • -z:尝试去解读压缩文件的内容。

示例

file /etc/passwd

这条命令将输出文件/etc/passwd的类型,例如“ASCII text”。

4.1使用 sudo 分配权限

sudo命令允许系统管理员将权限授予普通用户,从而让他们能够执行特定的系统命令。下面介绍如何配置和使用sudo命令。

4.1.1 修改 /etc/sudoers 文件分配权限

要配置sudo权限,需要编辑/etc/sudoers文件。建议使用visudo命令进行编辑,以避免语法错误。

步骤

  • 修改/etc/sudoers文件权限,使其只有所有者可读写:
    chmod 740 /etc/sudoers
  • 使用visudo命令编辑/etc/sudoers文件:
    vi /etc/sudoers

/etc/sudoers文件中,可以添加如下行来授予用户特定权限:

username ALL=(ALL) ALL

这样配置后,用户username将拥有执行所有命令的权限。

4.1.2 使用 sudo 调用授权的命令

配置完成后,用户可以使用sudo命令来执行需要权限的操作。

语法

sudo -u 用户名 命令

示例

  • 使用root用户权限添加用户u2
    sudo -u root /usr/sbin/useradd u2

通过使用sudo命令,系统管理员可以有效地控制用户权限,确保系统的安全性和稳定性。

5.目录的权限

目录在Linux系统中不仅仅是存放文件的地方,它们也有自己的权限设置。理解目录权限对于有效管理系统资源和保证安全至关重要。

5.1目录权限介绍

目录的权限和文件类似,分为读(r)、写(w)和执行(x)三种,但它们的作用有所不同:

  • 执行权限:如果目录没有执行权限,则无法使用cd命令进入该目录。
  • 可读权限:如果目录没有可读权限,则无法使用ls命令查看目录中的文件内容。
  • 可写权限:如果目录没有可写权限,则无法在目录中创建或删除文件。

举个例子:

  • 一个用户如果对某个目录只有写权限,但没有读和执行权限,那么这个用户可以在该目录下创建或删除文件,但无法查看目录内容或进入目录。

5.2粘滞位

粘滞位(Sticky Bit)是目录权限的一种特殊设置,它限制了目录中文件的删除权限。通常,任何用户如果对某个目录具有写权限,都可以删除该目录中的文件。然而,启用了粘滞位的目录中,只有文件的所有者、目录的所有者或超级用户才能删除文件。

设置粘滞位的命令是chmod +t。例如:

chmod +t /home

设置粘滞位后,可以使用ls -ld命令查看目录权限:

ls -ld /home

输出结果将显示粘滞位设置,如下所示:

drwxrwxrwt 3 root root 4096 9月 19 16:00 /home/

下面是一个示例,展示了粘滞位的作用:

  1. 给目录/home添加粘滞位:

    chmod +t /home
  2. 查看目录权限:

    ls -ld /home
  3. 尝试删除其他用户的文件:

    su - litao rm /home/abc.c

如果文件不是当前用户创建的,将会出现以下提示,无法删除:

rm: 无法删除“/home/abc.c”:不允许的操作

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由以下三种情况之一删除:

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除

通过以上设置和管理,可以有效防止用户意外删除其他用户的重要文件,保证系统的安全和稳定。

6.结语

通过本篇博客,我们深入了解了Linux权限管理的各个方面,从基本的权限概念到具体的命令操作,再到特殊的粘滞位设置。这些知识不仅帮助我们有效管理系统文件和目录,确保系统安全和稳定运行,也为我们的日常操作提供了有力支持。希望这些内容能为你在实际工作中带来帮助,让你在Linux系统管理中更加得心应手。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值