RoR:具有写入属性的Shell / System命令在生产模式下不起作用?

时间:2013-07-14 11:19:17

标签: ruby-on-rails ruby-on-rails-3

System("ls")
System("pwd")

这两个命令在生产和生产中都能很好地工作。同一台服务器上的开发模式。

但是System("mkdir test")或涉及创建新文件/目录的任何其他命令都不会在生产模式下运行,但在开发模式下工作正常。这里有什么想法吗?

我的猜测是它与权限有关,但不确定在哪里。

1 个答案:

答案 0 :(得分:0)

出于安全原因,在您的服务器上,您应该userroot不同。应将此user添加到sudoers列表中:

https://askubuntu.com/questions/7477/how-can-i-add-a-new-user-as-sudoer-using-the-command-line

现在,取决于您要创建此文件夹的位置,如果它位于您的用户有权读/写的应用文件夹中,(搜索chmod 755chown要设置文件夹的所有者,最好使用chown -R将其应用于所有子文件夹),之后您将能够使用以下命令创建该文件夹:

System("mkdir test")

但仅限于您的用户有权读/写的文件夹。

如果您想在需要使用sudo的其他路径中创建测试文件夹,则必须运行:

System("sudo mkdir test")

通常这是在后台运行而你不会在那里写密码,因此你必须在运行sudo时添加命令以不需要密码,使用NOPASSWD指令你可以这样做:

https://askubuntu.com/questions/159007/how-do-i-run-specific-sudo-commands-without-a-password

sudo visudo -f /etc/sudoers #!important visudo, read in the upper link more about it before trying this.

完成所有这些操作后,您将能够使用以下命令在路径中创建文件夹:

System("sudo mkdir test")

无需密码。