scp 到 /home 更改权限?

scp 到 /home 更改权限?

用一个方案可以很好地说明这一点。当我写“测试:OK”或“测试:失败”时,我正在重新启动 apache 服务器(httpd 服务)。基本上,在 target_host 中以 root 身份执行所有操作:

scp user@source_host:/etc/httpd/conf.d/custom.conf /home
mv /home/custom.conf /etc/httpd/conf.d/

测试失败

scp user@source_host:/etc/httpd/conf.d/custom.conf /etc/httpd/conf.d/

测试:好的

scp user@source_host:/etc/httpd/conf.d/custom.conf /
mv /custom.conf /etc/httpd/conf.d/

测试:好的

使用时的行为相同:

scp root@source_host...

当测试:失败时:

Iniciando httpd: httpd: Syntax error on line 221 of /etc/httpd/conf/httpd.conf: Could not open configuration file /etc/httpd/conf.d/custom.conf: Permission denied

“Iniciando”是西班牙语,意思是“开始”

conf.d 内的权限始终为 (ls -ln):

-r--r--r--. 1 0 0 311 Jun 18 14:19 custom.conf

scp 是否更改了这些文件中的某些内容,以便 apache 可以或不读取它们?

答案1

是的,scp更改权限。它在复制时会创建一个新文件,并且该新文件将使用您创建它的目录的默认权限创建:

terdon@local$ ls -l aa
-rwx------ 1 root root 0 Jun 19 15:37 aa
terdon@local$ scp aa terdon@remote:/home/terdon/aa

terdon@remote$ ls -l aa
-rw-r--r-- 1 terdon terdon 587 2013-06-19 15:38 aa

如果您不想这样做,请使用该-p标志:

-p      Preserves modification times, access times, and
         modes from the original file.
terdon@local$ scp -p aa terdon@remote:/home/terdon/aa
terdon@remote$ ls -l aa
-rwx------ 1 terdon terdon 587 2013-06-19 15:38 aa

另一个可能的问题是文件的用户已更改。如果您想复制可能需要拥有的配置文件,请root确保使用scp root@remote.

答案2

drupalwatchdog.com

SELinux 将阻止 Apache 进程读取标记为用户主目录内容 (user_home_t) 或数据库数据 (mysql_db_t) 的数据。

我还了解到,差异在于 SELinux 分配给文件的标签。您可以通过检查它们ls -Z。就我而言:

-r--r--r--. root root unconfined_u:object_r:home_root_t:s0 custom.conf
-r--r--r--. root root unconfined_u:object_r:httpd_config_t:s0 custom_ok.conf

使用第二个文件时,Apache 将重新启动。第一个失败了。事实上,当我将 custon_ok.conf 移至 home 时,没有任何变化。但是当我对 home 进行 cp 或 cp -p 操作时,新文件具有标签

unconfined_u:object_r:home_root_t:s0

这样当移回 /etc/httpd/conf.d 时 Apache 将无法读取它

相关内容