23

I can do an su with su <username> and it asks for my password. Is there a password parameter for su such that i wont be prompted for a password?

e.g. su <username> -p <password>

alvas
  • 2,867
  • 10
  • 34
  • 47
  • 1
    It seems the question fits perferctly to superuser: http://superuser.com/ :-) – HongboZhu Oct 07 '13 at 12:59
  • You can have a look here: http://stackoverflow.com/questions/233217/pass-password-to-su-sudo-ssh or here: http://stackoverflow.com/questions/715908/how-do-you-make-sudo-save-the-password – HongboZhu Oct 07 '13 at 13:02
  • 1
    i got it from `superuser` here, http://superuser.com/questions/67765/sudo-with-password-in-one-command-line – alvas Oct 07 '13 at 13:08

3 Answers3

14

If you want to write a script that runs as a different user something like this works, though it dows output the word "password" without a newline to standard out

su - username <<!
enterpasswordhere
enter commands to run as the new user
!

if you have a user named fred with a password of 1234 and want to get an ls of fred's home directory as fred, without the password string displayed, it would look like

su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
Brian
  • 141
  • 1
  • 3
7

I belive, there is not and it would not be a good idea. Here's why:
If you write a password in a command like su <username> -p <password>, it would be stored in plain text in your bash history. This is certainly a huge security issue.

If you need to run commands with su (or sudo) in an automated way, write a shellscript containig the commands without su or sudo and run su <username> script.sh

Wayne_Yux
  • 4,873
  • 3
  • 27
  • 35
  • 4
    `su root script` still need to enter passwd. – Dai Kaixian Feb 15 '17 at 05:00
  • @DaiKaixian yes, but it is not saved anywhere and nobody can read it – Wayne_Yux Feb 15 '17 at 07:45
  • 2
    you can try something like : `echo | sudo -S `.Althought it is not safe, but it works. – Dai Kaixian Feb 15 '17 at 07:53
  • 1
    the whole point of my answer is, that it is not save to write a password in a command. So I advise to *not* do that – Wayne_Yux Feb 15 '17 at 07:58
  • It's only a security issue if you care about the user not being accessed by anyone else. In my case, for example, I just want a new user with no permissions to use for running an external script that I don't trust. – Jezor Aug 11 '20 at 08:58
  • Just use two blank spaces before executing the command (at the beginning, before the command) and it will not save to history. – mchid Feb 04 '21 at 12:01
-4

If you want to execute some specific commands as a new user, use the following command:
sudo -u {username} {command to be executed as the new user}

DJCrashdummy
  • 1,881
  • 3
  • 24
  • 34
ashes
  • 1