Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Execute a sudo command in Ruby on Rails app

I am trying to execute a command like this from a Ruby on Rails app:

sudo service squid3 restart

If i try it with this code:

output = ´sudo service squid3 retsart´

It don't work, in the console i see that linux asks the password. How can i pass a password with this command? Or other suggestions...

like image 837
denBelg Avatar asked Dec 16 '22 14:12

denBelg


2 Answers

You can add the following line to your sudoers file (/etc/sudoers)

rails_user ALL=(root) NOPASSWD:/usr/sbin/service

This will basically let the rails_user user execute the service command as sudo, and the system won't ask you for a password.

rails_user should be replaced with whatever user that you are running your rails process under. And you should also make sure that

Defaults requiretty

is not present in your /etc/sudoers. If not you won't be able use sudo from a script.

like image 88
thekindofme Avatar answered Dec 19 '22 05:12

thekindofme


You can try the sudo -S flag if available on you system (check man):

echo secretPasswd | sudo -S service squid3 restart

This means that the password will be in clear so you can add the user which needs to perform the task to the sudoers (which creates another security issue by the way).

like image 31
tommasop Avatar answered Dec 19 '22 03:12

tommasop