CentOS 7 中的用户权限问题:“权限被拒绝”

Dru*_*ver 1 linux permissions

我以为我知道如何在 Linux 中设置权限。我显然没有。

我有一个名为“web3”的用户。这个用户是由 ISPConfig(一个像 CPanel 这样的服务器管理应用程序)自动创建的。

我还有一个应用程序安装在名为“Drush”的服务器上。我以 root 身份登录时安装了“Drush”。此应用程序位于:

/root/.composer/vendor/drush/drush/drush
Run Code Online (Sandbox Code Playgroud)

此文件及其包含的文件夹具有以下权限:

-rwxr-xr-x 1 root root
drwxr-xr-x 9 root root
Run Code Online (Sandbox Code Playgroud)

由于该文件允许所有人具有读取和执行权限,为什么每次我以“web3”用户身份登录并尝试运行上述应用程序时,我都会收到以下错误消息:

/root/.composer/vendor/drush/drush/drush: Permission denied
Run Code Online (Sandbox Code Playgroud)

我以前遇到过这个问题,但我向遇到问题的用户授予 sudo 完全 root 权限。在本地开发环境中,这不是什么大问题。我现在正在管理我自己的专用服务器,而这个大锤解决方案是行不通的。

我究竟做错了什么?

我很感激任何帮助!

Eig*_*ony 6

/root/是 root 的主目录。上的权限/root/希望是 700,防止除 root 之外的任何人遍历它下面的整个目录树。

目录树上的权限会阻止您以非 root 用户身份运行二进制文件。

将任何东西安装到其中/root/是不寻常的,您通常会将供多个用户使用的可执行代码安装到/opt/或另一个目录中。

因此,这是“错误”的两个主要方面。您需要找到一个更好的位置来安装代码,并确保您想要使用它的用户可以访问完整路径。

最后,正如其他人指出的那样,虽然您通常需要以 root 身份来完成安装,但结果文件只应在绝对必要的情况下由 root 拥有。在许多情况下,会创建特定用户(例如 www-data 用户或 oracle 用户),如果代码被泄露,则会限制暴露。我不知道您的应用程序,但可能值得以 web3 用户身份安装它或以 root 用户身份安装它,但稍后将权限更改为专门为该任务创建的非特权用户。

您应该抵制打开权限/root/以解决问题的冲动,并且sudo是解决问题的贴膏药。问题是您不应该将可执行代码安装到 root 的主目录中。