零基础Linux入门教程:Linux 权限管理

零基础Linux入门教程:Linux 权限管理


一、Linux 权限概念

1. 用户分类

  • 超级用户(root

    • 拥有系统中的最高权限,可以执行任何操作,例如删除系统文件、修改权限、安装软件等。
    • 命令行提示符为 #,通常以 root 用户身份登录需谨慎操作,避免误删或破坏系统文件。
    • 使用超级用户身份的切换:
     su           # 切换到 root 用户(需输入 root 密码)
     sudo su      # 使用当前用户的 sudo 权限切换到 root(需当前用户有 sudo 权限)
    

    注意:sudo 的安全性更高,推荐优先使用。

  • 普通用户

    • 权限受限,无法执行涉及系统安全或重要设置的操作(如安装系统级软件、操作系统目录 /etc 等)。
    • 命令行提示符为 $,适用于日常操作(如编辑个人文件、运行普通程序)。

2. 文件访问者分类

文件在 Linux 中有三种访问者,每种访问者可以设置不同权限:

  • 用户(u,Owner)

    • 文件的拥有者。通常是创建该文件的用户,但可以使用 chown 命令更改文件的拥有者。
  • 组(g,Group)

    • 文件的所属用户组(Group)。组内的所有用户共享该文件的“组权限”。
    • 一个文件只能归属于一个组。通过 chgrp 可以更改文件的所属组。
  • 其他用户(o,Others)

    • 除“文件拥有者”和“文件所属组”之外的所有其他用户,权限独立设置。

文件访问者的权限可以通过 ls -l 查看。例如:

drwxr-xr--  2 user group 4096 Nov 26 12:34 mydir

上面表示:

  • user 是文件拥有者(u),
  • group 是文件所属组(g),
  • 其他用户(o)对该文件的权限显示为 r--

3. 文件类型

文件在 Linux 系统中的类型,通过 ls -l 的第一个字符表示:

  • -:普通文件(regular file),如文本文件、二进制文件。
  • d:目录(directory),相当于 Windows 的文件夹。
  • l:符号链接(soft link),类似于 Windows 的快捷方式,指向其他文件或目录。
  • b:块设备(block device),如硬盘分区文件。
  • c:字符设备(character device),如键盘、串口设备。
  • p:管道(pipe),用于进程间通信。
  • s:套接字(socket),用于网络通信。

ls-l

drwx------ ,第一个字符为d,表示改文件是一个目录,即文件夹。


4. 权限表示

Linux 中的权限分为三种基本权限:

  • 读(r,read)

    • 对文件:表示可以读取文件内容。
    • 对目录:表示可以查看目录内容(ls 命令)。
    • 值为 4
  • 写(w,write)

    • 对文件:表示可以修改文件内容。
    • 对目录:表示可以在目录内创建、删除或修改文件。
    • 值为 2
  • 执行(x,execute)

    • 对文件:表示可以运行该文件(需为可执行文件,如脚本或二进制程序)。
    • 对目录:表示可以进入该目录(cd 命令)。
    • 值为 1

5. 权限表示的结构

文件权限由 三组权限字段 组成,每组对应文件访问者:用户(u)、组(g)、其他用户(o)。

  • 例如:rwxr-xr-- 表示:
    • 用户(u)rwx = 读+写+执行(值为 7
    • 组(g)r-x = 读+执行(值为 5
    • 其他用户(o)r-- = 读(值为 4

6. 八进制权限

通过权限字段的二进制值求和,可得出对应的八进制表示:

  • rwxr-xr–7 5 4
    • rwx = 111 = 7
    • r-x = 101 = 5
    • r-- = 100 = 4

八进制权限可以直接用在 chmod 命令中设置权限:

chmod 754 myfile

此命令将 myfile 的权限设置为 用户可读写执行,组用户可读执行,其他用户仅可读

示例:文件权限一览

命令:

ls -l

输出:

-rw-r--r--  1 user group  1234 Nov 26 12:00 file.txt
drwxr-xr-x  2 user group  4096 Nov 26 12:30 folder

解释:

  • -rw-r--r--:普通文件,用户可读写,组和其他用户仅可读。
  • drwxr-xr-x:目录,用户可读写执行,组和其他用户可读执行。

二、权限管理命令

1. chmod:修改文件或目录权限

chmod 是用来修改文件或目录的访问权限的命令。权限可以用符号模式或八进制模式表示。

命令格式:

chmod [选项] 模式 文件
  • 符号模式:
    通过 u(用户)、g(组)、o(其他用户)、a(全部用户)指定作用范围,结合 +(添加权限)、-(移除权限)和 =(设置权限)操作符来设置权限。
    示例:
 chmod u+rwx file   # 给文件的用户增加读写执行权限
 chmod g-w file     # 移除文件对组用户的写权限
 chmod o=rx file    # 设置其他用户仅具有读和执行权限
 chmod a+x file     # 为所有访问者添加执行权限
  • 八进制模式:
    使用八进制数值直接设置 u/g/o 的权限。
    示例:
 chmod 755 file     # 将权限设置为 rwxr-xr-x
 chmod 644 file     # 将权限设置为 rw-r--r--
 chmod -R 755 dir   # 递归设置目录及其子文件权限
  • 选项:
    • -R:递归修改目录和子文件的权限。
    • -v:显示每个文件权限更改的详细信息。
    • -c:只显示已更改的文件权限。

2. chown:修改文件的拥有者

chown 用于更改文件或目录的拥有者或所属组。超级用户(root)权限才能操作。

命令格式:

chown [选项] 拥有者[:组] 文件
  • 改变拥有者:
 chown user file   # 将文件的拥有者改为 user
  • 改变拥有者和组:
 chown user:group file   # 同时改变文件的拥有者和所属组
  • 只改变组:
    如果只想改变组而保持拥有者不变:
 chown :group file   # 将文件的组改为 group
  • 递归操作:
 chown -R user:group dir  # 递归修改目录及其子文件的拥有者和组
  • 选项:
    • -R:递归修改目录和子文件。
    • -v:显示修改后的详细信息。

3. chgrp:修改文件的所属组

chgrp 用于修改文件或目录的所属组,需目标组对用户可用。

命令格式:

chgrp [选项] 组 文件
  • 改变所属组:
 chgrp group file   # 将文件的组改为 group
  • 递归操作:
 chgrp -R group dir   # 递归修改目录及其子文件的组
  • 选项:
    • -R:递归修改。
    • -v:显示详细信息。

4. umask:设置默认权限掩码

umask 命令用于设置新创建文件或目录的默认权限掩码。

命令格式:

umask [掩码值]
  • 权限掩码计算规则:

    • 新文件默认权限为 666(无执行权限)。
    • 新目录默认权限为 777
    • 实际权限 = 默认权限 - 掩码值。
  • 查看当前掩码:

 umask  # 显示当前掩码值(如 022)
  • 设置掩码值:
 umask 022  # 设置新文件权限为 644,新目录权限为 755
  • 应用实例:
    如果掩码值是 077
    • 新文件权限为 600(只有用户可读写)。
    • 新目录权限为 700(只有用户可读写执行)。

权限管理命令的典型用法总结:

命令用途示例
chmod修改文件/目录权限chmod 755 filechmod u+w file
chown修改文件拥有者和所属组chown user:group filechown -R user:group dir
chgrp修改文件的所属组chgrp group filechgrp -R group dir
umask设置新文件/目录的默认权限掩码umask 022umask 077

通过合理使用以上命令,可以高效地管理 Linux 系统中的文件权限。


三、特殊权限:粘滞位(Sticky Bit)

1. 粘滞位的作用

粘滞位是一种特殊权限,主要用于目录。它确保只有以下两类用户才能删除或移动该目录下的文件或子目录:

  • 文件的拥有者。
  • 目录的拥有者(或超级用户 root)。

这项权限通常用于公共目录,防止其他用户误删或恶意删除别人的文件。例如,Linux 系统中的 /tmp 目录就是粘滞位的典型应用场景。


2. 粘滞位的设置和移除

粘滞位可以通过 chmod 命令启用或禁用,使用符号模式或八进制模式设置。

命令格式:

chmod +t directory  # 设置粘滞位
chmod -t directory  # 移除粘滞位
chmod 1755 directory  # 使用八进制设置,1 表示启用粘滞位

示例:

mkdir /public        # 创建一个公共目录
chmod 777 /public    # 为目录设置所有用户的读、写、执行权限
chmod +t /public     # 为该目录添加粘滞位

3. 粘滞位的权限表示

使用 ls -ld 命令查看目录权限时,粘滞位以字符 t 的形式显示在权限字符串的最后一位:

  • t:表示启用了粘滞位,且目录对用户有执行权限。
  • T:表示启用了粘滞位,但目录对用户没有执行权限。

示例:

ls -ld /tmp
drwxrwxrwt  14 root root 4096 Nov 27  /tmp

在这里:

  • drwxrwxrwt 表示 /tmp 是一个目录。
  • 权限字符串最后的 t 表示粘滞位已启用。

4. 粘滞位的作用场景

粘滞位的典型用途是保护公共目录中的文件。例如:

  • /tmp 目录:
    系统中的 /tmp 是一个临时文件存放目录,允许所有用户创建和访问文件。如果没有粘滞位,其他用户可以删除或移动非自己的文件,造成混乱。
  • 公共项目目录:
    在共享工作环境中,团队成员可能需要访问同一个目录,但应避免删除他人的文件。

5. 注意事项

  • 仅对目录有效:
    粘滞位只对目录有效,对普通文件无作用。即使对文件设置了粘滞位,它也不会影响文件的删除或操作权限。

  • 不能防止修改文件内容:
    粘滞位不限制其他用户修改文件内容,只限制文件的删除和移动权限。

  • 与基本权限配合使用:
    如果目录权限设置为 700,即只有拥有者可以访问,则粘滞位没有实际意义;只有在目录对多个用户开放时(如 777)才需要启用粘滞位。


6. 八进制模式设置粘滞位

在八进制权限中,粘滞位的值为 1,设置时添加到最前面的高位:

  • 目录权限示例:
    • 777:目录具有所有权限,无粘滞位。
    • 1777:目录具有所有权限并启用了粘滞位。
 chmod 1777 /shared  # 为目录设置 rwxrwxrwt 权限
 chmod 1770 /shared  # 设置 rwxrwx--T(仅组用户和所有者可操作,启用粘滞位)
特性说明
作用范围只对目录有效。
功能限制非拥有者删除或移动目录下的文件或子目录。
权限显示t 表示启用且可执行,T 表示启用但不可执行。
典型应用场景/tmp 目录、公共共享目录。
设置命令(符号模式)chmod +t directory
设置命令(八进制模式)chmod 1777 directory

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值