Запрет доступа пользователю linux

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

Дистрибутив Debian GNU/Linux. Как ограничить пользователю доступ ко всему, кроме выполнения одного файла? Ну, и соответственно, этот пользователь должен мочь проверить, запущен ли этот файл, и если нет, то запустить.

Что бы пользователь мог проверить запущено ли что то ему как минимум нужен доступ к команде ps. что бы он вообще находился в системе ему нужен доступ к шеллу. А что бы это все работало — нужен доступ еще к куче библиотек. так что сначала надо опредлиться с тем к чему именно надо ограничить доступ.

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

так, может, просто микро-интерфейс (на основе http или ssh или telnet или т.п.) на коленке написать, который будет принимать три команды («запустить», «убить», «проверить, работает ли»)?

и обязательно уточните, каким образом пользователь должен иметь возможность общаться с системой: это должен быть интерктивный вход или удалённое подключение по какому-нибудь протоколу (и по какому именно).

3 ответа 3

«искоробочного» средства, насколько мне известно, нет.

если используется аутентификация по ключу, то можно в файле ~/.authorized_keys перед ключом пользователя добавить параметр command=/путь/к/вашему/скрипту (подробности смотрите в man sshd, секция «authorized_keys file format»).

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

#!/bin/sh case "$SSH_ORIGINAL_COMMAND" in start) # здесь код запуска того, что вам нужно ;; stop) # здесь код остановки того, что вам нужно ;; status) # здесь код, проверяющий статус того, что вам нужно, # и выводящий информацию в stdout. эту информацию увидит пользователь ;; *) # неизвестная команда. возвращаем пользователю сообщение об ошибке echo "unknown command" ;; esac 

когда пользователь выполнит команду ssh имя@хост start , то будет выполнен этот ваш скрипт, а строка start будет передана скрипту в переменной окружения SSH_ORIGINAL_COMMAND .

строки start / stop / status использованы лишь для иллюстрации. вы можете использовать что угодно иное.

Читайте также:  Linux несколько терминалов в одном окне

Источник

Способы ограничения возможности входа пользователей в Ubuntu

Основная часть системного администрирования – конфигурирование и управление пользователями и группами. Эта задача включает в себя мониторинг возможностей получения доступа в систему всех ее подразделений.

Данное руководство описывает основные понятия об управлении пользователями и регистрации их авторизации.

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

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

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

Как ограничить доступ с помощью /etc/passwd

Один из способов ограничения возможности входа – это задать регистрационной оболочке учетной записи специальное значение.

Примером этому является пользователь «messagebus» в файле «/etc/passwd»:

less /etc/passwd | grep messagebus
messagebus:x:102:104::/var/run/dbus:/bin/false

последнее значение – это оболочка или команда, которая запускается в случае успешного входа. Сейчас это «/bin/false».

Если войти в учетную запись messagebus как root-пользователь, ничего не произойдет, так как переключиться на этого пользователя не получится:

Попробуйте переключиться на пользователя sshd:

sudo su sshd
This account is currently not available.

Это уведомление появилось потому, что оболочка пользователя sshd помещена в «/usr/sbin/nologin».

less /etc/passwd | grep sshd
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin

Итак, как же ограничить вход пользователей с помощью этих методов?

Нужно использовать инструмент «usermod», изменяющий легитимное значение оболочки фиктивным:

sudo usermod -s /usr/sbin/nologin username

Как ограничить вход с помощью /etc/shadow

Другой подобный способ ограничения доступа – использование файла «/etc/shadow». Данный файл содержит хешированные пароли каждого пользователя системы.

Чтобы просмотреть хешированные пароли, введите:

sudo less /etc/shadow
root:$6$r79Dod3Y$3hi3QklpGEQMxwQGEss4ueNNPkoUrqUe3SwyAacaxl.Lmgq1r9i4mTblV1z6NfKMNXH1Cpnq.4iKhOiQd7Riy1:15953:0:99999:7.
daemon:*:15455:0:99999:7.
bin:*:15455:0:99999:7.
sys:*:15455:0:99999:7.
sync:*:15455:0:99999:7.
games:*:15455:0:99999:7.
man:*:15455:0:99999:7.
. . .

Второе поле (которое начинается с «$6$r79Dod3Y#3…» в первой строке) содержит хешированное значение пароля.

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

Значение пароля можно деактивировать (сделав его, по сути равным значению «*»), установив перед хешированным значением восклицательный знак (!).

Читайте также:  Better performance on linux

Два инструмента могут заблокировать указанную учетную запись.

Команда passwd может быть заблокирована с помощью флага «-l» и разблокирована флагом «-u»:

sudo passwd -l username
sudo less /etc/shadow | grep username
username:!$6$vpNJ3oFe$5GSh2aU2BDcpdjvQeNFzh0zTgyRUl26x4dn77mFE/vaoXwd19m7okX44jO8TWaVqNRL8vUVTAcZVmgUT8dR.4.:15953:0:99999:7.

Как видно, хешированный пароль сохранился, но стал недействительным благодаря символу ! перед ним.

Учетная запись может быть разблокирована при помощи:

Подобные операции можно выполнить при помощи команды «usermod», которая использует флаги «-L» и «-U» для блокировки и разблокировки соответственно.

sudo usermod -L username
sudo usermod -U username

Примечание: данные методы могут заблокировать доступ только учетным записям на основе пароля, пользователи без пароля (к примеру, ssh-ключи) по-прежнему могут войти в систему.Рассмотрите возможность использования других методов блокировки таких учетных записей.

Как ограничить вход с помощью /etc/nologin

В экстренных ситуациях бывает необходимо запретить вход всем аккаунтам, кроме root.

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

В любом случае, это легко сделать, создав файл «/etc/nologin»:

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

Пустой файл просто сбрасывает пользователей обратно в локальную оболочку без объяснения причин.

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

sudo sh -c ‘echo «Planned maintenance. Log in capabilities will be restored at 1545 UTC» > /etc/nologin’

Попробуйте войти в систему с помощью пароля, тогда будет выведено установленное сообщение:

ssh user@host
user@host’s password:
Planned maintenance. Log in capabilities will be restored at 1545 UTC
Connection closed by host

Root-пользователь по-прежнему может войти в систему. Чтобы отменить ограничения входа, просто удалите файл «/etc/nologin»:

Итоги

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

Источник

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

Ограничение прав пользователей в операционной системе – тема сложная, но необходимая. В зависимости от семейства операционной системы существуют разные правила и стандарты. Рассмотрим подробнее, как это происходит в ОС Ubuntu.

Права администратора

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

Читайте также:  Kali linux with virtualbox

Теперь пользователь с именем username1 добавлен в группу sudo и является администратором для операционной системы. Ему доступны настройки ОС, а также доступ к каталогу /dev с вложениями. Большинство привилегий администраторов схоже с возможностями суперпользователя, но они неполные.

Как выставить запрет

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

Вышеуказанная строка означает, что только root имеет право запускать команду ls. Всем остальным в доступе будет отказано.

Разберем другую ситуацию. Есть пользователь с именем username1. Ему необходимо ограничить доступ к команде ls. Для этого создаем группу пользователей usergroup1, в которую перенесём всех кроме username1.

Вторая строка добавляет в группу usergroup1 пользователей username2, username3 и т. д. Ограничим права на запуск команды ls. Её смогут активировать только участники usergroup1.

Теперь неучастник usergroup1 не сможет активировать ls.

Немного о файле /etc/sudoers

Sudoers содержит информацию о пользователях, которые могут использовать утилиту sudo. Чтобы открыть файл, используем специальную утилиту visudo.

Внутри содержится следующая информация:

Содержимое sudoers

Расскажем подробнее о строке:

Задать правила

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

Первая переменная ALL расшифровывает, как применить правило ко всем IP-адресам. Второй и третий ALL – указанный пользователь или группа имеют право исполнять команды в сессии любого пользователя или группы. Четвертая переменная означает, что данный шаблон применяется ко всем командам.

Например, необходимо установить права на запуск утилиты apt get для группы admin.

Alias (псевдонимы)

Для удобства разграничения прав доступа используются алиасы. Они объединяют один или несколько значений в один параметр. Например, присвоим IP-адресу облачного хранилища более удобное имя.

CLOUD – псевдоним, который указывается в параметрах вместо IP-адреса.

При необходимости алиасы используются для объединения пользователей в одну группу.

, где Name – псевдоним, а user1, user2 – имена пользователей. Также утилита Alias доступна и для команд, т. е. объединяем список инструкций в единую группу.

  • name – произвольное наименование для перечня команд;
  • cmd1, cmd2 – перечисление команд через запятую.

Например, объединим обновление пакетов в алиас:

Источник

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