Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

Possible Duplicate:
How do I use sudo in my script without needing a password?

I want to run a bash script as root with no password prompt.

I tried visudo with no luck(your_username ALL=(ALL) NOPASSWD: /path/to/your/script).

It seems to me the only way out there, is there any other?

share|improve this question

marked as duplicate by Web-E, izx, Anwar Shah, Mitch, Thomas W. Jul 25 '12 at 13:16

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

    
Just to be sure you are aware; you still have to run the script with sudo in front. The only difference is that it shouldn't ask you for a password anymore. –  geirha Jul 25 '12 at 9:39
    
No its not, I tried that and it did not work. That is why I started this. –  Vromoth Jul 25 '12 at 9:40
    
Geirha, What is the point of it then? What I want to do is run it by a keyboard command and not from terminal. –  Vromoth Jul 25 '12 at 9:44
    
ok I can run it from another file though. ta –  Vromoth Jul 25 '12 at 9:50
    
The point is, sudo will allow you to run the command as root without requiring password. Only sudo reads the sudoers file. –  geirha Jul 25 '12 at 10:02
add comment

1 Answer 1

up vote 7 down vote accepted

There is a very neat trick in every Linux which will allow you to do so. It is called the SetUI bit.

Keep in mind that you will need to have the permissions locked down tight in this file for this to be secure.

Make the file owned by root and group root:

sudo chown root.root <my script>

Now set the sticky but, make it executable for all and writable only by root:

sudo chmod 4755 <my script>

Keep in mind if this script will allow any input or editing of files, this will also be done as root.

The SetUID bit makes a script or binary always run as the owner of the file/binary, an example of such a binary is 'passwd'.

There is a solution using sudoers here is an example you could use:

Cmnd_Alias        CMDS = /path/to/your/script

<username>  ALL=NOPASSWD: CMDS

Now just place sudo in front of your script and it should run without asking for a password.

share|improve this answer
    
If you want to be the only one who can run it do the following: 'chown root.<your username> <myscript>'. and change the permissions: 'chmod 4750 <myscript>'. –  Jochen Oonincx Jul 25 '12 at 10:23
1  
setuid on scripts has no effect in Ubuntu due to security issues. It is disabled in the kernel. –  geirha Jul 25 '12 at 10:27
1  
Not sure that is true, I am using Ubuntu 12.04 LTS Server and use SetUID for some of my scripts. And they work like a charm. I haven't changed the kernel though. –  Jochen Oonincx Jul 25 '12 at 10:34
    
I'm on 12.04 too. -rwsr-xr-x 1 root root 18 Jul 25 12:41 /tmp/setuidtest. Script contains two lines, #!/bin/bash and id -u. Running it outputs my uid (1000), not root's (0). –  geirha Jul 25 '12 at 10:45
1  
Well, "sudoing" to your own user doesn't require a password; sudo is smart enough to handle that case. –  geirha Jul 25 '12 at 11:12
show 3 more comments

Not the answer you're looking for? Browse other questions tagged or ask your own question.