我以为我知道如何在 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 权限。在本地开发环境中,这不是什么大问题。我现在正在管理我自己的专用服务器,而这个大锤解决方案是行不通的。
我究竟做错了什么?
我很感激任何帮助!
/root/是 root 的主目录。上的权限/root/希望是 700,防止除 root 之外的任何人遍历它下面的整个目录树。
目录树上的权限会阻止您以非 root 用户身份运行二进制文件。
将任何东西安装到其中/root/是不寻常的,您通常会将供多个用户使用的可执行代码安装到/opt/或另一个目录中。
因此,这是“错误”的两个主要方面。您需要找到一个更好的位置来安装代码,并确保您想要使用它的用户可以访问完整路径。
最后,正如其他人指出的那样,虽然您通常需要以 root 身份来完成安装,但结果文件只应在绝对必要的情况下由 root 拥有。在许多情况下,会创建特定用户(例如 www-data 用户或 oracle 用户),如果代码被泄露,则会限制暴露。我不知道您的应用程序,但可能值得以 web3 用户身份安装它或以 root 用户身份安装它,但稍后将权限更改为专门为该任务创建的非特权用户。
您应该抵制打开权限/root/以解决问题的冲动,并且sudo是解决问题的贴膏药。问题是您不应该将可执行代码安装到 root 的主目录中。
| 归档时间: |
|
| 查看次数: |
30058 次 |
| 最近记录: |