Linux 权限管理入门:从基础到实践

文章目录

引言

在 Linux 系统中,权限管理是确保多用户环境下文件和目录安全的核心机制。无论是普通用户还是系统管理员,理解权限概念都至关重要。本文将带你从零开始,逐步掌握 Linux 权限的核心知识,包括权限表示、设置方法、目录权限等,帮助你快速上手。

一、Linux 权限管理概述

  1. 权限的作用

    Linux 通过权限控制不同用户对文件和目录的访问权限(读、写、执行),确保:

    • 所有者:文件 / 目录的创建者,拥有最高控制权。
    • 组用户:同一用户组内的成员,权限由组设置决定。
    • 其他用户:不属于上述两类的用户,权限通常更严格。

例如,/etc/shadow文件仅 root 用户可读写,普通用户无法访问,保障系统安全。

二、文件权限值的表示方法

  1. 字母与数字对应
权限 字母 数字 含义
r 4 查看内容(文件)/ 列出目录(目录)
w 2 修改内容(文件)/ 创建删除文件(目录)
执行 x 1 运行程序(文件)/ 进入目录(目录,如cd)
  1. 权限字符串结构

使用 ls -l 查看文件权限,例如:

bash 复制代码
drwxrwxr-x 4 zkp zkp 4096 Jun  2 22:05 a
  • 第一位 - 表示文件类型(d 为目录,l 为链接)。
  • 接下来三组(rwx, rwx, r-x)分别对应 所有者其他用户 的权限。
  1. 数字计算示例
    • 755 表示:所有者 rwx(7=4+2+1),组和其他 r-x(5=4+1)。
    • 644 表示:所有者 rw-(6=4+2),组和其他 r--(4)。

三、文件访问权限的设置(chmod)

  1. 数字方式
bash 复制代码
chmod 755 file.txt  # 所有者rwx,组和其他rx
chmod 600 file.txt  # 所有者rw-,组和其他无权限
  1. 符号方式
    • u(用户)、g(组)、o(其他)、a(所有):
bash 复制代码
chmod u+x file.txt  # 给所有者添加执行权限
chmod g-w file.txt  # 移除组的写权限
chmod o+rwx file.txt  # 给其他用户添加全部权限(谨慎使用!)
  1. 实战举例
bash 复制代码
# 创建文件,默认权限644(umask影响,可忽略)
touch test.txt
ls -l test.txt  # -rw-r--r--

# 给所有用户添加执行权限(文件需可执行时用,如脚本)
chmod a+x test.txt  # -rwxr-xr-x

四、file指令:快速识别文件类型

bash 复制代码
file test.txt  # 输出:test.txt: ASCII text(文本文件)
file /bin/ls   # 输出:/bin/ls: ELF 64-bit executable(二进制可执行文件)
file /etc      # 输出:/etc: directory(目录)

通过file指令,可快速判断文件是否为脚本、二进制程序或目录,辅助权限设置(如脚本需x权限)。

五、目录的权限

  1. 目录权限的特殊规则

    • 读(r):ls 可列出目录内容,但无法 cd 进入(需x)。
    • 写(w):可在目录内创建、删除文件(即使文件属主不是你,只要目录有w权限)。
    • 执行(x):允许 cd 进入目录,是访问目录内容的前提(无x则ls也会报错)。
  2. 示例:公共目录权限

bash 复制代码
mkdir public_dir
chmod 777 public_dir  # 所有用户可读写执行(危险!测试用)
cd public_dir          # 成功(x权限)
touch file1            # 成功(w权限)
ls                     # 成功(r权限)

实际中,公共目录(如/tmp)会设置粘滞位(见下文),避免误删他人文件。

六、普通文件的权限

  1. 普通文件权限的作用

    普通文件(如文本文件、脚本、二进制程序等)的权限直接控制对文件内容的访问:

    • 读(r):查看文件内容(如 cat file.txt)。
    • 写(w):修改文件内容(如 echo "new line" >> file.txt)。
    • 执行(x):运行文件(如脚本 ./script.sh 或二进制程序 ./a.out)。
  2. 权限设置示例

(1)文本文件权限(644)

bash 复制代码
touch notes.txt
chmod 644 notes.txt  # 或 chmod u=rw,g=r,o=r notes.txt
ls -l notes.txt      # -rw-r--r-- (所有者rw,组和其他r)

(2)可执行脚本权限(755)

bash 复制代码
echo "#!/bin/bash\necho Hello" > script.sh
chmod 755 script.sh  # 所有者rwx(可修改、运行),组和其他rx(可运行,不可修改)
./script.sh          # 执行成功(需x权限)

(3)敏感文件权限(600)

bash 复制代码
echo "secret: 12345" > secret.conf
chmod 600 secret.conf  # 仅所有者可读写(如 `vim secret.conf` 可修改,`cat secret.conf` 可查看)
  1. 权限与文件类型的关联
    • 文本文件:通常不需要 x 权限(除非是脚本,需手动添加 x)。
    • 二进制程序:编译后默认可能有 x 权限(如 gcc 生成的可执行文件)。
    • 脚本文件:需手动添加 x 权限(如 chmod +x script.sh),否则无法直接运行(提示 "Permission denied")。

七、权限总结

  1. 普通文件权限重点:
    • 644:最常见的文本文件权限(所有者 rw,组和其他 r)。
    • 755:可执行文件(如脚本、程序)的典型权限。
    • 避免给普通文件设置w权限(尤其是系统文件),防止意外修改。

八、粘滞位

粘滞位仅对目录有效,但影响目录内普通文件的删除规则:

  • 无粘滞位时 ,目录有w权限的用户可删除任何文件(即使文件属主不同)。
  • 有粘滞位时(如/tmp) ,用户只能删除自己的文件,保护他人数据。
相关推荐
微步_ym12 分钟前
RabbitMQ:在Linux上安装RabbitMQ
linux·rabbitmq·erlang
CC.GG33 分钟前
【Linux】倒计时和进度条实现
linux
Code Warrior1 小时前
【Linux】库的制作与原理(1)
linux
生涯にわたる学び1 小时前
关于之前知识的一些补充 02
linux·arm开发
汐汐咯1 小时前
linux上安装minconda
linux·运维·服务器
小波小波轩然大波2 小时前
Linux服务器配置(mariadb服务器)
linux·服务器·mariadb
忧郁的橙子.2 小时前
k8s 主节点重启后 从节点 get 异常
linux·运维·服务器
Raymond运维2 小时前
Apache介绍和安装
linux·运维·apache
半梦半醒*2 小时前
nginx的访问控制、用户认证、https
linux·运维·服务器·nginx·https·centos
Skrrapper3 小时前
ubuntu?centos?还是 redhat?Linux 系统选哪个?
linux·ubuntu·centos