Можно ли перенести репозиторий FTP в SFTP в Ubuntu? [дубликат]

Я хочу предоставить клиентский доступ к моему серверу, но я хочу ограничить этих пользователей их домашними каталогами. Я буду монтировать любые файлы, которые я хочу, чтобы они могли видеть.

Я создал пользователя bob и добавил его в новую группу под названием sftponly . У них есть домашний каталог / home / bob . Я изменил их оболочку на / bin / false , чтобы остановить вход по SSH. Вот их строка / etc / passwd :

bob:x:1001:1002::/home/bob:/bin/false

Я также изменил / etc / ssh / sshd_config , включив в него следующее:

Match Group sftponly
        ChrootDirectory /home/%u
        ForceCommand internal-sftp
        AllowTcpForwarding no

Когда я пытаюсь войти в систему как и они, вот что я вижу

$ sftp bob@server
bob@server's password: 
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer

Если я закомментирую строку ChrootDirectory , я могу ввести SFTP, но тогда у них будет полная свобода действий на сервере. Я обнаружил, что ChrootDirectory / home работает, но по-прежнему дает им доступ к любому домашнему каталогу. Я явно пробовал ChrootDirectory / home / bob , но это тоже не сработало.

Что я делаю не так? Как я могу ограничить bob до / home / bob / ?

---- EDIT -----

Хорошо, я только что взглянул на ] /var/log/auth.log и увидел следующее:

May  9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May  9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May  9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob

Я не совсем уверен, что там происходит, но это говорит о том, что что-то не так с каталогом пользователя.Вот результат ls -h / home :

drwxr-xr-x 26 oli      oli      4096 2012-01-19 17:19 oli
drwxr-xr-x  3 bob      bob      4096 2012-05-09 14:11 bob
137
задан 12 March 2014 в 23:03

1 ответ

Я создал сценарий из ответа @Oli:

#!/bin/bash

# 1. adds a user to the group sftponly, which have only access to their home directory
# 2. creates a writable folder in the users home directory
# 3. mounts a folder into the users home directory with bind
# see https://askubuntu.com/questions/134425/how-can-i-chroot-sftp-only-ssh-users-into-their-homes

if [ "$1" == "" ]; then
  echo "usage: $0 [username] [path to share] [local foldername]"
  exit 0
fi
U=$1

if [ "$2" == "" ]; then
  echo "no 2. param path to share given (without trailing slash)"
  exit 0
fi
PATH_TO_SHARE="$2"

if [ "$3" == "" ]; then
  echo "no 3. param local foldername given"
  exit 0
fi
LOCAL_FOLDER_NAME="$3"

set -ex

adduser $U
adduser $U sftponly
sudo chown root /home/$U
sudo chmod go-w /home/$U
sudo mkdir /home/$U/writable
sudo chown $U:sftponly /home/$U/writable
sudo chmod ug+rwX /home/$U/writable
mkdir -p "/home/$U/$LOCAL_FOLDER_NAME/"
mount --bind "$PATH_TO_SHARE/" "/home/$U/$LOCAL_FOLDER_NAME/"

echo "$PATH_TO_SHARE/ /home/$U/$LOCAL_FOLDER_NAME/ none defaults,bind 0 0">>/etc/fstab
0
ответ дан 28 July 2021 в 11:33

Другие вопросы по тегам:

Похожие вопросы: