我有一个很奇怪的问题
当我们在 Redhat 机器上执行以下操作(从 bash 脚本更改所有者)时
chmod 600 /etc/yum.repos.d/*.repo
我们得到:
chmod: cannot access ‘/etc/yum.repos.d/pgdg-94-redhat.repo’: No such file or directory
chmod: cannot access ‘/etc/yum.repos.d/pgdg-94-redhat.repo’: No such file or directory
chmod: cannot access ‘/etc/yum.repos.d/pgdg-94-redhat.repo’: No such file or directory
chmod: cannot access ‘/etc/yum.repos.d/pgdg-94-redhat.repo’: No such file or directory
chmod: cannot access ‘/etc/yum.repos.d/pgdg-94-redhat.repo’: No such file or directory
但文件存在于 /etc/yum.repo.d 下
yum.repos.d]# ls -ltr
-rw--------。 1 root root 482 2016 年 3 月 29 日 pgdg-94-redhat.repo
那怎么可能——这里发生了什么?
答案1
正如 Hauke 提到的,SELinux 很可能是问题所在。您是否尝试将权限更改为不同的用户/模式? ls -lZ 将为您提供具有特定 selinux 上下文的文件。
一个例子是:
rw-r--r--. root root system_u:object_r:etc_t:s0 rhel-source.repo
如果上下文不正确,它就不会起作用。
在这种情况下,# restorecon /etc/yum.repos.d/*
将修复上下文。
就您的脚本而言,最后,您可能应该在 /etc/yum.repos.d 目录上执行 Restorecon 命令,以确保存储库文件上的上下文正确。然后操作系统将与它们一起工作。
答案2
末尾的点-rw-------.
表明该文件有一个 SELinux 安全上下文。考虑到结果,它可能会阻止访问。