Страницы

Поиск по вопросам

суббота, 4 января 2020 г.

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

#linux #доступ


Дистрибутив Debian GNU/Linux.

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


Ответы

Ответ 1



«искоробочного» средства, насколько мне известно, нет. если используется аутентификация по ключу, то можно в файле ~/.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 использованы лишь для иллюстрации. вы можете использовать что угодно иное.

Ответ 2



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

Ответ 3



добавка к ответу alexander barakin (я новое узнал). все ниже изложенное я использовал в своей практике. излагаю кратко, основные моменты. доступ по ssh (файл /etc/ssh/sshd_config): параметр AllowUsers username1, username2 разрешит подключение по ssh только пользователям username1, username2 ограничение полномочий в системе (файл /etc/sudoers. т.е. когда пользователь username1 или username2 уже залогинен в системе по ssh): синтаксис: [пользователь] [хост]=([кем может стать]) [что может сделать] username1 ALL=(root) /usr/bin/scp username2 ALL=(root) /sbin/reboot %users ALL=(root) NOPASSWD:/sbin/poweroff результат: пользователь username1 сможет использовать scp (скопировать файл <имя файла> на комп host2 через ssh используя пароль своей учетной записи на компе host2 в каталог /home/username1. ключ -P это номер порта, используемого ssh на компе host2 (по дефолту номер порта 22). ключ -v чтобы был виден процесс копирования. scp выполняется с повышенными привилегиями). sudo scp -v -P 222 <имя файла> username1@host2:/home/username1 пользователь username2 сможет использовать reboot используя пароль своей учетной записи: sudo reboot пользователи группы users смогут использовать poweroff без ввода паролей: sudo poweroff дальше дело за вами: для кого и что разрешить/запретить/ограничить.

Комментариев нет:

Отправить комментарий