Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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

share|improve this question

3 Answers 3

up vote 3 down vote accepted

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.

share|improve this answer

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
share|improve this answer
    
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 '10 at 12:54
    
maybe add the commands to the users .profile? –  The Unix Janitor Jun 9 '10 at 13:16

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

share|improve this answer
    
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. –  reinierpost Jun 9 '10 at 13:14

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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