博客
关于我
Linux之权限
阅读量:212 次
发布时间:2019-02-28

本文共 2020 字,大约阅读时间需要 6 分钟。

一、权限基础

权限是Linux系统中一个核心概念,决定了用户对系统资源的访问范围。权限可以分为文件所有者、文件所属组和其他用户三种身份,每种身份都有读取(r)、写入(w)、执行(x)三种基本权限。此外,还有一种特殊权限(Set User ID,suid)和组相关的特殊权限(Set Group ID,sgid),这些权限在某些场景下非常有用。

1、权限与身份的关系

在Linux系统中,每个文件都有三种身份:文件所有者(u)、文件所属组(g)和其他用户(o)。每种身份都有三种基本权限:可读(r)、可写(w)和可执行(x)。权限可以通过命令如chmod来设置或修改。

2、权限使用

1、chmod设定权限

chmod命令是设置文件权限的常用工具。它的基本格式为:

chmod [选项] [用户/组] [权限] [文件/目录]

常用选项包括:

  • -R:递归处理,修改指定目录及子目录下的所有文件。
  • -v:显示详细变更信息。
  • -f:忽略无法更改的权限错误。
  • -c:只显示更改成功的操作。

权限表示方式有三种:

  • +:添加权限。
  • -:移除权限。
  • =:设置具体权限。

权限字符可以是以下组合:

  • rwx:读取、写入、执行。
  • r--r--r--:444权限,仅所有者可读。
  • ---r--r--r--:600权限,仅所有者可写。
  • rwxrwxrwx:777权限,所有人都有完全权限。

2、根据身份设定权限

  • 给文件所有身份配置权限

    chmod a=rwx file
  • 取消某个文件的所有权限

    chmod a=-rwx file
  • 指定用户、组或其他身份设置权限

    chmod u=rwx,g=rw,o=- filechmod ug=rwx,o=r file
  • 根据权限数字设定

    • 读取权限(r)=4,写入权限(w)=2,执行权限(x)=1,没有权限(-)=0。
    • 常见权限数字如444、600、644、666、777等。
  • 修改目录及子目录权限

    chmod -R 755 /tmp

3、更改文件拥有者和所属组

  • 更改文件所属组
    chgrp -R hr /home/test/
  • 更改文件所有者
    chown root filechown :root file

二、特殊权限

1、特殊权限SUID(Set User ID,所有者特殊权限)

  • 设置SUID权限
    chmod u+s filechmod 4755 file
  • 作用
    • 让普通用户运行可执行文件时临时拥有文件的所有者权限。
    • 对于不可执行文件,SUID权限会显示为大写S。

2、特殊权限SGID(Set Group ID,所属组特殊权限)

  • 设置SGID权限
    chmod g+s filechmod 2755 file
  • 作用
    • 让文件或目录的新文件继承其所属组的权限。
    • 可以共享文件夹,简化用户管理。

3、特殊权限STICKY(粘滞位权限)

  • 设置粘滞位权限
    chmod o+t /tmpchmod 1755 /tmp
  • 作用
    • 让目录下的文件和新建文件只能由该目录的用户读写。
    • 常用于临时目录如/tmp

三、权限属性chattr

chattr命令用于设置和修改文件或目录的其他属性。常用的属性包括:

  • a:只能追加文件。
  • b:不更新文件的存取时间。
  • i:不可修改文件。
  • s:保密性删除文件。
  • S:立即更新文件属性。

示例:

  • 设置追加权限
    chattr +a file1
  • 删除追加权限
    chattr -a file1
  • 递归设置属性
    chattr -R +a test2/

四、访问控制ACL(访问控制列表)

1、设置ACL权限

  • 给予用户ACL权限
    setfacl -m u:nq:rw file
  • 给予组ACL权限
    setfacl -m g:students:r-x file
  • 设置其他用户权限
    setfacl -m o::r file

2、查看ACL权限

  • 查看文件ACL权限
    getfacl file

3、移除ACL权限

  • 移除组ACL权限
    setfacl -x g:sa file
  • 移除用户ACL权限
    setfacl -x u:nq file

五、扩展知识(进程掩码umask)

1、介绍

进程掩码(umask)是Linux系统中用于限制文件创建权限的工具。默认值通常为022,表示创建的文件权限为755(777 - 022 = 755)。

2、umask使用

  • 查看当前掩码
    umask
  • 临时修改掩码
    umask 000umask 0000

示例:

  • 创建新目录
    umask 022mkdir test1
  • 修改掩码并创建目录
    umask 000mkdir test

六、总结

通过合理设置文件和目录的权限,可以有效管理系统资源,保障数据安全。掌握chmodchgrpchownaclchattr等工具,能够更高效地进行权限管理。同时,了解特殊权限和进程掩码,可以更好地优化系统配置。

转载地址:http://mbvp.baihongyu.com/

你可能感兴趣的文章
MySQL 常见的开放性问题
查看>>
Mysql 常见错误
查看>>
MYSQL 幻读(Phantom Problem)不可重复读
查看>>
mysql 往字段后面加字符串
查看>>
mysql 快速自增假数据, 新增假数据,mysql自增假数据
查看>>
Mysql 报错 Field 'id' doesn't have a default value
查看>>
MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
查看>>
Mysql 拼接多个字段作为查询条件查询方法
查看>>
mysql 排序id_mysql如何按特定id排序
查看>>
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>
Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
查看>>
mysql 数据库备份及ibdata1的瘦身
查看>>
MySQL 数据库备份种类以及常用备份工具汇总
查看>>
mysql 数据库存储引擎怎么选择?快来看看性能测试吧
查看>>
MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
查看>>
MySQL 数据库的高可用性分析
查看>>
MySQL 数据库设计总结
查看>>
Mysql 数据库重置ID排序
查看>>
Mysql 数据类型一日期
查看>>