在开发环境中始终使用 'root' 用户是一种好习惯吗?
Is it a good practice to always use 'root' user in development environment?
在Linux环境中进行软件开发时有以下三种选择:
- 使用您自己的用户(例如 mahdi)
- 使用根
- 无人使用
我通常以 '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
在Linux环境中进行软件开发时有以下三种选择:
- 使用您自己的用户(例如 mahdi)
- 使用根
- 无人使用
我通常以 '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