История изменений
Исправление 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 юзверя, что ему там передавать. Но! Поскольку мне не годится что бы юзверь сам мог задавать какой файл скачивать, то такой способ не подходит. В противном случае юзверь сможет скачать все, до чего хватит прав аккаунта, да и, по идее, может закинуть что хочет, опять же, в зависимости от прав.