61

I've recently set up my server so that my suPHP 'virtual' users can't be logged into by using this article

My issue now is that before when I ran a rake command for my Ruby on Rails application running on the server, I used su to go into www-data and execute the command from there - obviously I can't do that anymore because of the nologin.

So as a root user, how can I execute commands as other user's, even if they are nologin?

Tablemaker
  • 1,159
  • 1
  • 11
  • 23
  • One way is to launch a shell for that user (explicitly specifying the shell): `sudo -u www-data bash` execute your command(s) and logout – cyberx86 Nov 21 '11 at 18:21
  • @cyberx86 Your solution works a treat, could you submit it as an answer for me? –  Nov 21 '11 at 19:01

2 Answers2

73

One way is to launch a shell for that user (explicitly specifying the shell):

sudo -u www-data bash 

This will launch a (bash) shell as the specified user. You can then execute your command(s) and logout (to return to your previous shell)

cyberx86
  • 20,620
  • 1
  • 60
  • 80
48

As root you can use su -s /bin/sh $user — the -s option overrides the configured shell for the user.

Sergey Vlasov
  • 6,088
  • 1
  • 19
  • 30