- Как ограничить пользователей SFTP домашними каталогами с помощью chroot Jail
- Ограничить пользователей домашними каталогами
- Создание или изменение пользователей и групп
- Изменить файл конфигурации SSH
- Проверка входа пользователей SSH и SFTP
- Ограничить пользователей определенным каталогом
- Создать группу и новых пользователей
- Настройте SSH для доступа по SFTP
- Заключение
- как создать пользователей чтобы они не могли ходить друг к другу в домашнюю папку
- Настройка домашнего каталога SFTP или SSH Chroot
- 1. Настройка SSH
- 2. Создание пользователя и группы
- Создание пользователя
- Создание группы
- 3. Выставление прав на каталог
- Проверка и решение проблем
- Lshell как альтернатива chroot ssh
Как ограничить пользователей SFTP домашними каталогами с помощью chroot Jail
В этом руководстве мы обсудим, как ограничить пользователей SFTP их домашними каталогами или определенными каталогами. Это означает, что пользователь может получить доступ только к своему домашнему каталогу, а не ко всей файловой системе.
Ограничение домашних каталогов пользователей имеет жизненно важное значение, особенно в среде с общим сервером, чтобы неавторизованный пользователь не смог проникнуть в файлы и папки другого пользователя.
Важно. Также обратите внимание, что целью этой статьи является предоставление доступа только по SFTP, а не по SSH. передача, но не разрешено выполнять удаленный сеанс SSH.
Самый простой способ сделать это — создать изолированную среду тюрьмы для доступа по SFTP. Этот метод одинаков для всех операционных систем Unix/Linux. Используя среду chroot, мы можем ограничить пользователей либо их домашним каталогом, либо определенным каталогом.
Ограничить пользователей домашними каталогами
В этом разделе мы создадим новую группу с именем sftpgroup и назначим правильных владельцев и разрешения учетным записям пользователей. Есть два варианта ограничения пользователей домашними или определенными каталогами, в этой статье мы увидим оба варианта.
Создание или изменение пользователей и групп
Давайте ограничим существующего пользователя, например tecmint , его/ее домашним каталогом с именем /home/tecmint . Для этого вам необходимо создать новую группу sftpgroup с помощью команды groupadd, как показано ниже:
Затем назначьте пользователя tecmint в группу sftpgroup.
# usermod -G sftpgroup tecmint
Вы также можете создать нового пользователя с помощью команды useradd, например senthil , и назначить пользователя в группу sftpusers.
# adduser senthil -g sftpgroup -s /sbin/nologin # passwd tecmint
Изменить файл конфигурации SSH
Откройте и добавьте следующие строки в файл конфигурации /etc/ssh/sshd_config .
Subsystem sftp internal-sftp Match Group sftpgroup ChrootDirectory /home ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
Сохраните и выйдите из файла, перезапустите службу sshd, чтобы новые изменения вступили в силу.
# systemctl restart sshd OR # service sshd restart
Если вы подключаете нескольких пользователей к одному и тому же каталогу, вам следует изменить права доступа к домашнему каталогу каждого пользователя, чтобы запретить всем пользователям просматривать домашние каталоги других пользователей.
Проверка входа пользователей SSH и SFTP
Теперь пришло время проверить вход из локальной системы. Попробуйте подключиться к удаленной системе по ssh из локальной системы.
- tecmint — имя пользователя удаленной системы.
- 192.168.1.150 — IP-адрес удаленной системы.
Пример вывода:
's password: Could not chdir to home directory /home/tecmint: No such file or directory This service allows sftp connections only. Connection to 192.168.1.150 closed.
Затем получите доступ к удаленной системе с помощью SFTP.
Пример вывода:
's password: Connected to 192.168.1.150. sftp>
Давайте проверим текущий рабочий каталог:
sftp> pwd Remote working directory: / sftp> ls tecmint
Здесь tecmint — домашний каталог. Перейдите в каталог tecmint и создайте нужные файлы или папки.
sftp> cd tecmint Remote working directory: / sftp> mkdir test tecmint
Ограничить пользователей определенным каталогом
В нашем предыдущем примере мы ограничиваем существующих пользователей домашним каталогом. Теперь мы увидим, как ограничить нового пользователя пользовательским каталогом.
Создать группу и новых пользователей
Создайте новую группу sftpgroup .
Затем создайте каталог для группы SFTP и назначьте разрешения для пользователя root.
# mkdir -p /sftpusers/chroot # chown root:root /sftpusers/chroot/
Далее создайте для каждого пользователя новые директории, к которым у них будет полный доступ. Например, мы создадим пользователя tecmint и его новый домашний каталог с правильным групповым разрешением, используя следующую серию команд.
# adduser tecmint -g sftpgroup -s /sbin/nologin # passwd tecmint # mkdir /sftpusers/chroot/tecmint # chown tecmint:sftpgroup /sftpusers/chroot/tecmint/ # chmod 700 /sftpusers/chroot/tecmint/
Настройте SSH для доступа по SFTP
Измените или добавьте следующие строки в конец файла:
#Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftpgroup ChrootDirectory /sftpusers/chroot/ ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
Сохраните и закройте файл. Перезапустите службу sshd, чтобы изменения вступили в силу.
# systemctl restart sshd OR # service sshd restart
Вот и все, вы можете проверить, войдя на удаленный сервер SSH и SFTP, выполнив шаг, описанный выше, в разделе «Проверить вход SSH и SFTP».
Помните, что этот метод отключит доступ к оболочке, то есть вы не сможете получить доступ к сеансу оболочки удаленной системы с помощью SSH. Вы можете получить доступ к удаленным системам только через SFTP и выполнять передачу файлов в локальную и удаленную системы и обратно.
Заключение
Теперь вы знаете, как ограничить домашние каталоги пользователей с помощью среды Chroot в Linux. Если вы найдете это полезным, поделитесь этой статьей в своих социальных сетях и сообщите нам в разделе комментариев ниже, если есть какие-либо другие способы ограничить домашние каталоги пользователей.
как создать пользователей чтобы они не могли ходить друг к другу в домашнюю папку
Выше уже сказали. Просто запрети другим пользователям доступ на чтение.
Так же как и в виде,берёшь папку и запрещаешь вход прочим.
полную команду можете написать
Сейчас не смогу, глянь в ман chmod.
Ну и опцию -с указать не забудь.
И ещё нужный тебе режим 0750.
Но лучше доступ к домашней папке не запрещать, а запретить доступ к конкретным отдельно взятым папкам.
тут вроде только на изменение , мне надо вообще кроме своей директории не куда не заходил))
amorpher ★★★★★ ( 28.09.15 19:41:12 MSK )
Последнее исправление: amorpher 28.09.15 19:43:23 MSK (всего исправлений: 1)
unt1tled ★★★★ ( 28.09.15 19:43:35 MSK )
Последнее исправление: unt1tled 28.09.15 19:43:50 MSK (всего исправлений: 1)
а чё, не круто? консольку чёрную надо с зелёными буковками?
amorpher ★★★★★ ( 28.09.15 19:45:36 MSK )
Последнее исправление: amorpher 28.09.15 19:46:09 MSK (всего исправлений: 1)
мне надо вообще кроме своей директории не куда не заходил))
chmod g-rwx,o-rwx -R /path/to/home
vps — это не посикс фс правами запретить доступ.
Над каждым домашним каталогом провести операцию chmod 750 /home/$userName.
Кхм. к чужим файлам — доступ легко запрещается chmod. К системным файлам запрещать доступ нельзя. Как минимум, откуда пользователь будет запускать программы? Все эти python, bash и т. д. находятся в /usr/bin и должны быть доступны для чтения всем пользователям. То же касается разделяемых библиотек, общесистемных конфигов (например, /etc/resolv.conf или /etc/hosts). В общем, к большинству системных файлов (файлы типа /etc/shadow и так защищены от чтения всеми кроме root) каждый юзер таки ДОЛЖЕН иметь доступ. Впрочем, это не беда, ибо секретного в этих файлах ничего нет, а доступ на чтение ещё не значит доступ на запись, который как раз запрещён.
Если же хочется, чтобы каждый пользователь мог иметь индивидуальный набор софта и системных конфигов, то man chroot.
права на катало
по дефолту, когда создаешь юзера, ему дается группа, к которой другие не имеют доступа
ЩИТО? Оно в убунтудебианах может, и так, а в нормальных дистрибутивах пользователи по умолчанию в группе users.
найми админа.
серьезно.
vps — это не посикс фс правами запретить доступ.
Хочу быть админом. Что ещё надо запретить?
чтобы сделать что? чтобы сделать vps? vps подразумевает контейнер с рутовым доступом, соответственно надо как минимум поднять какой-нибуть тип виртуализации, от джейлсов до hvm, и систему их провижена и менеджмента.
ЩИТО? Оно в убунтудебианах может, и так, а в нормальных дистрибутивах пользователи по умолчанию в группе users.
Будь добр, не таись, открой имя этого нормального дистрибутива, а то сколько лет мучаюсь, сколько перевидал, так хочется users-френдли.
Slackware же. Только и в ней придется ограничивать права на доступ к домашним каталогам, поскооьку по умолчанию пользователи могут читать содержимое $HOME других пользователей.
А ограничения по ресурсам уже придумал как делать?
Настройка домашнего каталога SFTP или SSH Chroot
Обновлено: 08.10.2018 Опубликовано: 30.10.2017
По умолчанию, при подключении по SFTP пользователь имеет возможность спускаться по дереву каталогов и видеть структуру папок. А при наличии прав, редактировать и удалять файлы. Доступ можно ограничить, создав специальное окружение для определенной папки и всех ее подпапок.
1. Настройка SSH
Открываем конфигурационный файл openssh:
Комментируем следующую строку:
#Subsystem sftp /usr/lib/openssh/sftp-server
Добавляем следующее (обязательно в самый конец файла).
Для определенного пользователя:
Subsystem sftp internal-sftp -f AUTH -l VERBOSE
Match user sftpuser
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
* где sftpuser — имя пользователя, для которого срабатывает набор правил; %h (home directory) — домашняя директория пользователя (здесь также можно указать конкретный каталог); ForceCommand internal-sftp — использовать только sftp, встроенный в ssh.
** если данные строки добавить не в конец файла, сервис ssh может не запуститься.
Для группы пользователей:
Subsystem sftp internal-sftp -f AUTH -l VERBOSE
Match group sftpgroup
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
* как видим, в данном примере все то же самое — только меняем user на group. /home/%u — другой способ прописать путь к домашней директории (/home + имя пользователя).
После перезапускаем службу:
systemctl restart ssh || systemctl restart sshd || service ssh restart || service sshd restart
* команда рассчитана на запуск в разных версиях Linux (CentOS / Ubuntu / Red Hat / Debian и так далее, а также на базе systemd или ранних версий), так как служба может называться ssh или sshd.
2. Создание пользователя и группы
Если в системе еще нет группы или пользователя, для которого мы настроили SSH chroot, выполняем следующие команды.
Создание пользователя
useradd sftpuser -d /home/sftpuser -m
* где sftpuser — имя пользователя; /home/sftpuser — домашний каталог пользователя.
Задаем пароль для пользователя:
Создание группы
Для добавления пользователя в группу можно воспользоваться командой:
usermod sftpuser -G sftpgroup
* 1004 — идентификатор группы (может быть любым числом).
3. Выставление прав на каталог
При попытке подключиться по SFTP мы получим ошибку fatal: bad ownership or modes for chroot directory, так как необходимо выставить правильные права. Система требует, чтобы все каталоги пути имели права 755 и их владельцем был root.
В нашем примере мы выполняем следующие команды:
drwxr-xr-x 2 root root 4096 окт. 30 09:00 /home/sftpuser/
Проверка и решение проблем
Проверить настройку можно с помощью любого sftp-клиента, например Filezilla или WinSCP.
При возникновении проблем, стоит просмотреть лог
* первая команда подходит для систем на базе RPM, вторая — Debian.
Lshell как альтернатива chroot ssh
По сути, это более простой способ настроить окружение chroot для пользователя UNIX систем.
Его развертывание сводится к установке:
* первая команда для Red Hat / CentOS / Fedora . вторая — Debian / Ubuntu.
И смене шела для пользователя:
Остальная настройка выполняется в файле /etc/lshell.conf.