拒绝权限报错!三分钟掌握 Linux 权限管理

1. sudo 命令简介

  • sudo 用来进行指定的短暂授权。例如安装软件时需要管理员(root)权限,实际上安装的是一份软件,允许大家同时使用。

  • 权限控制如同"白名单",只有被列入的用户才能执行特定操作。

举例:

bash 复制代码
whoami
普通用户 -> sudo ls
# 报错
[sudo] password for kiana: is not in the sudoers file. This incident will be reported.

sudo 提示用户是否在 sudoers 文件中,决定是否授权。

bash 复制代码
-r--r----- root root /etc/sudoers

添加用户权限:

bash 复制代码
root ALL=(ALL) ALL
whb  ALL=(ALL) ALL

2. 权限概述

权限的本质是:决定用户能做或者不能做什么操作。

权限的两个主要目的

  1. 控制用户行为:防止错误发生。

  2. 理解和管理权限:分配精细的权限,控制访问。

权限 = 角色 + 目标属性

  • 角色:拥有者(user)、所属组(group)、其他用户(other)。

  • 目标属性:文件的读、写、执行权限。

3. 文件权限

文件权限组成

权限由9个字符表示:rwxrwxrwx

  • r = 读权限

  • w = 写权限

  • x = 执行权限

三个为一组

第一组表示拥有者权限,第二组表示所属组权限,第三组表示其他用户权限。

文件权限的数字表示

  • rwx = 7 (二进制: 111)

  • rw- = 6 (二进制: 110)

  • r-- = 4 (二进制: 100)

    例如

bash 复制代码
-rwxrw-r-- 1 kiana kiana 0 Sep 24 18:51 my.txt
↑ ↑↑↑ ↑↑↑ ↑
│ │││ │││ └── 其他用户权限(r--)
│ │││ └─┴──── 所属组权限(rw-)
│ └┴┴─────── 拥有者权限(rwx)
└─────────── 文件类型(-表示普通文件)

4. chmod 修改文件权限

  • u:拥有者(user)

  • g:所属组(group)

  • o:其他用户(others)

字符模式

bash 复制代码
chmod u-r my.txt  # 移除拥有者的读权限
chmod u+r my.txt  # 恢复拥有者的读权限
chmod u+rwx my.txt  # 为拥有者添加读、写、执行权限

数字模式

bash 复制代码
chmod 644 file    # 设置权限为rw-r--r--
chmod 755 file    # 设置权限为rwxr-xr-x

修改限制

  • 用户只能修改自己的文件权限。

  • 修改其他用户的文件权限需要更高权限(如 sudo)。

5. chown更改文件的所有者

普通用户无法改变其他用户的文件所有者,必须拥有 root 权限。

bash 复制代码
sudo chown kiana:kiana cmd  # 更改文件所有者

没有权限时会遇到什么情况?

系统会拒绝访问:

bash 复制代码
cat my.txt
# cat: my.txt: Permission denied

6. 目录权限

目录权限与文件权限有所不同,特别是执行权限在目录中的作用:

  • 读®:查看目录内容(列出文件)

  • 写(w):在目录中创建、删除、重命名文件

  • 执行(x):进入目录

注意:

  1. 没有读权限:无法查看目录内容

  2. 没有执行权限:无法进入目录

  3. 没有写权限:无法在目录内创建/删除文件

  4. 文件删除权限:取决于所在目录的写权限,而非文件本身权限

权限实例

bash 复制代码
drwxrwxr-x 2 kiana kiana 4096 Sep 24 20:48 code
  • 目录拥有者和所属组都有完全权限(rwx

  • 其他用户有读取和进入的权限(r-x),但不能修改目录内容。

7. 粘滞位(Sticky bit)

  • 作用:用于共享目录,防止非拥有者删除他人文件

  • 设置方法chmod +t directorychmod 1777 directory

  • 特征 :目录权限最后一位变为t,如drwxrwxrwt

  • 效果:用户只能删除自己创建的文件

设置粘滞位

bash 复制代码
chmod +t /shared/directory

共享文件一般放在系统文件tmp下

bash 复制代码
drwxrwxrwt  14 root root  4096 Jan 14 20:31 tmp/

8. 权限掩码 (umask)

umask:默认的文件权限掩码,控制文件或目录的默认权限。

默认权限

  • 普通文件的默认权限:666(rw-rw-rw-)(去掉可执行权限)

  • 目录的默认权限:777(rwxrwxrwx)(包含执行权限)

  • umask 会与默认权限进行按位与操作,从而决定最终的权限。

  • 最终权限 = 起始权限 & (~umask)

查看 umask

bash 复制代码
umask
0022    #因系统而异
  • 对文件:666 & (~0022) = 648(去掉了其他用户的写权限)

  • 对目录:777 & (~0022) = 753(去掉了其他用户的写权限)

9. 总结

  • 角色:每个文件都有三个角色权限:拥有者、所属组、其他用户。

  • 角色判定顺序:拥有者 → 所属组 → 其他用户(只判定一次)

  • 权限控制:每个角色可以拥有不同的读、写、执行权限。

  • root用户:不受任何权限限制

  • 修改权限 :使用 chmod 修改权限,使用 chown 更改文件所有者。

  • 权限掩码umask 用于设置默认文件权限,灵活调整。

  • 家目录隔离:默认情况下用户无法访问他人家目录

  • 可执行权限:需要"权限+可执行内容"双重条件

命令 功能 示例
chmod 修改权限 chmod 755 file
chown 修改拥有者 chown user:group file
chgrp 修改所属组 chgrp group file
umask 设置权限掩码 umask 022
sudo 临时获取root权限 sudo apt install package
相关推荐
xiaotao1312 小时前
02-机器学习基础: 无监督学习——scikit-learn实战与模型管理
学习·机器学习·scikit-learn
阿Y加油吧2 小时前
算法实战笔记:LeetCode 169 多数元素 & 75 颜色分类
笔记·算法·leetcode
Wmenghu2 小时前
Ubuntu手动安装jdk;Ubuntu手动安装Maven;Ubuntu手动安装RocketMQ;Ubuntu手动安装RocketMQ-Dashbo
java·linux·ubuntu
ouliten3 小时前
cuda编程笔记(39)--Asynchronous Barriers(异步屏障)
笔记·cuda
t***5443 小时前
如何在Dev-C++中选择Clang编译器
开发语言·c++
U盘失踪了3 小时前
Go 结构体
笔记·golang
汉克老师3 小时前
GESP2023年9月认证C++三级( 第一部分选择题(9-15))
c++·gesp三级·gesp3级
SPC的存折3 小时前
10、Docker容器故障排查
linux·运维·数据库·docker·容器
代码中介商3 小时前
C语言数据存储深度解析:从原码反码补码到浮点数存储
c语言·开发语言·内存