在开发环境中始终使用 'root' 用户是一种好习惯吗?

Is it a good practice to always use 'root' user in development environment?

在Linux环境中进行软件开发时有以下三种选择:

  1. 使用您自己的用户(例如 mahdi)
  2. 使用根
  3. 无人使用

我通常以 'root' 的方式进行所有开发,但这是最佳做法吗?

在 Linux 中有很多理由不将 root 用于一般用途。 除非:如果您距离部署不远,在 开发 环境中使用 root 会导致头痛。在我看来(和实践),开发应该尽可能地模仿生产。在超级用户权限下进行开发通常与软件运行(作为网络用户、特权用户等)的方式有很大不同。

这会隐藏一些东西并导致问题进一步发展。

举个例子:在您的代码中,您 read/write 在 /opt 中创建了一个临时文件。这在开发中非常有效,测试通过,一切都很好。代码投入生产。 /optis 由 root:root 拥有,其中 700 个在生产中,应用程序 运行s 作为 apache。 reading/writing 会失败。

One liner answer is you should never grant the root access to developers.

最好让 DEV 环境尽可能接近 PROD 环境。开发者经常需要进行工具安装、服务配置、文件创建和文件修改。通过使用 Chef、Jenkins 等工具自动化流程并创建不同的访问权限(如 "devops"、"commit"、"devadmins'. Wherever needed "devadmins" 可以拥有 sudo 访问权限),可以很好地管理这些流程。这样流程将组织有序,任何人都无法进行未经授权的更改。

想象一下,如果您的开发团队分散在不同的地理区域,在不同的时区工作。有人对来自印度的服务器进行未经授权的更改,北美的开发人员会怀疑是否未正确传达。

root should only be used when there are no other option left