LINUX.ORG.RU

История изменений

Исправление HighMan, (текущая версия) :

Кое что стало понятно! Во первых:

ssh testuser@myserver.com bla-bla-bla bla

Скрипт получает аргументы: -с, bla-bla-bla и bla

При получении определенного аргумента

if [ $# -eq 2 ]; then
# считаем что argv[1] имя файла в директории /tmp
   if [ -f /tmp/${1} ]; then # если есть, то
      cat /tmp/${1}
      rm -fr /tmp/${1}
      exit 0
   fi
fi

Юзверю достаточно ввести команду:

ssh testuser@myserver.com bla-bla-bla > bla-bla-bla

И он получил нужный файл

Во вторых:

Если юзверь лезет scp, то… Простите, но для понятности я решил воспользоваться сишным синтаксисом int main(int argc, char ** argv), что бы было понятнее

argc = 2
argv[0] = "-c"
argv[1] = "/usr/lib/openssh/sftp-server"

О чем это говорит? Судя по всему, достаточно запустить sftp-server без параметров и он сам договорится с scp юзверя, что ему там передавать.

Но! Поскольку мне не годится что бы юзверь сам мог задавать какой файл скачивать, то такой способ не подходит. В противном случае юзверь сможет скачать все, до чего хватит прав аккаунта, да и, по идее, может закинуть что хочет, опять же, в зависимости от прав.

Исправление HighMan, :

Кое что стало понятно! Во первых:

ssh testuser@myserver.com bla-bla-bla bla

Скрипт получает аргументы: -с, bla-bla-bla и bla

При получении определенного аргумента

if [ $# -eq 2 ]; then
# считаем что argv[1] имя файла в директории /tmp
   if [ -f /tmp/${1} ]; then # если есть, то
      cat /tmp/${1}
      rm -fr /tmp/${1}
      exit 0
   fi
fi

Юзверю достаточно ввести команду:

ssh testuser@myserver.com bla-bla-bla > bla-bla-bla

И он получил нужный файл

Во вторых:

Если юзверь лезет scp, то… Простите, но для понятности я решил воспользоваться сишным синтаксисом, что бы было понятнее

argc = 2
argv[0] = "-c"
argv[1] = "/usr/lib/openssh/sftp-server"

О чем это говорит? Судя по всему, достаточно запустить sftp-server без параметров и он сам договорится с scp юзверя, что ему там передавать.

Но! Поскольку мне не годится что бы юзверь сам мог задавать какой файл скачивать, то такой способ не подходит. В противном случае юзверь сможет скачать все, до чего хватит прав аккаунта, да и, по идее, может закинуть что хочет, опять же, в зависимости от прав.

Исправление HighMan, :

Кое что стало понятно! Во первых:

ssh testuser@myserver.com bla-bla-bla bla

Скрипт получает аргументы: -с, bla-bla-bla и bla

При получении определенного аргумента

if [ $# -eq 2 ]; then
# считаем что argv[1] имя файла в директории /tmp
   if [ -f /tmp/${1} ]; then # если есть, то
      cat /tmp/${1}
      rm -fr /tmp/${1}
      exit 0

Юзверю достаточно ввести команду:

ssh testuser@myserver.com bla-bla-bla > bla-bla-bla

И он получил нужный файл

Во вторых:

Если юзверь лезет scp, то… Простите, но для понятности я решил воспользоваться сишным синтаксисом, что бы было понятнее

argc = 2
argv[0] = "-c"
argv[1] = "/usr/lib/openssh/sftp-server"

О чем это говорит? Судя по всему, достаточно запустить sftp-server без параметров и он сам договорится с scp юзверя, что ему там передавать.

Но! Поскольку мне не годится что бы юзверь сам мог задавать какой файл скачивать, то такой способ не подходит. В противном случае юзверь сможет скачать все, до чего хватит прав аккаунта, да и, по идее, может закинуть что хочет, опять же, в зависимости от прав.

Исправление HighMan, :

Кое что стало понятно! Во первых:

ssh testuser@myserver.com bla-bla-bla bla

Скрипт получает аргументы: -с, bla-bla-bla и bla

При получении определенного аргумента

if [ $# -eq 2 ]; then
# считаем что argv[1] имя файла в директории /tmp
   if [ -f /tmp/${1} ]; then # если есть, то
      cat /tmp/${1}
      rm -fr /tmp/${1}
      exit 0

Юзверю достаточно ввести команду:

ssh testuser@myserver.com bla-bla-bla > bla-bla-bla

И он получил нужный файл

Во вторых:

Если юзверь лезет scp, то… Простите, но для понятности я решил воспользоваться сишным синтаксисом, что бы было понятнее

argc = 2
argv[0] = "-c"
argv[1] = "/usr/lib/openssh/sftp-server"

О чем это говорит? Судя по всему, достаточно запустить sftp-server без параметров и он сам договорится с scp юзверя, что ему там передавать. Но! Поскольку мне не годится что бы юзверь сам мог задавать какой файл скачивать, то такой способ не подходит. В противном случае юзверь сможет скачать все, до чего хватит прав аккаунта, да и, по идее, может закинуть что хочет, опять же, в зависимости от прав.

Исходная версия HighMan, :

Кое что стало понятно! Во первых:

ssh testuser@myserver.com bla-bla-bla bla

Скрипт получает аргументы: bla-bla-bla и bla

При получении определенного аргумента

if [ $# -eq 2 ]; then
# считаем что argv[1] имя файла в директории /tmp
   if [ -f /tmp/${1} ]; then # если есть, то
      cat /tmp/${1}
      rm -fr /tmp/${1}
      exit 0

Юзверю достаточно ввести команду:

ssh testuser@myserver.com bla-bla-bla > bla-bla-bla

И он получил нужный файл

Во вторых:

Если юзверь лезет scp, то…

argc = 2
argv[0] = -c
argv[1] = /usr/lib/openssh/sftp-server

О чем это говорит? Судя по всему, достаточно запустить sftp-server без параметров и он сам договорится с scp юзверя, что ему там передавать. Но! Поскольку мне не годится что бы юзверь сам мог задавать какой файл скачивать, то такой способ не подходит. В противном случае юзверь сможет скачать все, до чего хватит прав аккаунта, да и, по идее, может закинуть что хочет, опять же, в зависимости от прав.