Linux запрещает пользователю покидать домашнюю папку

Обновлено: 02.07.2024

Я относительно новичок в администрировании серверов Unix, поэтому этот вопрос может показаться глупым. Я запускаю каплю CentOS 7. Я создал нового пользователя и установил его домашний каталог в /var/www/blablabla/public_html через usermod. Думаю, у меня действительно есть два вопроса:

Как сделать так, чтобы пользователь мог делать что-либо только в этой папке? (то есть: эта папка является корневой для пользователя, и они не могут просматривать/редактировать что-либо выше в дереве каталогов)

Могу ли я запретить пользователю подключаться через SSH, но при этом разрешить ему подключаться через SCP? И если да, то как?

я создаю пользователя в Centos с помощью команды продвижения

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

Вы можете ввести !ref в этой текстовой области, чтобы быстро найти наш полный набор руководств, документации и предложений на рынке и вставить ссылку!

Эти ответы предоставлены нашим сообществом. Если вы найдете их полезными, проявите свою любовь, нажав на сердце. Если у вас возникнут проблемы, оставьте комментарий или добавьте свой ответ, чтобы помочь другим.

2). SCP требует SSH, поэтому вы не сможете разрешить SCP и запретить SSH. Если вы имели в виду SFTP, то да, вы можете запретить доступ по SSH и при этом разрешить SFTP.

Во-первых, запустите PuTTy, Terminal или предпочитаемое приложение, чтобы получить доступ к дроплету, и войдите в систему как пользователь root или sudo.

<р>1). Во-первых, нам нужно создать новую группу для пользователей SFTP. В эту группу мы добавляем пользователей, которые смогут подключаться к SFTP. Только пользователи, добавленные в эту группу, смогут подключаться к вашему серверу по SFTP (конечно, это не ограничивает пользователя root — вы не хотите ни добавлять root в эту группу, ни вообще изменять пользователя root). Для этого воспользуемся следующей командой:

Конечно, при желании вы можете выбрать другое название группы. Название группы не обязательно должно быть sftpusers (это может быть любое имя, если группа еще не существует).

2). Теперь, когда у нас есть группа SFTP, мы можем использовать следующую команду, чтобы добавить новых пользователей в эту группу, таким образом, когда мы закончим, разрешив им использовать SFTP.

-d указывает домашний каталог пользователя (например, /home/username/htdocs/public_html)

-s указывает доступ к оболочке (/sbin/nologin означает, что SSH отключен для этого пользователя, как и должно быть)

Последняя часть команды, username , – это имя пользователя, которого вы хотите добавить. Так, например, если бы я хотел создать нового пользователя с именем exampleuser и каталогом /home/exampleuser/htdocs/public_html, я бы выполнил:

3). Проверьте пользователя, проверив /etc/passwd. Вновь созданный пользователь должен появиться внизу списка.

4). Если вы хотите изменить существующего пользователя, мы можем использовать следующую команду:

Просто измените -d на домашний каталог пользователя, а существующий пользователь на пользователя, которого вы хотите изменить.

5). Теперь нам нужно изменить нашу конфигурацию SSH, чтобы разрешить SFTP (поскольку он часто не включен по умолчанию, по крайней мере, для пользователей, отличных от root). Для этого нам нужно загрузить наш файл конфигурации SSH.

Закомментируйте это так:

Если такой строки не существует, просто добавьте в конец файла следующее:

Что это делает, так это настраивает SSH для разрешения SFTP, требует, чтобы группа пользователей соответствовала sftpusers , устанавливает каталог SFTP в указанный им домашний каталог (тот, который мы установили при создании или изменении пользователя) и принудительно использует внутренний SFTP-сервер. Это избавляет нас от необходимости использовать другое программное обеспечение для работы с SFTP.

Теперь нам нужно перезапустить SSH, введя:

6). Теперь, когда мы все настроили, нам нужно внести последние изменения в разрешения, которые мы установили для наших каталогов (это нужно будет сделать для каждого пользователя).

В этом примере я буду использовать домашний каталог, на который я ссылался выше

Для правильной работы SFTP нам нужно убедиться, что домашний каталог принадлежит пользователю и группе, которые мы только что установили, все остальное должно принадлежать пользователю root . Итак, если мы установим наш домашний каталог выше, нам нужно запустить:

Вы можете подтвердить, что право собственности изменилось на /home/exampleuser/htdocs/

Поэтому при выполнении команды ls -al вы должны увидеть следующее право собственности:

Если это то, что вы видите, теперь вы должны иметь возможность использовать SFTP в качестве пользователя-примера, используя свой IP-адрес дроплета и пароль, который вы установили для этого пользователя. Если вы еще не установили пароль, вы можете использовать команду passwd из интерфейса командной строки:

и вам будет предложено установить пароль.

Если вам нужна помощь или что-то из вышеперечисленного вас смущает, просто дайте мне знать, и я буду более чем счастлив помочь!

Здравствуйте, @Maxoplata. Я пытался сделать то, что вы объясняете в этой статье, но теперь я не могу получить доступ к дроплету от имени пользователя root. Вот список команд, которые я выполнил в Putty:

Знаете ли вы, как я могу отменить эти команды? С уважением, Патрик PS: я использую Debian 8.

Если вы не хотите использовать домашний каталог пользователя, например. /home/exampleuser тогда конфигурация ssh должна быть такой

Перезапустите службу ssh, после чего она заработает.

В статье показано, что при вводе команды ls -al будет отображаться что-то вроде этого:

root:root /home/ root:root /home/exampleuser/ root:root /home/exampleuser/htdocs/

Что касается разрешения, я использовал команду:

но папка /wp-content уже существует и уже имеет разрешение www-data:www-data. Так что я могу изменить его на exampleuser:sftpusers, нет проблем?

В любом случае, я не могу получить доступ к SFTP с этим новым пользователем при размещении в группе, т.е. у меня есть существующий пользователь, и он обращается нормально, но имеет доступ ко всем папкам сервера. Затем я создаю группу, помещаю пользователя в группу с помощью команды ниже и делаю остальные шаги, указанные в статье, но после этого пользователь больше не входит:

Кто-нибудь может мне помочь?

как я могу ограничить пользователя только его домашним каталогом, который входит в систему через ключ в filezilla? Пожалуйста, дайте мне знать, как это сделать

Как я могу запретить пользователям доступ к чему-либо, кроме их собственного домашнего каталога?

Например, у меня есть раздел NTFS, смонтированный в /media/ntfs , поэтому, если пользователь входит в систему через ssh, он может получить доступ к этому разделу. Как я могу запретить пользователям выходить из своего домашнего каталога?


6 ответов 6

Сначала переоцените свои требования. Какую проблему вы пытаетесь решить? Почему вы хотите запретить пользователям покидать свой домашний каталог? Разве вы не хотите, чтобы они рылись в конкретных других каталогах, например, в домашних каталогах других пользователей?

Очень сложно запретить пользователям покидать свой домашний каталог. На самом деле это тоже немного глупо (объяснение следует). Гораздо проще запретить пользователям входить в каталоги, в которые вы не хотите, чтобы они входили.

Во-первых, да, вы можете предоставить пользователям так называемую ограниченную оболочку, см. man rbash . Это предотвратит их cd -ing в другом месте, но только внутри этой оболочки. Если пользователь запускает vi или nano (или любую другую программу, способную открывать файл), он снова может открывать файлы в любом месте системы. На самом деле ограниченная оболочка не мешает, например. кот /etc/passwd .

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

Пользователи, с другой стороны, надежны: им приходилось аутентифицироваться и работать без повышенных привилегий. Следовательно, прав доступа к файлам достаточно, чтобы они не могли изменять файлы, которыми они не владеют, и видеть то, что они не должны видеть. Чтобы пользователи не могли читать содержимое файла, отключите его доступность для чтения с помощью chmod o-r FILE. Чтобы пользователи не заходили в каталог, сделайте его недоступным для всех с помощью chmod o-rwx DIR .

Тем не менее, доступность для чтения по умолчанию используется по уважительной причине: пользователям на самом деле нужно большинство данных, хранящихся в файловой системе. Не запирайте пользователей дома только потому, что снаружи есть секреты.

Почему запирать пользователей в их домашнем каталоге немного глупо

Чтобы сделать что-то полезное, пользователям нужен доступ к командам и приложениям. Они находятся в таких каталогах, как /bin и /usr/bin , поэтому, если вы не скопируете все необходимые им команды оттуда в свои домашние каталоги, пользователям потребуется доступ к /bin и /usr/bin . Но это только начало. Приложениям нужны библиотеки из /usr/lib и /lib , которым, в свою очередь, нужен доступ к системным ресурсам, которые находятся в /dev , и к файлам конфигурации в /etc и /usr/share .

Это была только часть, доступная только для чтения. Приложениям также потребуется /tmp и часто /var для записи. Итак, если вы хотите ограничить пользователя его домашним каталогом, вам придется много копировать в него. На самом деле это практически целая базовая файловая система, которая у вас уже есть и расположена в / .

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

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

Важно: также обратите внимание, что целью этой статьи является предоставление доступа только к SFTP, а не к входам в систему SSH. Следуя этой статье, вы получите разрешения на передачу файлов, но не сможете выполнять удаленный сеанс SSH.

Самый простой способ сделать это — создать изолированную среду тюрьмы для доступа по SFTP. Этот метод одинаков для всех операционных систем Unix/Linux. Используя chroot-окружение, мы можем ограничить доступ пользователей либо к их домашнему каталогу, либо к определенному каталогу.

Разрешить пользователям доступ к домашним каталогам

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

Создание или изменение пользователей и групп

Давайте ограничим существующего пользователя, например, tecmint, его/ее домашним каталогом с именем /home/tecmint. Для этого вам необходимо создать новую группу sftpgroup с помощью команды groupadd, как показано ниже:

Далее назначьте пользователя tecmint в группу sftpgroup.

Вы также можете создать нового пользователя с помощью команды useradd, например senthil, и назначить пользователя в группу sftpusers.

Изменить файл конфигурации SSH

Откройте и добавьте следующие строки в файл конфигурации /etc/ssh/sshd_config.

Сохраните и закройте файл, перезапустите службу sshd, чтобы новые изменения вступили в силу.

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

Подтверждение входа пользователей SSH и SFTP

Теперь пришло время проверить вход из локальной системы. Попробуйте подключиться к удаленной системе через ssh из локальной системы.

  1. tecmint — имя пользователя удаленной системы.
  2. 192.168.1.150 — IP-адрес удаленной системы.
Пример вывода:

Затем получите доступ к удаленной системе с помощью SFTP.

Пример вывода:

Проверим текущий рабочий каталог:

Здесь tecmint — это домашний каталог. Перейдите в каталог tecmint и создайте нужные файлы или папки.

Ограничить доступ пользователей к определенному каталогу

В нашем предыдущем примере мы ограничиваем существующих пользователей домашним каталогом. Теперь мы увидим, как ограничить нового пользователя пользовательским каталогом.

Создать группу и новых пользователей

Создайте новую группу sftpgroup .

Далее создайте каталог для группы SFTP и назначьте разрешения для пользователя root.

Далее создайте новые каталоги для каждого пользователя, к которым у них будет полный доступ. Например, мы создадим пользователя tecmint и его новый домашний каталог с правильными групповыми правами, используя следующую серию команд.

Настройка SSH для доступа по SFTP

Измените или добавьте следующие строки в конец файла:

Сохраните и закройте файл. Перезапустите службу sshd, чтобы изменения вступили в силу.

Вот и все, вы можете проверить это, войдя на удаленный сервер SSH и SFTP, выполнив действия, описанные выше в разделе Проверка входа SSH и SFTP.

Помните, что этот метод отключит доступ к оболочке, т. е. вы не сможете получить доступ к сеансу оболочки удаленной системы с помощью SSH. Вы можете получить доступ к удаленным системам только через SFTP и передавать файлы в локальную и удаленную системы и из них.

Заключение

Теперь вы знаете, как ограничить домашние каталоги пользователей с помощью среды Chroot в Linux. Если вы найдете это полезным, поделитесь этой статьей в своих социальных сетях и сообщите нам в разделе комментариев ниже, если есть какие-либо другие способы ограничить домашние каталоги пользователей.

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

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Как ограничить пользователя определенным каталогом в Linux — Google Cloud

Как ограничить пользователя определенным каталогом в Linux — Google Cloud. Необходимо ограничить пользователя определенными привилегиями, ограничив SSH или разрешив доступ только к определенному каталогу.

В этом руководстве содержится подробное руководство по ограничению доступа пользователей только к определенным каталогам путем изменения файла конфигурации SSH. Это также известно как установка chroot-тюрьмы.

Это руководство протестировано на платформе Google Cloud Platform под управлением Ubuntu 20.04 Линукс-машина. Эта установка, безусловно, будет работать на AWS, Azure или любом облаке, любых VPS или выделенных серверах, работающих под управлением любых дистрибутивов Linux.

два месяца

Предпосылки

  • Корневой доступ к серверу или пользователю с правами sudo

Создать новую группу

Создайте новую группу, чтобы добавить всех пользователей в эту группу.

Создать пользователей и добавить в группу

Теперь вы можете создать пользователя или добавить существующего пользователя в новую группу ограничений.

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

  • -g ограничения добавит пользователя в группу с ограниченным доступом, которую мы создали выше.

Если вам нужно запретить доступ к оболочке, вам нужно использовать флаг -s со значением /bin/false, который предотвращает доступ к SFTP. Если SFTP заблокирован, вы не можете получить доступ к серверу с ключами SSH. В этом случае вам необходимо настроить FTP, чтобы установить и настроить VSFTP, вы можете выполнить эту настройку.

Теперь здесь мы не будем блокировать доступ к оболочке.

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

Вы можете использовать ту же команду для создания неограниченного количества пользователей.

Настроить SSH

После того, как пользователь создан и назначен группе, вы можете настроить SSH, чтобы ограничить доступ к определенному каталогу.

Откройте файл конфигурации SSH /etc/ssh/sshd_config

В нижней части файла найдите строку, начинающуюся с Subsystem sftp /usr/lib/openssh/sftp-server, и замените ее следующей.

Наконец добавьте следующие строки внизу.

Нажмите CTRL + X, затем Y и Enter, чтобы сохранить файл и закрыть его.

Теперь перезапустите службу SSH, чтобы изменения вступили в силу.

Для CentOS или Fedora вы можете использовать следующую команду для перезапуска службы SSH.

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

Проверить настройки

Если у вас не включена аутентификация на основе пароля, вы можете настроить SFTP для доступа к вашему экземпляру или серверу и протестировать свою конфигурацию с помощью FileZilla, WinSCP или CyberDuck.

У вас есть настроенные пароли, вы можете использовать эти команды для проверки.

Откройте SFTP-соединение с вашим сервером с помощью команды sftp.

По запросу введите пароль, который вы установили ранее.

Теперь вы войдете на сервер и увидите приглашение sftp>.

Запустите команду pwd, если конфигурация работает нормально, вы получите результат в виде / .

Подготовьтесь к работе в качестве специалиста по информационным технологиям с операционной системой Linux

Заключение

Теперь вы узнали, как ограничить пользователя определенным каталогом в Linux.

Спасибо за ваше время. Если у вас возникнут какие-либо проблемы или какие-либо отзывы, оставьте комментарий ниже.

Читайте также: