0

0

CentOS怎么给只读权限_CentOS文件与目录只读权限设置教程

蓮花仙者

蓮花仙者

发布时间:2025-08-31 11:23:01

|

550人浏览过

|

来源于php中文网

原创

答案:在CentOS中设置只读权限需用chmod命令,文件用444确保只读,目录用555以允许遍历;文件权限控制内容修改,父目录权限决定能否删除或重命名文件,故保护文件需同时限制父目录写权限。

centos怎么给只读权限_centos文件与目录只读权限设置教程

在CentOS中给文件和目录设置只读权限,核心是利用

chmod
命令。对于文件,通常我们会设置成
444
,这意味着所有用户(所有者、组用户、其他用户)都只有读取权限,不能写入或执行。而对于目录,情况稍微复杂一点,单纯的
444
权限可能导致你无法进入该目录,所以通常会使用
555
,它在只读的基础上,额外赋予了执行权限,这样用户才能遍历目录内容。

解决方案

要给CentOS中的文件或目录设置只读权限,我们主要依靠

chmod
命令来修改其权限位。理解权限的八进制表示是关键,它将读(r)、写(w)、执行(x)权限分别对应数字4、2、1。将这些数字相加,就能得到特定用户组的权限值。

对于文件:

如果你希望一个文件对所有人都只能读取,不能修改或删除,最常见的做法是设置其权限为

444
。这意味着:

  • 所有者 (u):读 (4)
  • 组用户 (g):读 (4)
  • 其他用户 (o):读 (4)

命令示例:

chmod 444 /path/to/your/file.txt

执行这个命令后,

file.txt
将只能被查看内容,任何用户都无法对其进行编辑、删除或重命名(除非他们对父目录有写入权限,那样可以删除文件,但不能修改文件内容)。

如果你只希望文件所有者能读,其他人不能读也不能写,可以设置为

400

chmod 400 /path/to/your/private_file.txt

对于目录:

目录的只读权限需要特别注意。仅仅设置

444
权限会导致用户无法进入目录(即
cd
进去),也无法列出目录下的文件。这是因为目录的“执行”权限(x)对于遍历目录内容是必需的。

因此,如果你希望一个目录对所有人都只能读取其内容(即能

ls
查看,能
cd
进入),但不能在其中创建、删除或修改文件,通常会设置其权限为
555
。这意味着:

  • 所有者 (u):读 (4) + 执行 (1) = 5
  • 组用户 (g):读 (4) + 执行 (1) = 5
  • 其他用户 (o):读 (4) + 执行 (1) = 5

命令示例:

chmod 555 /path/to/your/directory

这样设置后,任何用户都可以进入

/path/to/your/directory
并查看其中的文件列表,但无法在该目录内进行文件创建、删除或修改操作。当然,他们依然可以修改目录内那些他们有写入权限的文件。

递归设置权限:

如果你想对一个目录及其所有子文件和子目录都进行只读权限设置,可以使用

-R
(递归)选项。

  • 递归设置文件只读 (444):
    find /path/to/your/directory -type f -exec chmod 444 {} +
  • 递归设置目录只读+执行 (555):
    find /path/to/your/directory -type d -exec chmod 555 {} +

    这通常是更稳妥的做法,先对文件设置

    444
    ,再对目录设置
    555
    ,避免混淆。

    KAIZAN.ai
    KAIZAN.ai

    使用AI来改善客户服体验,提高忠诚度

    下载

为什么我设置了只读权限,文件还是能被删除或移动?

这是一个非常常见的误解,也是我刚开始接触Linux权限时经常犯错的地方。我们通常会认为,如果一个文件是只读的,那就万事大吉了,它不会被动。但现实往往是,即使一个文件被设置为

444
只读,它仍然可能被删除、移动,甚至被覆盖(通过创建同名新文件)。

核心原因在于:文件本身的权限决定了能否修改文件内容,而父目录的权限则决定了能否修改目录下的“内容列表”——也就是能否添加、删除或重命名目录中的文件或子目录。

简单来说:

  1. 文件权限控制的是文件本身的数据。 如果文件是
    444
    ,你无法编辑它的内容。
  2. 父目录的写入权限(w)控制的是目录结构。 如果你对一个目录有写入权限,你就可以在该目录中创建新文件、删除现有文件(无论这些文件本身的权限如何),以及重命名文件。

举个例子: 假设有一个文件

/home/user/my_data/important.txt
,它的权限是
444
,只读。 如果
/home/user/my_data
这个目录的权限是
777
(所有者、组、其他人都有读、写、执行权限),那么任何用户都可以进入
my_data
目录,并且:

  • 他们无法修改
    important.txt
    的内容。
  • 但他们可以执行
    rm /home/user/my_data/important.txt
    来删除这个文件。
  • 他们也可以执行
    mv /home/user/my_data/important.txt /tmp/important.txt
    来移动这个文件。
  • 甚至可以
    echo "new content" > /home/user/my_data/important.txt
    来“覆盖”它(实际上是先删除旧文件,再创建新文件)。

所以,要真正保护一个文件不被删除或移动,除了设置文件本身的只读权限外,更重要的是确保其父目录没有不必要的写入权限。这通常意味着你需要仔细规划目录结构和相应的权限,确保只有授权的用户才能修改目录内容。

如何确保某个用户或组对文件只有只读权限?

要实现更精细的只读权限控制,特别是针对特定用户或用户组,我们需要结合

chown
(改变所有者)、
chgrp
(改变组)和
chmod
命令。这能让我们更精确地分配谁能读、谁不能读。

设想一个场景:你有一个配置文件,希望只有

root
webadmin
组的成员能读取,其他任何人都不应该看到。

  1. 改变文件所有者和组: 首先,确保文件由适当的用户拥有,并属于适当的组。

    sudo chown root:webadmin /etc/myapp/config.conf

    这个命令将

    config.conf
    文件的所有者设置为
    root
    ,所属组设置为
    webadmin

  2. 设置权限: 接下来,使用

    chmod
    来分配权限。我们希望:

    • 所有者 (root):只读 (4)
    • 组用户 (webadmin):只读 (4)
    • 其他用户 (others):无权限 (0)

    对应的八进制权限就是

    440

    sudo chmod 440 /etc/myapp/config.conf

    执行后,只有

    root
    用户和
    webadmin
    组的成员可以读取
    config.conf
    文件。其他任何用户都无法读取、写入或执行它。

关于

umask
的补充:
umask
是一个非常重要的概念,它定义了新创建文件和目录的默认权限。它是一个“权限掩码”,表示从默认权限中“减去”的权限。

  • 对于文件,默认权限通常是
    666
    (rw-rw-rw-)。
  • 对于目录,默认权限通常是
    777
    (rwxrwxrwx)。 当一个文件或目录被创建时,它的实际权限是默认权限减去
    umask
    值。 例如,如果
    umask
    0022
  • 新文件的权限会是
    666 - 022 = 644
    (rw-r--r--)
  • 新目录的权限会是
    777 - 022 = 755
    (rwxr-xr-x) 理解
    umask
    可以帮助你理解为什么新创建的文件会有特定的默认权限,并能在需要时调整它,以更好地配合你的只读权限策略。不过,对于已经存在的文件,
    chmod
    是更直接的修改方式。

只读权限对目录和文件有什么具体区别

这可能是Linux权限中最容易混淆但又最关键的一个点。文件和目录的权限位虽然都是

rwx
,但它们在实际操作中的含义却大相径庭。

1. 对文件的只读权限(r): 当一个文件拥有只读权限(例如

chmod 444 file.txt
),这意味着:

  • 可以读取文件内容: 你可以使用
    cat
    more
    less
    或文本编辑器打开并查看文件的内容。
  • 不能修改文件内容: 你无法保存对文件的任何更改。
  • 不能删除或重命名文件(直接操作文件本身): 这句话有点绕,实际操作中,删除或重命名文件是依赖其父目录的写入权限,而不是文件本身的权限。如果父目录可写,即使文件只读,也可以被删除。
  • 不能执行文件(如果它是脚本或可执行文件): 即使是脚本,只读权限也无法让它运行。

2. 对目录的只读权限(r): 当一个目录拥有只读权限时,情况就变得复杂了,因为通常“只读”目录还需要“执行”权限才能真正有用。

  • 单独的“读”权限(r,八进制4):

    • 可以列出目录内容: 你可以使用
      ls
      命令查看目录中包含哪些文件和子目录。
    • 不能进入目录: 你无法使用
      cd
      命令进入这个目录。这是因为进入目录需要“执行”权限。
    • 不能访问目录内的文件: 即使你知道目录内某个文件的完整路径,也无法访问它(例如
      cat /path/to/dir/file.txt
      会失败),因为你没有遍历目录的权限。 这种权限组合在实际中很少单独使用,因为它过于受限。
  • “读”和“执行”权限(rx,八进制5): 这是我们通常所说的“目录只读”的实际实现。

    • 可以列出目录内容: 同样可以使用
      ls
      查看。
    • 可以进入目录:
      cd
      命令可以成功进入目录。
    • 可以访问目录内的文件: 只要目录内的文件本身有相应的权限,你就可以读取它们的内容。
    • 不能在目录中创建、删除或重命名文件/子目录: 这是关键点,尽管你可以查看和进入,但你无法修改目录的结构。
  • “写”权限(w,八进制2): 目录的写权限非常强大,它允许:

    • 在目录中创建新文件和子目录。
    • 删除目录中的文件和子目录, 无论这些文件本身的权限如何(例如,即使文件是
      444
      只读,如果其父目录可写,该文件也可以被删除)。
    • 重命名目录中的文件和子目录。

总结来说,当你考虑给目录设置“只读”权限时,几乎总是需要同时赋予“执行”权限(即八进制

5
),这样用户才能真正地“浏览”目录内容。而文件的只读权限则相对直接,它就是限制了文件内容的修改。理解这两者的差异,是正确管理Linux系统权限的基础。

相关专题

更多
Sass和less的区别
Sass和less的区别

Sass和less的区别有语法差异、变量和混合器的定义方式、导入方式、运算符的支持、扩展性等。本专题为大家提供Sass和less相关的文章、下载、课程内容,供大家免费下载体验。

200

2023.10.12

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1348

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

701

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

572

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

545

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

297

2023.07.20

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 4.4万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号