linux权限

一、用户分类

1.root 用户

  • 系统超级用户,权限不受限制(类似 Windows 管理员)。

  • 必须设置密码,建议与普通用户密码不同。

2.普通用户

  • 通过 adduser 或 useradd 创建(CentOS 默认推荐 useradd),操作受权限限制。

  • 必须设置密码,不同用户应使用不同密码。

二、用户切换操作

1. 普通用户切换为 root

 

  • 方法一:仅切换身份(保留当前环境)

    su
    • 输入 root 密码(输入时无回显)。

    • 切换后仍在原工作目录,环境变量不变。

    • 退出exit 或 Ctrl+D

  • 方法二:完全登录 root(加载 root 环境)

    su -  # 或 su - root
    • 输入 root 密码

    • 切换后进入 root 的家目录(/root),并加载 root 的环境配置。

    • 退出exit 或 Ctrl+D

 

2. 普通用户切换为其他普通用户

su 目标用户名
# 例如切换到用户 lynn
su lynn
  • 输入 目标用户的密码(非当前用户密码)。

  • 切换后保留当前目录和环境变量。

  • 退出exit 或 Ctrl+D

 

临时提权:sudo 命令

  • 用途:普通用户临时以 root 权限执行单条命令。

    sudo 需要提权的命令
    # 示例:安装软件(CentOS 使用 yum/dnf)
    sudo yum install nginx
  • 输入密码:需输入 当前普通用户的密码(非 root 密码)。

  • 权限限制

    • 新创建的普通用户默认无法使用 sudo

    • 需由 root 用户编辑 /etc/sudoers 文件授权(后续学习配置)。

三、Linux 权限基础概念

权限的两大核心要素

1. 身份认证(和“人”相关)

Linux 通过 用户身份 判断权限,分为三类身份:

  • 拥有者(Owner):文件/目录的创建者。

  • 所属组(Group):文件/目录所属的用户组(一组用户的集合,用于共享权限,无需成员单独授权)。

  • 其他人(Others):既不是拥有者,也不在所属组中的用户。

 示例理解所属组的作用
假设公司有三个部门:开发组(dev)、测试组(test)。

  • 若文件属于 dev 组,则所有开发组成员自动拥有该文件的组权限。

  • 无需为每个开发组成员单独配置权限,只需管理组权限即可。

2. 文件属性(和“事物”相关)

通过 ls -l 查看文件属性:

# 查看文件详细信息(CentOS 示例)
ls -l myfile.txt
# 输出示例:
-rw-r--r--. 1 alice dev 1024 Jan 1 10:00 myfile.txt

文件类型

首字符表示文件类型:

  • -:普通文件(文本、程序、图片等)。

  • d:目录文件。

  • b:块设备文件(如磁盘 /dev/sda)。

  • c:字符设备文件(如键盘 /dev/tty)。

  • l:软链接(快捷方式)。

  • p:管道文件(进程间通信)。

权限位

后续 9 个字符表示权限,分三组(每组 3 位):

  • 前 3 位:拥有者权限(u)。

  • 中间 3 位:所属组权限(g)。

  • 后 3 位:其他人权限(o)。

符号 含义 示例说明
r 可读(Read) 查看文件内容或列出目录内容。
w 可写(Write) 修改文件内容或在目录中创建/删除文件。
x 可执行(Execute) 运行程序或进入目录。
- 无权限 对应位置权限被禁用。

 关于文件后缀的说明

Linux 不依赖后缀识别文件类型,但部分程序会依赖后缀(如 .sh 脚本、.c 源码)。

  • 示例:gcc 编译器默认编译 .c 文件为代码,.o 文件为目标文件。

root 用户的特殊性

  • 不受权限约束:root 可无视所有权限限制,直接操作任何文件。

3.命令行操作示例

1.查看文件权限

ls -l /etc/passwd
# 输出示例:
-rw-r--r--. 1 root root 2550 Jan 1 09:00 /etc/passwd
  • 解读:

    • 文件类型:普通文件(-)。

    • 拥有者(root)权限:rw-(可读可写)。

    • 所属组(root)权限:r--(仅可读)。

    • 其他人权限:r--(仅可读)。

2.尝试越权操作(普通用户)

# 普通用户尝试删除 /etc/passwd(无权限)
rm /etc/passwd
# 输出:rm: cannot remove '/etc/passwd': Permission denied

四、Linux 文件权限修改操作

权限修改核心规则

谁能修改权限

  • 文件拥有者 或 root 用户

  • 普通用户需通过 sudo 提权操作(需已配置 sudo 权限)。

文件权限修改:chmod 命令

1. 符号模式(身份+操作+权限)

  • 身份标识
    u(拥有者)、g(所属组)、o(其他人)、a(所有人)。

  • 操作符
    +(添加权限)、-(移除权限)、=(直接设置权限)。

  • 权限类型
    r(读)、w(写)、x(执行)。

命令示例 作用说明
chmod u+w test.c 为拥有者添加写权限。
chmod u+x test.c 为拥有者添加执行权限(适用于脚本/程序)。
chmod u-rw test.c 移除拥有者的读、写权限。
chmod g+rx test.c 为所属组添加读和执行权限。
chmod o+rw test.c 为其他人添加读、写权限。
chmod u-rwx,g+rwx,o+rw test.c 同时修改多类身份权限(逗号分隔)。

2. 八进制模式(数字表示权限)

  • 权限对应数字
    r=4w=2x=1,无权限=0。

  • 计算方式
    每组权限相加(拥有者、所属组、其他人各占三位)。

权限组合 八进制值 示例命令 权限说明
rwx 7 (4+2+1) chmod 700 test.txt 拥有者:全部权限;组和其他人:无权限。
rw- 6 (4+2) chmod 760 test.txt 拥有者:rwx;组:rw-;其他人:无权限。
r-- 4 chmod 444 test.txt 所有人仅可读。
--- 0 chmod 000 test.txt 所有人无任何权限(root 仍可操作)。

 示例验证 

# 创建测试文件
touch test.txt
# 设置权限为 rwxrw----(八进制 760)
chmod 760 test.txt
# 查看权限
ls -l test.txt
# 输出:-rwxrw----. 1 user group 0 Jan 1 10:00 test.txt

文件拥有者与所属组修改

1. 修改拥有者:chown

  • 语法

    chown 新拥有者 文件名
  • 示例

    # 普通用户需使用 sudo(需权限)
    sudo chown lynn test.txt   # 将拥有者改为 lynn
    sudo chown lynn:dev test.txt  # 同时修改拥有者和所属组为 lynn:dev

2. 修改所属组:chgrp

  • 语法

    chgrp 新组名 文件名
  • 示例

    # 普通用户需满足以下条件之一:  
    # 1. 自己是目标组成员  
    # 2. 使用 sudo 提权  
    sudo chgrp dev test.txt  # 将所属组改为 dev

    ⚠️ 注意

  • 普通用户无法直接修改其他用户的文件权限(需 sudo)。

  • 若文件拥有者仅有读权限(如 r--),即使所属组有写权限,拥有者也无法写入文件

    # 示例:拥有者仅有读权限
    chmod u=r test.txt
    # 尝试写入(失败)
    echo "test" >> test.txt  # 提示 Permission denied

     

五、Linux 权限进阶操作

1. 默认权限与 umask 掩码

为什么新建文件的默认权限是 664(文件)和 775(目录)?

起始权限

  • 普通文件起始权限为 666rw-rw-rw-)。

  • 目录文件起始权限为 777rwxrwxrwx)。

umask 掩码

  • 作用:屏蔽默认权限中的部分权限(umask 中标记的权限会被移除)。

  • 计算方式:最终权限 = 起始权限 & (~umask)

  • CentOS 默认 umask 值:0022(普通用户)或 0002(root 用户)。

文件类型 起始权限 umask 最终权限 权限解释
普通文件 666 0022 644 rw-r--r--
目录文件 777 0022 755 rwxr-xr-x

 自定义 umask 示例

# 临时设置 umask 为 000(开放所有权限)
umask 000
touch test1.txt    # 权限变为 666(rw-rw-rw-)
mkdir test_dir     # 权限变为 777(rwxrwxrwx)

# 恢复默认 umask(0022)
umask 0022

 2. 目录的读写执行权限

 

权限作用

权限 对目录的影响
r 允许 列出目录内容(如 ls 命令),但无法查看文件内容或进入目录。
w 允许在目录中 创建、删除、重命名文件(需配合 x 权限)。
x 允许 进入目录cd)并访问目录内文件(需文件自身权限支持)。

 示例验证

# 创建目录并移除 x 权限
mkdir mydir
chmod -x mydir

# 尝试进入目录(失败)
cd mydir      # 提示:Permission denied

# 恢复 x 权限
chmod +x mydir

3. 粘滞位(Sticky Bit)

 

共享目录的权限问题

  • 场景:多个用户需要共享目录,但需防止互相删除文件。

  • 传统方案:

    # 创建共享目录并开放权限
    sudo mkdir /shared
    sudo chmod 777 /shared
  • 问题:任何用户可删除他人文件(目录 w 权限允许删除操作)。

粘滞位解决方案

  • 作用

    • 允许所有用户在目录中创建文件。

    • 仅文件拥有者或 root 可删除/重命名文件

  • 设置方法

    # 为目录添加粘滞位(需 root 权限)
    sudo chmod +t /shared
    # 或指定八进制模式(1777)
    sudo chmod 1777 /shared
  • 权限标识

    • 粘滞位显示为 t(若目录有 x 权限)或 T(无 x 权限)。

      ls -ld /shared
      # 输出:drwxrwxrwt. 2 root root 4096 Jan 1 10:00 /shared

       

 粘滞位验证示例 

# 用户 alice 创建文件
su - alice
touch /shared/alice.txt

# 用户 bob 尝试删除(失败)
su - bob
rm /shared/alice.txt    # 提示:Operation not permitted

# root 可强制删除
sudo rm /shared/alice.txt

 

你可能感兴趣的:(linux,服务器)