权限问题 - 授予对具有 root 所有权的复制文件的访问权限

权限问题 - 授予对具有 root 所有权的复制文件的访问权限

我有几个属于 root 的文件,我想使用另一个用户来备份它们。我不想让该用户访问所有根目录,而只是这些特定的目录和文件。

比如/etc/httpd/conf/httpd.conf,,/etc/httpd/conf.d/ssl.conf等等。

如何在不向该特定用户授予 root 访问权限的情况下执行此操作,同时仍保留文件的所有权?

我尝试将特定文件添加到但/etc/sudoers.d/user_sudoers没有成功。

user  ALL=(ALL)       NOPASSWD:       /etc/httpd/conf/httpd.conf

在我们的 shell 脚本中创建每日备份,我调用...

cp -rp /etc/httpd/conf/httpd.conf /archive/DailyExport/today/httpd/ >> /archive/logs/DRLog.txt 2>&1

但我不断...

cp: cannot stat '/etc/httpd/conf/httpd.conf': Permission denied

如果我sudo在脚本中添加复制语句...

sudo cp -rp /etc/httpd/conf/httpd.conf /archive/DailyExport/today/httpd/ >> /archive/logs/DRLog.txt 2>&1

它提示用户输入密码来调用 sudo,我想从 cron 运行它,所以交互式无法工作。

答案1

sudoers文件用于指定命令用户可以使用 root(或其他用户)身份运行sudo。它与文件权限无关。

要授予用户访问文件的权限,您可以使用标准 Unix/Linux 权限系统。

默认情况下,大多数系统上的配置文件/etc/httpd/conf/httpd.conf通常对所有用户都可读 - 它不会造成任何损害。您一定以某种方式限制了这些权限。您可以简单地使所有用户再次读取该文件:

chmod a+r /etc/httpd/conf/httpd.conf

您还必须注意来自/etc/httpd/conf(即该目录本身/etc/httpd/etc)的所有目录无障碍(即拥有x相关用户的权限)。通常,默认情况下,他们对所有用户都有这样的权限,但如果您确实限制了它,则必须重新设置权限,例如:

chmod a+rx /etc /etc/httpd /etc/httpd/conf

(虽然拥有目录的读取权限并不是访问其内容所必需的,但有必要列表备份软件可能需要的内容 - 因此最好同时分配两者)。

如果您不想向所有用户授予读取权限(但是,我不明白原因),您可以仅向该用户授予读取权限。这可以通过两种方式完成:

  1. 创建一个仅该特定用户所属的组,将所有相关目录和文件分配给该组并向该组授予权限,例如:

     chgrp somegroup /etc/httpd/conf/httpd.conf
     chmod g+r /etc/httpd/conf/httpd.conf
    
  2. 使用 ACL 为该特定用户授予权限:

     setfacl -m -u:someuser:r /etc/httpd/conf/httpd.conf
    

当然,对所有父目录具有x(或)权限的相同规则也适用。rx

相关内容