Search code examples
bashcygwinrootsudo

Root user/sudo equivalent in Cygwin?


I'm trying to run a bash script in Cygwin.

I get Must run as root, i.e. sudo ./scriptname errors.

chmod 777 scriptname does nothing to help.

I've looked for ways to imitate sudo on Cygwin, to add a root user, since calling "su" renders the error su: user root does not exist, anything useful, and have found nothing.

Anyone have any suggestions?


Solution

  • I answered this question on SuperUser but only after the OP disregarded the unhelpful answer that was at the time the only answer to the question.

    Here is the proper way to elevate permissions in Cygwin, copied from my own answer on SuperUser:

    I found the answer on the Cygwin mailing list. To run command with elevated privileges in Cygwin, precede the command with cygstart --action=runas like this:

    $ cygstart --action=runas command
    

    This will open a Windows dialogue box asking for the Admin password and run the command if the proper password is entered.

    This is easily scripted, so long as ~/bin is in your path. Create a file ~/bin/sudo with the following content:

    #!/usr/bin/bash
    cygstart --action=runas "$@"
    

    Now make the file executable:

    $ chmod +x ~/bin/sudo
    

    Now you can run commands with real elevated privileges:

    $ sudo elevatedCommand
    

    You may need to add ~/bin to your path. You can run the following command on the Cygwin CLI, or add it to ~/.bashrc:

    $ PATH=$HOME/bin:$PATH
    

    Tested on 64-bit Windows 8.

    You could also instead of above steps add an alias for this command to ~/.bashrc:

    # alias to simulate sudo
    alias sudo='cygstart --action=runas'