1

Я настроил пользователя ssh на Windows Server 2008 R2.

Я смог изменить каталог по умолчанию.

Единственная часть, которую я не мог понять, это как ограничить пользователя только этим каталогом.

Другими словами, я не хочу, чтобы пользователь мог менять каталог.

Пожалуйста, порекомендуйте.

РЕДАКТИРОВАТЬ:

Вот где я стою:

  • Cygwin установлен
  • Пользователь ( James) создан в Windows
  • Группа (SftpUser), созданная в Windows
  • SftpUser не отображается в /etc /passwd
  • вместо этого есть какая-то группа None членом которой является Джеймс
  • Я могу войти с моим пользователем
  • cygdrive и dev (я не хочу этого)
  • cygdrive пуст


Вот сценарий

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

D:\uploads\james_folder\

в Cygwin

/cygdrive/d/uploads/james_folder/

Я не против иметь ограничение на

/home/james/upload

А затем смонтировать каталог в домашнем каталоге, но кажется, что Cygwin не поставляется вместе с Samba.

sshd_config

Match user james
    ChrootDirectory /home/james/upload/
    ForceCommand internal-sftp

2 ответа2

1

Недавно я настроил SFTP поверх Cygwin и понял, что мы не можем скрыть следующие каталоги:

  • /cygdrive
  • / DEV

Поскольку вы, возможно, знаете, что /path /to /sftp должен принадлежать пользователю root, который не доступен для записи любому другому пользователю или группе, вам необходимо обновить идентификатор пользователя в /etc /passwd до 0, поскольку отсутствует концепция root в винде.

Если вы поместите пользователя в тюрьму без cygdrive (например, /sftp), вы увидите только /cygdrive (в /cygdrive ничего не появится).

Если вы заключите пользователя в cygdrive (например, /cygdrive/d/.../sftp), вы увидите /cygdrive /d. Однако вы не можете перейти в любой родительский каталог, если настроите его правильно.

Надеюсь, что приведенная выше информация поможет!


Пожалуйста, проверьте следующие вещи:

  1. Убедитесь, что идентификатор текущего пользователя, вошедшего в систему (james в вашем примере) в /etc /passwd, равен нулю. Это связано с тем, что cygwin изменит пользователя всех каталогов в корневом каталоге при входе текущего пользователя. Пожалуйста, запустите команду ls -l / для проверки.
  2. Убедитесь, что /home, /home /james, /home /james /upload является текущим пользователем (т. Е. Эквивалентно root-владельцу с идентификатором пользователя 0).
  3. Убедитесь, что /etc /sshd_config содержит:

    Match user james
    ChrootDirectory /home/james/upload/
    ForceCommand internal-sftp
    
1

Вам нужно настроить каталог ChrootDirectory в sshd_config

Подробные инструкции для ArchLinux доступны на SFTP chroot.

Основная схема выглядит следующим образом:

1) Добавьте конфигурацию chroot в sshd_confg например:

Match User username
ChrootDirectory /home/%u
ForceCommand internal-sftp

2) Измените права на каталог chroot с помощью чего-то вроде:

chown root.root /home/<user>
usermod -d / <user>

3) Исправление пути для author_keys что-то вроде:

AuthorizedKeysFile      %h/.ssh/authorized_keys

Сообщение в списке рассылки cygwin сообщает об успешном использовании этого метода для ограничения доступа с такой же конфигурацией, как указано выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .