[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: how to prevent user to login via ssh or exec commands but allow to start ssh tunel



On 2005.03.09 at 20:54:11 +0300, Victor Wagner wrote:

> On 2005.03.09 at 22:06:54 +0400, Vlad Harchev wrote:
> 
> > Hi,
> > 
> > В общем задача:
> > 
> > Есть некий ч-к, хочется дать возможность ему пускать тунели ssh на серваке
> > (ssh -N -R или ssh -N -L) ,но не давать ему возможность логиниться в 
> > сервак или
> > выполнять на нем команды.
> > 
> 
> Поставь ему shell-ом в /etc/passwd, такую программу, которая
> удовлетворяет условиям, требуемым для туннеля, т.е. висит и ждет пока её
> не прервут, но не позволяет выполнять команды.
> 
> Например /bin/cat подойдет. Хотя посредством /bin/cat человек сможет
> кое-какие файлики посмотреть. Лучше скриптик вида
> #!/bin/sh
> exec cat
> 
> который переданные параметры пожрет и cat-у не отдаст.
> > 
> ssh передаст эту команду на выполнение шеллу. Поэтому посредством
> /bin/false хрен чего выполнишь. /bin/false не подходит по другой причине
> - он сразу завершается.  А туннель требует живой сессии.

Попробовал. Выяснил, что /bin/cat достаточно безопасен. Потому как для
передачи команды на выполнение shell-у ssh использует опцию -c
А такой опции у cat нет. Поэтому при попытке сказать 

ssh forwardonlyuser@host /etc/passwd

(где shell-ом у forwardonlyuser стоит /bin/cat) /etc/passwd на экран не
выводится, а вместо этого выдается 

cat: invalid option -- c
Try `cat --help' for more information.

поскольку реально выполняется команда /bin/cat -c /etc/passwd.

А вот при запуске ssh без команды cat честно запускается и ждет пока ему
EOF (Ctrl-D) скажут, что обеспечивает работоспособность port forwarding



Reply to: