Доступ только home linux

Как ограничить пользователей 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 из локальной системы.

  1. tecmint — имя пользователя удаленной системы.
  2. 192.168.1.150 — IP-адрес удаленной системы.
Читайте также:  Изменить пароль пользователя mysql linux
Пример вывода:
'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.
Ну и опцию -с указать не забудь.

Читайте также:  Непривилегированные пользователи astra linux

И ещё нужный тебе режим 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 пользователь имеет возможность спускаться по дереву каталогов и видеть структуру папок. А при наличии прав, редактировать и удалять файлы. Доступ можно ограничить, создав специальное окружение для определенной папки и всех ее подпапок.

Читайте также:  Linux операционная система блокнот

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.

Источник

Оцените статью
Adblock
detector