Linux ограничить пользователя домашним каталогом

Ограничения пользователей в Linux с помощью rbash

RBash — это restricted shell bash, командная оболочка операционной системы семейства Unix, которая может ограничивать некоторые действия пользователей. Это может быть полезно, например, когда требуется ограничить доступ по SSH только рамками выполнения определенных задач и не дать пользователю доступ к системным файлам и приложениям.

Перечень встроенных ограничений rbash

Ограниченный командный интерпретатор rbash ведет себя аналогично bash, но следующие действия не разрешены или не выполняются:

  • запрещена смена текущего каталога командой cd
  • запрещено изменять переменные окружения PATH, SHELL, ENV, BASH_ENV
  • запрещен доступ к переменной SHELLOPTS
  • запрещено перенаправление вывода
  • запрещен вызов утилит, в названии которых присутствует хотя бы один символ «слэш» (/)
  • запрещен вызов команды exec для запуска другого процесса
  • запрещен ряд других команд, которые могут использовать сценарий для выполнения непредусмотренных действий
  • запрещен выход из ограниченного режима

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

Установка rbash

Rbash — это просто символьный линк, который по умолчанию отсутствует в Red Hat, Fedora, Centos, но пристутствет в Ubuntu.
Чтобы проверить установлен ли rbash или нет можно выполнить команду ниже, которая должна показать путь к rbash. Если в результате пусто, то rbash отсутствует.

Источник

Как ограничить доступ пользователя в Linux

Как ограничить доступ пользователя в Linux

Представьте себе этот сценарий. Вы хотите разрешить пользователю выполнять только определенные задачи и выполнять определенные команды. Пользователь не должен изменять переменные / пути окружения. Он / она не может посещать другие каталоги, кроме своего домашнего каталога, и не может переключаться на других пользователей и т. Д. Пользователь может выполнять только несколько команд, назначенных системным администратором. Это возможно? Да! Здесь на помощь приходит Restricted Shell . Используя Restricted Shell, мы можем легко ограничить доступ пользователя к системе Linux. После того, как вы поместите пользователей в ограниченный режим оболочки, им разрешено выполнять только ограниченный набор команд. В этом кратком руководстве мы поговорим о том, как это сделать в Linux. Я тестировал это руководство на минимальном сервере CentOS 7. Однако он будет работать в большинстве Unix-подобных дистрибутивов.

Что такое Restricted Shell?

Во-первых, позвольте мне пояснить, что такое Restricted Shell. Это не отдельная оболочка, такая как Bash, Korn Shell и т. Д. Если вы запустите любую существующую оболочку, используя параметры «rbash», «—restricted», «-r», она станет оболочкой с ограничениями. Например, оболочку Bourne можно запустить как оболочку с ограниченным доступом с помощью команды bsh -r , а оболочку Korn — с помощью команды ksh -r .

  • Это не позволит вам выполнить команду cd . Так что никуда не денешься. Вы можете просто оставаться в текущем рабочем каталоге
  • Это не позволит вам изменять значения переменных окружения $PATH, $SHELL, $BASH_ENV или $ENV environmental variables.
  • Это не позволит вам выполнить программу, содержащую символ / (косая черта). Например, вы не можете запустить команду /usr/bin/uname или ./uname . Однако вы можете выполнить команду uname. Другими словами, вам разрешено запускать команды только по текущему пути
  • Вы не можете перенаправить вывод, используя ‘ > ’, ‘ >| ’, ‘ <> ’, ‘ >& ’, ‘ &> ’, and ‘ >> ’ операторы перенаправления.
  • Это не позволит вам выйти из ограниченного режима оболочки в сценариях.
  • Это не позволит вам отключить ограниченный режим оболочки с помощью ‘set +r’ или ‘set +o restricted’.
Читайте также:  Выбираем линукс для дома

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

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

Сначала создайте символическую ссылку под названием rbash из Bash, как показано ниже. Следующие команды следует запускать от имени пользователя root .

Затем создайте пользователя с именем «infoit» c rbash качестве его / ее оболочки входа по умолчанию.

Установите пароль для нового пользователя.

Создайте каталог bin внутри домашней папки нового пользователя.

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

Здесь я позволю пользователю запускать только команды «ls» , «mkdir» и «ping» . Вы можете назначить любые команды по вашему выбору.

Для этого выполните следующие команды:

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

Затем запретите пользователю изменять .bash_profile .

Отредактируйте файл /home/infoit/.bash_profile :

Измените PATH как показано ниже.

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

Теперь, когда пользователь входит в систему, ограниченная оболочка (rbash) будет запускаться как оболочка входа по умолчанию и читать .bash_profile , который установит PATH в $HOME/bin, чтобы пользователь мог запускать только ls , mkdir и команды ping . Оболочка с ограничениями не позволяет пользователю изменять PATH , а разрешения на .bash_profile не позволяют пользователю изменять среду, чтобы обойти ограничения во время следующего сеанса входа в систему.

Проверка Rbash

Теперь выйдите из системы от имени пользователя root и снова войдите в систему с вновь созданным пользователем, в нашем случае с ostechnix.

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

Для этого я запустил:

Sample output:

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

Читайте также:  Цифровая подпись образа windows

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

Вы также не можете перенаправить вывод с помощью оператора >.

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

Пользователь «infoit» может использовать только команды, назначенные вами (системным администратором, конечно). В нашем случае пользователь может выполнять команды ls, mkdir и ping.

Кроме этих трех команд, пользователь ничего не может выполнять. Он / она полностью под вашим контролем.

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

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

Например, чтобы позволить пользователю (т.е. ostechnix) выполнять команду rm , выполните следующую команду от имени пользователя root .

Теперь пользователь может использовать команду «rm».

Для получения дополнительных сведений см. Справочные страницы по приведенной ниже ссылке.

Источник

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

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

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

Так же как и в виде,берёшь папку и запрещаешь вход прочим.

полную команду можете написать

Сейчас не смогу, глянь в ман chmod.
Ну и опцию -с указать не забудь.

И ещё нужный тебе режим 0750.
Но лучше доступ к домашней папке не запрещать, а запретить доступ к конкретным отдельно взятым папкам.

тут вроде только на изменение , мне надо вообще кроме своей директории не куда не заходил))

я хочу типо сделать VPS

lol true admin’s way

а чё, не круто? консольку чёрную надо с зелёными буковками?

мне надо вообще кроме своей директории не куда не заходил))

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 — это не посикс фс правами запретить доступ.

Хочу быть админом. Что ещё надо запретить?

Читайте также:  Как вытащить файл с карантина защитник windows

чтобы сделать что? чтобы сделать vps? vps подразумевает контейнер с рутовым доступом, соответственно надо как минимум поднять какой-нибуть тип виртуализации, от джейлсов до hvm, и систему их провижена и менеджмента.

ЩИТО? Оно в убунтудебианах может, и так, а в нормальных дистрибутивах пользователи по умолчанию в группе users.

Будь добр, не таись, открой имя этого нормального дистрибутива, а то сколько лет мучаюсь, сколько перевидал, так хочется users-френдли.

Slackware же. Только и в ней придется ограничивать права на доступ к домашним каталогам, поскооьку по умолчанию пользователи могут читать содержимое $HOME других пользователей.

А ограничения по ресурсам уже придумал как делать?

dpkg-reconfigure -plow adduser

З.Ы. впрочем, так было раньше, не знаю, что там в последних версиях дебиан.

И так для каждого пользователя? Рука не отсохнет?

Источник

eCommerce и не только

AddThis Smart Layers

воскресенье, 18 октября 2015 г.

Как ограничить пользователю доступ по SFTP в свою домашнюю директорию

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

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

Прежде всего, я допускаю что OpenSSH уже установлен в системе.

Поэтому сразу же идем в редактирование настроек

Пролистываем до конца файла и дописываем следующие строки

Здесь уместно маленькое, но очень важное примечание.
Во-первых, владельцем всех директорий в пути, которые мы указываем в директиве ChrootDirectory должен быть root. В противном случае пользователь просто не сможет зайти по SFTP.
Во-вторых, эти директории не должны быть доступны для записи для каких-либо других пользователей.

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

Есть несколько вариантов. Здесь рассмотрим два из них.

Первый вариант: меняем владельца директории testuser на root и создаем поддиректорию, например public_html, владельцем которой будет уже наш пользователь testuser.

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

Второй вариант: в конфиграции SSH сервера указываем базовый путь к директории /home, владельцем которой в любом случае является root и она недоступна для записи другими пользователями.

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

Источник

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