Как добавить пользователя ssh, у которого есть только права доступа к определенной папке?

17

Как добавить пользователя ssh, у которого есть только права доступа к определенной папке?

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

Я создал пользователя с именем musteri. Я установил свою домашнюю папку и группу. Итак, я хочу интегрировать musteriпользователей в "/var/www/xyz.com.tr/musteri". Я не хочу доступ к другой папке.

Cell-O
источник
Вы хотите, чтобы у пользователя был полный доступ к оболочке, или только протоколы копирования файлов, такие как sftp и rsync?
Жиль "ТАК - перестань быть злым"
Если последнее, вы, возможно, захотите рассматривать его scponlyкак оболочку, возможно, работающую в chrootрежиме, ограничивающем его доступ к этому каталогу и нигде больше.
Шадур
1
@ Жиль - я хочу получить доступ через sftp. Но я не хочу, чтобы он обращался к другой папке.
Cell-o
1
@ Cell-o: если вам нужно только несколько протоколов передачи файлов, а не оболочек, используйте chroot плюс scponly или rssh (Google scponly chrootили rssh chrootдолжен привести вас к Howtos).
Жиль "ТАК - перестань быть злым"
Как насчет использования ACL?
fpmurphy

Ответы:

19

Похоже, вы хотите, чтобы ваш müşteriler имел доступ для передачи файлов к папке, фактически не передавая им оболочки. Это хорошо, потому что, как указал binfalse , давать оболочкам людей с ограниченным доступом довольно сложно, потому что оболочкам нужен доступ ко всем видам вещей, разбросанных по системе, просто для запуска.

Чтобы предоставить SFTP-доступ к определенной папке, вы можете сделать что-то вроде этого.

  1. Добавьте новую группу в систему, скажем «sftponly».
  2. Добавьте любых пользователей в вашей системе, которые должны иметь ограниченные права на эту группу. Вы также можете дать им ограниченные оболочки, такие как / bin / true, но это не обязательно.
  3. Измените ваш конфигурационный файл ssh (обычно /etc/ssh/sshd_config) с помощью этих строк
    Подсистема sftp internal-sftp

    Матч группа sftponly
        ChrootDirectory% h
        РазрешитьTCPForwarding нет
        X11Пересылка нет
        ForceCommand internal-sftp

Это активирует подсистему sftp внутри SSH и вынудит членов этой системной группы использовать только эту систему при входе в систему. Это также приведет к их привязке к их домашним каталогам. Вы можете изменить это на подпапку их домашних директоров, например, ChrootDirectory %h/musteri_sftpчтобы они не могли просматривать остальные системные файлы, а входили напрямую в специальную подпапку своей домашней папки.

Колай Желсин.

Калеб
источник
Öncelikle teşekkürler. ;) Как вы упомянули, я настроил SFTP. Но у меня проблема с iptables.Here мое правило. -> RH-Firewall-1-INPUT -m состояние --state NEW -m tcp -p tcp --dport 21 -j ПРИНЯТЬ
Cell-o
1
Birşey değil. Хотя FTP будет использовать порт 21, SFTP - это протокол, подобный ftp , который работает по каналу SSH, поэтому он будет использовать порт SSH, который по умолчанию равен 22.
Caleb
Обратите внимание, что вы также должны найти и закомментировать любую ранее существующую команду Подсистемы (например, Подсистема sftp / usr / lib / openssh / sftp-server)
CnrL
Решил мою проблему и выучил несколько полезных турецких фраз! Бонус!
eimajenthat
2

На мой взгляд, это очень сложно, если не невозможно. Когда пользователь подключается через SSH, ему по крайней мере требуется оболочка, в вашем случае - bash. Для выполнения /bin/bashему нужны разрешения на доступ /bin. bashСамому себе нужно читать некоторые вещи из /etc(например /etc/bash.bashrc), поэтому пользователю также необходим доступ /etc. Предполагая, что пользователь не только хочет зависать в этом каталоге, он может захотеть прочитать файл, но для выполнения, например, vimему также необходим доступ /usr/bin.
Это всего лишь небольшая демонстрация, есть еще несколько зависимостей, например, я действительно не знаю, что произойдет, если у пользователя нет доступа к /tmp..

Вы должны думать о своем намерении. Вы просто хотите, чтобы кто-то имел доступ на чтение / запись к части вашего веб-сервиса? Затем вы можете настроить что-то вроде FTP для экспорта определенного каталога этому пользователю. Таким образом, он может читать / записывать эти файлы без доступа по SSH.
Другим хорошим решением будет хранилище. Например, настройте репозиторий GIT и позвольте пользователю клонировать его. Он может сделать свои изменения локально и отправить вам патч. Вы можете решить, применять этот патч или нет, откат для глючных патчей также очень прост.

binfalse
источник
rbashпредназначен именно для этого.
Багамат
Эта вещь называется ограниченной оболочкой . Но поскольку Cell-o хочет разрешать только передачу файлов, это не тот инструмент.
Жиль "ТАК - перестать быть злым"