ruby edit sudo file

256 views
Skip to first unread message

saravanan p

unread,
Dec 23, 2013, 1:59:42 AM12/23/13
to rubyonra...@googlegroups.com
Hello friends

I am trying to edit apache2 https.config file which require sudo permission through my ruby scripting.

File.open(local_filename, 'a') { |f| f.write(doc) }

I can open and edit normal file which doesn't require sudo permission.
I am searching around two hours but still not find any solution, Can anyone suggest any idea or any links? 

Thanks

tamouse pontiki

unread,
Dec 23, 2013, 2:28:04 AM12/23/13
to rubyonra...@googlegroups.com
On Mon, Dec 23, 2013 at 12:59 AM, saravanan p <psaravana...@gmail.com> wrote:
I am trying to edit apache2 https.config file which require sudo permission through my ruby scripting.


Be very very careful with this. It can easily leave you wide open to a hack.

Assuming you do really mean a ruby script, and nothing in your Rails app, you can set the setuid bit with chmod and chown the script to root. When it executes, it will execute with root persmissions.

Given you've not been able to find this information yourself, I'd again caution you not to do this.

saravanan p

unread,
Dec 24, 2013, 2:18:07 AM12/24/13
to rubyonra...@googlegroups.com

I am using the below command and now its not asking password but i think its not a secure way...

      system("echo systempassword | sudo -S ruby example.rb")
      example.rb:
       in this .rb file i am opening my apache2 file and editing successfully using ruby File class.

tamouse pontiki

unread,
Dec 24, 2013, 8:55:05 PM12/24/13
to rubyonra...@googlegroups.com
Please don't reply on top (top post). Reply at the bottom so the conversation can be followed easier.


--

That is insecure, yes.

It is possible to use sudo in situations like this, where you don't really have user access to type in the password securely.

Sudo can be configured to allow a user to execute a command or a class of commands with elevated privileges.

Read the sudoers man page for more information on how to set this up.

Nevertheless, I caution you to avoid this situation. I am unclear *why* you need to do this from inside an application.
Reply all
Reply to author
Forward
0 new messages