首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CentOS 7中的用户权限问题:“权限拒绝”

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

Unix & Linux用户
提问于 2016-05-25 17:05:06
回答 2查看 37.9K关注 0票数 1

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

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

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

代码语言:javascript
运行
复制
/root/.composer/vendor/drush/drush/drush

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

代码语言:javascript
运行
复制
-rwxr-xr-x 1 root root
drwxr-xr-x 9 root root

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

代码语言:javascript
运行
复制
/root/.composer/vendor/drush/drush/drush: Permission denied

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

我做错了什么?

我很感谢你的帮助!

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-05-25 17:23:00

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

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

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

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

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

您应该抵制打开/root/上的权限来解决这个问题的冲动,而sudo是解决这个问题的挡箭牌。问题是不应该将可执行代码安装到根目录的主目录中。

票数 6
EN

Unix & Linux用户

发布于 2018-12-01 03:21:37

仅仅检查包含文件夹的权限是不够的:您需要检查所有较高级别文件夹的权限,直到根目录。例如,如下所示:

代码语言:javascript
运行
复制
# ls -ld /root/.composer/vendor/drush/drush/drush \
  /root/.composer/vendor/drush/drush \
  /root/.composer/vendor/drush \
  /root/.composer/vendor \
  /root/.composer \
  /root \
  /

您可能会发现,/root目录具有权限700 (或drwx------),这将阻止web3用户在该路径上继续前进。让其他用户访问root用户的主目录并不是一个好主意,尽管在技术上,如果您认为绝对必要的话,可以授予它权限711 (drwx--x--x)。

但这可能也帮不了你.

您使用的是CentOS 7,它默认启用了SELinux。

RHEL/CentOS有一个默认的SELinux配置,通常对普通用户帐户的影响很小,但它可以对系统服务设置一些严格的限制,比如web服务器。

在SELinux下,可以通过某些操作限制进程及其所有后代独立于传统Unix风格的用户/组/权限系统。这些限制可以配置为在执行某些二进制文件时,对某些系统用户,以及在多种其他条件下自动“锁定”。

One服务器的默认SELinux限制之一是阻止对任何特定启用的目录(如/var/www )的访问,除非使用SELinux布尔值( SELinux规则集中的一种可切换选项)专门启用。我认为这可能是阻止web3用户访问Drush应用程序的另一件事。

如果您希望web服务器(或它的任何后代,如PHP解释器)访问任何不是在/var/www下并由其他用户创建的内容,则需要运行以下命令:

代码语言:javascript
运行
复制
# setsebool -P httpd_read_user_content 1

在RHEL/CentOS上,每个系统服务都有一个额外的手册页,名为<service name>_selinux,其中包含关于该特定服务的SELinux限制和布尔值的信息。这些手册页包含在一个名为selinux-policy-doc这是关于那个包裹的更多信息。的RPM包中--如果您使用的是启用了SELinux的系统,那么您确实应该为您计划运行的所有服务阅读这些手册页:它们使得处理SELinux变得非常容易。

当然,您可能会在互联网上发现许多关于如何禁用SELinux的建议,但是如果您计划运行一个安全的服务器,这可能不是最好的选择。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/285461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档