news 2026/7/2 7:44:49

定时任务(root)与 Web(www)权限冲突问题——使用 ACL 彻底解决

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
定时任务(root)与 Web(www)权限冲突问题——使用 ACL 彻底解决

在 Linux 服务器中,权限冲突问是一个非常常见的问题。

例如:

  • Cron 定时任务:root 用户执行

  • PHP(Nginx + PHP-FPM):www-data 或 www 用户执行

  • Apache:apache 用户执行

  • Tomcat:tomcat 用户执行

两个不同用户需要共同读写同一目录。

很多人第一反应就是:

chmod -R 777 data/

虽然能解决问题,但非常不安全

Linux 提供了更好的方案——ACL(Access Control List)


一、为什么传统权限解决不了?

Linux 普通权限只有三类:

Owner(所有者) Group(所属组) Others(其他人)

例如

-rw-r--r--

表示

Owner rw- Group r-- Other r--

假设:

root (定时任务) www (PHP)

目录

/data/report/

权限

drwxr-x--- root root

那么:

root 可以

读 写 删除 创建

而 www:

没有权限

如果改成

775

那么要求:

www 必须属于 root 组

现实中通常不是。

如果改成

777

任何用户都能写。

安全性很差。


二、ACL 是什么?

ACL(Access Control List)

就是:

给某一个指定用户,单独赋予权限。

例如:

目录属于 root 但是允许 www 写

无需:

修改 owner 修改 group 修改 777

ACL 就像:

普通权限: Owner Group Other ACL: Owner Group Other + www + mysql + backup + ...

因此更加灵活。


三、查看系统是否支持 ACL

Ubuntu:

which setfacl which getfacl

如果没有:

Ubuntu

sudo apt install acl

CentOS

yum install acl

查看文件系统

mount

例如:

/dev/sda1 on / type ext4

现在:

Linux 大多数:

ext4 xfs btrfs

默认都支持 ACL。


四、ACL 常用命令

查看 ACL

getfacl 文件

例如

getfacl report

输出

# file: report # owner: root # group: root user::rwx user:www:rwx group::r-x mask::rwx other::---

说明:

www 拥有 rwx

设置 ACL

给 www 权限

setfacl -m u:www:rwx report

解释:

-m modify u user www 用户名 rwx 权限

再查看

getfacl report

会看到:

user:www:rwx

说明成功。


五、解决 root 与 www 冲突

假设:

/var/www/project/storage

root 定时写:

cron shell

PHP:

www

需要共同写。

设置:

sudo setfacl -R -m u:www:rwx /var/www/project/storage

以后:

root www 都可以写

无需:

777

六、递归设置

整个目录

setfacl -R -m u:www:rwx data

查看

getfacl data

如果目录很多:

全部都会拥有 ACL

七、新建文件为什么又没权限?

很多人做到这里发现:

已有文件可以。

但是:

root 新建文件 www 又打不开。

为什么?

因为:

ACL 默认不会继承

例如

data/

里面:

旧文件 有 ACL

后来 root:

touch test.txt

结果:

test.txt 没有 ACL

这也是很多人踩坑的地方。


八、默认 ACL(Default ACL)

Linux 可以设置:

以后新建文件 自动继承 ACL

命令:

setfacl -R -d -m u:www:rwx data

这里:

-d default

查看:

getfacl data

会看到:

default:user:www:rwx

以后:

mkdir touch cp

都会自动继承。

例如:

root

touch data/a.txt

查看:

getfacl data/a.txt

里面:

user:www:rwx

已经自动存在。


九、同时给多个用户

例如:

root www backup

都需要。

setfacl -m u:www:rwx data

再:

setfacl -m u:backup:r-x data

查看:

user:www:rwx user:backup:r-x

互不影响。


十、给整个用户组

例如:

group:www
setfacl -m g:www:rwx data

查看:

group:www:rwx

十一、删除 ACL

删除某用户

setfacl -x u:www data

删除组

setfacl -x g:www data

删除全部 ACL

setfacl -b data

十二、mask 是什么?

查看 ACL:

user::rwx user:www:rwx group::rwx mask::r-x other::---

很多人疑惑:

www 是 rwx 为什么不能写?

因为:

mask 限制了 ACL 最大权限。

真正权限:

user:www:rwx AND mask:r-x = r-x

所以:

没有写权限。

修改:

setfacl -m m:rwx data

或者:

setfacl -m mask:rwx data

十三、实际生产环境案例

假设目录:

/var/www/project/storage

需求:

  • root(cron)可以读写

  • www(PHP)可以读写

  • 其他用户不能访问

  • 新建文件自动继承权限

推荐方案:

# 给 www 设置 ACL sudo setfacl -R -m u:www:rwx /var/www/project/storage # 设置默认 ACL,确保新文件继承 sudo setfacl -R -d -m u:www:rwx /var/www/project/storage # 如有需要,调整 ACL mask sudo setfacl -R -m m:rwx /var/www/project/storage sudo setfacl -R -d -m m:rwx /var/www/project/storage

然后验证:

getfacl /var/www/project/storage

应看到类似输出:

user::rwx user:www:rwx group::r-x mask::rwx other::--- default:user::rwx default:user:www:rwx default:group::r-x default:mask::rwx default:other::---

这样,root 的 Cron 任务和 **Web 服务(www 用户)**即可安全地共享该目录,而无需将权限放宽到777

十四、ACL 与 chmod/chown 对比

方案灵活性安全性是否推荐
chmod 777很低❌ 极低不推荐
chown www:www一般中等仅适用于 Web 独占目录
chgrp+775较高较高同组协作时推荐
ACL (setfacl)最高⭐ 多用户协作场景首选
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 7:41:33

2026 最新开源视频号下载工具,傻瓜式操作

前言之前分享的蝴蝶号下载工具,由于各种原因许多朋友都反应不能用,今天带来的了他的最新版本,傻瓜式操作,无论是单个;还是批量下载,都可以轻松拿下!1、双击打开,软件自动一键安装运行…

作者头像 李华
网站建设 2026/7/2 7:40:46

电商客服外包收费排名前5标准揭秘

你有没有遇到过这种情况?旺季大促的时候客服忙到崩溃,消息回不过来,客户骂声一片;淡季的时候又得白养着一大堆人,看着工资单肉疼。这几乎是每个电商老板的“心头病”。我聊了十几个年销千万级别的店主,发现…

作者头像 李华
网站建设 2026/7/2 7:40:01

企业微信开发API在客户标签设计中容易被忽略的问题

客户标签是企业微信二次开发中经常使用的能力。标签可以帮助企业区分客户来源、兴趣、阶段和服务状态。但在实际项目中,标签体系如果设计不清楚,很容易变成一堆难以维护的标记,影响后续筛选、群发、数据统计和客户跟进。第一个容易被忽略的问…

作者头像 李华
网站建设 2026/7/2 7:38:15

深度学习图像数据集构建:从零定制高质量CV训练数据

1. 项目概述:为什么你手里的“图片”根本不能直接喂给模型我带过不下二十个刚入门深度学习的学员,几乎所有人第一次跑通ResNet或YOLO时都特别兴奋,但兴奋劲儿一过,90%的人卡在同一个地方:数据集根本没法用。他们从网上…

作者头像 李华
网站建设 2026/7/2 7:36:21

LV30条码扫描器与TM4C1299微控制器的嵌入式系统设计

1. 项目背景与核心需求在工业自动化、零售仓储和物流管理领域,条码扫描技术一直是数据采集的核心环节。LV30作为一款高性能的线性影像式条码扫描器,搭配TI的TM4C1299NCZAD微控制器,能够构建一套稳定可靠的嵌入式条码识别系统。这套组合特别适…

作者头像 李华
网站建设 2026/7/2 7:35:26

计算机毕业设计之基于机器学习的慢性病人群饮食推荐系统

本系统是一款基于机器学习技术的慢性病人群饮食推荐系统,融合了Django框架、机器学习算法和MySQL数据库,旨在为慢性病患者提供个性化的饮食建议。系统分为用户和管理员两大功能模块,用户模块包括系统首页、糖尿病数据、公告信息和个人中心&am…

作者头像 李华