2

is there a way to just execute a command (or script) on a user (ssh) login and then exit? some kind of replacing the default shell with a custom script.

i want a user only be able to restart a service, but not to have regular shell-access

thanks

3 Answers 3

3

The way you want to do this is by using ssh keys, and set the command associated with the key in the user's .ssh/authorized_keys file. A quick google gives me this, specifically the "Forced command" section.

Edit: The second part of this is to passwd -l the user so that password-based login is impossible.

6

In Ubuntu I was able to create a script that restarted the service. Then in the user's /etc/passwd entry I set the script as the login shell (the last field).

from /etc/passwd:

testaccount:x:1001:1001:1,,:/home/testaccount:/home/testaccount/login.sh

1
  • In general: write a program that does exactly what the user needs to be able to do, and set it as the user's shell in /etc/passwd. I have used the same principle for CVS servers and other purposes. Jun 9, 2010 at 13:14
2

Something Like that?

root@admin:~ # ssh root@www 'df -h'
Filesystem Size Used Avail Use% Mounted on
/dev/ubda 3.5G 2.1G 1.4G 61% /
tmpfs 96M 4.0K 96M 1% /dev/shm
2
  • yes, something LIKE that :-) in this case the user is able to really login. i just want him to be able to execute EXACTLY 1 command (always the same) and be loged out automaticaly. i do not want him to have shell access
    – bmaeser
    Jun 9, 2010 at 12:54
  • maybe add the commands to the users .profile? Jun 9, 2010 at 13:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .