- Как разрешить выполнение команд «su — user» в Linux и одновременно запретить пользователю вход в систему
- Запрет входа в систему для пользователя
- Разрешение использования команды «su — user»
- Шаг 1: Создание дополнительных локальных пользователей
- Шаг 2: Ограничение доступа к файловой системе и оболочке
- Шаг 3: Добавление настроек безопасности
- Шаг 4: Ограничение доступа к команде «passwd»
- Шаг 5: Глобальное ограничение доступа
- Результат
- Как ограничить доступ пользователя в Linux
- Ограничение прав доступа
- Настройки параметров доступа
- Использование других политик
- Пользовательские оболочки и доступ к файлам
- Ограничение доступа к определенным файлам и каталогам
- Ограничьте доступ пользователей к системе Linux с помощью оболочки с ограничениями
- Что такое оболочка с ограничениями
- Новые секции в sshd_config
- Использование PAM
- Дополнительные ограничения
- Как ограничить доступ пользователей с помощью оболочки с ограничениями
- Разрешить пользователям новые команды
- Путь к решению
- Добавление пользователя в локальную группу
- Настройка PAM
- Настройка файла /etc/sudoers
- Добавление пользователю прав на выполнение команд
- Видео:
- Администрирование Линукс (Linux) — Урок 22 — Концепция безопасности SU и SUDO
Как разрешить выполнение команд «su — user» в Linux и одновременно запретить пользователю вход в систему
Система Linux предлагает множество возможностей для настройки безопасности и ограничения доступа пользователей. Одним из таких вопросов является ограничение прав доступа и разрешение использования команды su в особом случае. В данной статье мы рассмотрим, как запретить пользователю полноценно входить в систему, но при этом разрешить ему использовать команду «su — user».
Сначала необходимо дать пользователю возможность входить в систему, но запретить ему доступ к секциям, содержащим информацию о других пользователях. Для этого в файле /etc/pam.d/login нужно изменить строку:
session required pam_unix.so
на следующую:
session required pam_unix.so umask=0022 skel=/etc/skel
Данная настройка позволит пользователю создавать новые записи, но при этом не даст ему доступа к информации о других пользователях.
Для запрета пользователю доступа к системе можно установить специальное окружение, в котором ему будет доступна только команда «su — user». Для этого необходимо применить следующую настройку:
usermod -s /usr/bin/rbash user
Данная команда устанавливает пользователю ограниченное окружение rbash, которое позволяет выполнять только ограниченный набор команд. Теперь пользователь сможет использовать только команду «su — user», все остальные будут недоступны.
Если требуется разрешить дополнительные команды, помимо «su — user», можно создать специальный скрипт, который будет учитывать запреты и разрешения пользователей. Для этого необходимо создать файл /usr/local/bin/zuser.sh со следующим содержимым:
#!/bin/bash
if [ "$USER" == "user" ] && [ "$SUDO_USER" == "root" ]; then
exec /bin/bash
else
echo "Permission denied."
exit 1
fi
chmod +x /usr/local/bin/zuser.sh
Теперь можно позволить пользователям запускать команду «su — user» с помощью sudo, но только эта команда будет разрешена. Для этого добавьте следующую строку в файл sudoers, используя команду «sudo visudo»:
user ALL = (root) NOPASSWD: /bin/su - user
Теперь, пользователи смогут выполнить только эту команду, и все команды, выполненные через нее, будут запускаться от имени пользователя user.
Важно отметить, что данная настройка ограничивает доступ пользователей только к определенному домену безопасности. Если необходимо расширить это ограничение на другие сервисы и команды, нужно изменить соответствующие файлы конфигурации и добавить требуемые ограничения.
Запрет входа в систему для пользователя
Один из вариантов — создать неактивный пользователь без возможности входа в систему с помощью установки недействительного шелла (например, /sbin/nologin или /bin/false) для этого пользователя. Когда пользователь попытаеся войти в систему, он получит сообщение о том, что доступ запрещен.
Другой вариант — использовать настройку suid для команды «su», чтобы пользователь мог войти в систему только с помощью команды «su — user». Для этого необходимо выполнить несколько команд:
1. Откройте файл /etc/pam.d/su в любом текстовом редакторе.
2. Найдите строку, начинающуюся с «auth», она должна выглядеть примерно так:
auth sufficient pam_rootok.so
auth required pam_unix.so
3. После этой строки добавьте следующую строку:
auth required pam_wheel.so use_uid
4. Сохраните файл и закройте редактор.
Теперь только пользователи, состоящие в группе «wheel», смогут использовать команду «su — user» для входа в систему. Для добавления пользователя в группу «wheel» выполните команду:
sudo usermod -aG wheel user
После выполнения данных настроек пользователь сможет войти в систему только через команду «su — user», другие методы входа будут запрещены.
Разрешение использования команды «su — user»
Шаг 1: Создание дополнительных локальных пользователей
Создайте несколько дополнительных локальных пользователей, для которых будет разрешено использование команды «su — user».
Шаг 2: Ограничение доступа к файловой системе и оболочке
Для каждого из созданных пользователей ограничьте доступ к файловой системе, чтобы он мог видеть только свои файлы. Также ограничьте доступ к оболочке, чтобы пользователь не мог выполнять команды через нее.
Шаг 3: Добавление настроек безопасности
Добавьте следующие настройки в файл /etc/pam.d/su:
session required pam_loginuid.so
session required pam_limits.so
session required pam_env.so readenv=1
session required pam_env.so readenv=1 envfile=/etc/default/locale
auth requisite pam_succeed_if.so user = zuser
Шаг 4: Ограничение доступа к команде «passwd»
Отредактируйте файл /etc/pam.d/common-account и добавьте следующую строку:
account required pam_succeed_if.so user ingroup zuser
Шаг 5: Глобальное ограничение доступа
Для более строгого глобального ограничения доступа к команде «su — user» вы можете отключить ее полностью, добавив следующую строку в файл /etc/pam.d/su:
auth required pam_succeed_if.so use_uid user = zuser
Результат
Теперь пользователь сможет выполнить команду «su — user» и войти в систему под другим пользователем, но не сможет выполнять команды с использованием оболочки этого пользователя. В то же время доступ к команде «passwd» будет ограничен только для созданных дополнительных локальных пользователей.
Обратите внимание, что данный набор ограничений наложен только на команду «su — user», и пользователь все еще может выполнять другие команды. Для более строгого разграничения доступа рекомендуется использовать другие методы и инструменты.
Как ограничить доступ пользователя в Linux
В этапе первоначальной конфигурации sssd мы создали файлы конфигурации в каталоге /etc/sssd. Добавляем следующие записи в конфигурационном файле:
Файл | Содержимое файла |
---|---|
common-account | [account_default] |
common-auth | [auth_default] |
common-session | [session_default] |
Обратите внимание, что в файлах конфигурации common-account и common-auth используется доступный вам нашим здесь.
Затем создаем файл /etc/pam.d/sshd-sss, если у вас его еще нет, и добавляем следующие строки:
auth [default=ignore] pam_succeed_if.so user noting group root@localhost
auth required pam_sss.so
Теперь мы создаем файл /etc/pam.d/login-sss, если он еще не существует, и добавляем следующие строки:
auth [default=ignore] pam_succeed_if.so user noting group root@localhost
auth required pam_sss.so
Дополнительно можно настроить ограничения пользователей с помощью модуля pam_limits.so, добавив следующие строки в файлы конфигурации, например /etc/pam.d/sshd-sss и /etc/pam.d/login-sss:
session required pam_limits.so
Теперь, чтобы отключить вход пользователям в систему, но разрешить им использовать «su — user», добавьте пользователя в список /etc/sssd/conf.d/allowed_users.conf:
allowed_users = user1, user2, user3
Где user1, user2, user3 — это пользователи, которым разрешено использовать «su — user».
И наконец, обновите кэш SSSD, чтобы изменения вступили в силу:
sudo systemctl restart sssd
Теперь пользователи, перечисленные в файле allowed_users.conf, смогут использовать «su — user», но не смогут войти в систему. При попытке входа в систему им будет выдано сообщение об ошибке «Вход запрещен».
Важно отметить, что если используются хостовые файлы конфигурации, такие как /etc/pam.d/sshd и /etc/pam.d/login, вы должны также отключить соответствующие модули аутентификации в этих файлах, чтобы пользователи не могли входить в систему.
Ограничение прав доступа
Настройки параметров доступа
Для настройки параметров доступа в Linux можно использовать файлы нашей системы, такие как «common-account», «common-auth», «common-password» и «common-session». Они расположены в директории «/etc/pam.d/» и отвечают за разграничение доступа пользователей на уровне службы аутентификации.
В данном случае важно изменить настройки в файле «common-account». В секции «Account» установите следующую строку:
account required pam_access.so
Далее, создайте файл «/etc/security/access.conf» и добавьте в него следующие значения:
-:zuser:ALL EXCEPT root:sudo
+:zuser:ALL
В этом файле вы указываете, какие пользователи имеют доступ к различным ресурсам системы. В данном случае мы запрещаем всем пользователям, кроме root и пользователей из группы sudo, выполнять команду «su — user».
Использование других политик
Вместо настройки параметров доступа в файле «access.conf», вы также можете использовать другие политики, такие как «selinux» или «apparmor», для разграничения доступа пользователей в Linux.
Настройка этих политик может быть сложной задачей и требовать знания спецификации вашей системы. Поэтому важно учитывать, что значения в файле «access.conf» и политиках SELinux или AppArmor должны быть согласованы для достижения нужного уровня разграничения доступа.
Пользовательские оболочки и доступ к файлам
Если пользователь не может выполнить команду «su — user», но имеет доступ к оболочке, у вас все еще есть возможность ограничить его права доступа к файлам в системе.
Для этого можно использовать различные механизмы, такие как «sudoers» или «chroot». Например, вы можете настроить sudoers таким образом, чтобы позволить пользователю выполнить только определенные команды от имени другого пользователя.
Также можно использовать chroot-окружение для ограничения доступа пользователя к определенным файлам и директориям в системе.
Ограничение прав доступа в Linux может быть достигнуто путем использования различных методов и инструментов, в зависимости от ваших потребностей. Установка правил в файле «access.conf» является одним из наиболее общих методов для разграничения доступа пользователей в системе Linux.
Ограничение доступа к определенным файлам и каталогам
Для ограничения доступа пользователей к определенным файлам и каталогам в Linux существуют несколько дополнительных возможностей. Например, можно использовать механизмы авторизации, такие как PAM (Pluggable Authentication Modules) или SSSD (System Security Services Daemon), чтобы настроить ограничения доступа.
Для примера, попробуем ограничить доступ пользователю к определенным файлам и каталогам на локальном сервере. Для этого мы можем добавить пользователя в ограниченную группу, чтобы он мог входить в систему, но не иметь полного доступа к файлам и каталогам.
Сначала запускаем скрипт для проверки прав доступа к файлам и каталогам. В данном примере используется скрипт, представленный на сайте ostechnix.com:
#!/bin/bash
echo "Тестовый скрипт проверки прав доступа"
echo "Пользователь: $(whoami)"
echo
echo "Попытка чтения файла 'file1'..."
cat "/tmp/file1"
echo
echo "Попытка записи в файл 'file2'..."
echo "test" >> "/tmp/file2"
echo "Все операции выполнены!"
Сохраните скрипт под именем test.sh и добавьте права на выполнение:
chmod +x test.sh
Выберите файлы или каталоги, к которым хотите ограничить доступ. Например, создайте файлы file1 и file2 в каталоге /tmp:
touch /tmp/file1
touch /tmp/file2
Теперь создаем новую группу с именем zuser:
sudo groupadd zuser
Добавляем пользователей, которым нужно ограничить доступ, в эту группу:
sudo usermod -a -G zuser user1
sudo usermod -a -G zuser user2
Далее создаем новый файл /etc/pam.d/restricted-access с настройками ограниченного доступа:
sudo nano /etc/pam.d/restricted-access
Вставьте следующие строки в файл:
# /etc/pam.d/restricted-access
auth required pam_succeed_if.so user ingroup zuser
account required pam_permit.so
Сохраните и закройте файл.
Теперь пользователи user1 и user2 смогут войти в систему с помощью пароля, но их доступ ограничен только к файлам и каталогам, которые находятся в каталоге /tmp:
su - user1
./test.sh
Запустите скрипт test.sh и убедитесь, что пользователь может выполнять только те операции, которые разрешены для его ограниченной группы.
Ограничьте доступ пользователей к системе Linux с помощью оболочки с ограничениями
Чтобы запретить пользователям вход в систему, но разрешить выполнение команды «su — user», можно использовать PAM и настроить ограничения с помощью оболочки. Для этого необходимо отредактировать файлы конфигурации PAM, такие как /etc/pam.d/login
и /etc/pam.d/sshd
.
В файле /etc/pam.d/login
найдите строку, включающую команду «pam_unix.so». После этой строки добавьте следующий фрагмент кода:
session required pam_exec.so /bin/bash /path/to/script.sh
Вместо /bin/bash
укажите путь к оболочке, которую вы хотите использовать для ограничений. Может быть использована любая оболочка, например, /bin/rbash
. Вместо /path/to/script.sh
укажите путь к скрипту или команде, которая будет выполняться после успешного входа пользователя.
В файле /etc/pam.d/sshd
выполните аналогичные изменения как в примере выше, чтобы ограничить доступ пользователей к системным командам через SSH.
После внесения изменений в файлы PAM, перезагрузите систему или перезапустите сервис аутентификации PAM. Теперь, когда пользователь входит в систему, он будет перенаправлен на указанную вами оболочку.
Однако, важно отметить, что пользователи могут быть в состоянии обойти ограничения, если у них есть доступ к административным файлам и командам. Чтобы сделать ограничения более надежными, рекомендуется применить дополнительные уровни безопасности.
Более глобальное решение предполагает создание доменной группы пользователей с ограничениями по умолчанию. Например, вы можете создать группу restricted
, к которой будут принадлежать пользователи, имеющие ограниченные права.
Создайте новую группу с помощью команды groupadd
:
sudo groupadd restricted
Изменяя файлы системы, например, /etc/pamd/login
, вы можете установить ограничения на оболочкой по умолчанию, используя группу restricted
. Следующий пример добавит проверку на наличие пользователя в группе restricted
и перенаправит его на оболочку /bin/rbash
:
account required pam_exec.so /bin/bash /path/to/shell.sh
Вместо /bin/rbash
можно использовать любую другую оболочку с ограниченными возможностями.
Также имейте в виду, что пользователи, которые имеют доступ к административным файлам, могут обойти ограничения, поэтому важно настроить адекватные права доступа к файлам и папкам на вашей Linux-системе.
Итак, ограничение доступа пользователей к системе Linux с помощью оболочки с ограничениями возможно с помощью модуля аутентификации PAM. При помощи PAM и настроек оболочки можно задать ограничения на уровне пользователя. Для более надежной защиты также рекомендуется применять дополнительные уровни безопасности, например, использовать доменные группы с ограничениями по умолчанию и установить соответствующие права доступа к файлам и папкам.
Что такое оболочка с ограничениями
Для создания оболочки с ограничениями в Linux можно использовать различные методы, одним из которых является изменение конфигурационных файлов.
Новые секции в sshd_config
Для настройки оболочки с ограничениями в Linux можно использовать файл конфигурации OpenSSH — sshd_config. Для начала, откройте файл на редактирование:
sudo vi /etc/ssh/sshd_config
Добавьте следующую секцию в файл:
Match User user
ForceCommand /path/to/restricted-shell
Здесь «user» — это имя пользователя, которому требуется ограничить доступ, а «/path/to/restricted-shell» — путь к оболочке с ограничениями. Вы можете выбрать любую оболочку с ограничениями, которая поддерживает ваша система.
После внесения изменений сохраните и закройте файл sshd_config.
Использование PAM
Еще один способ создания оболочки с ограничениями в Linux — использование PAM (Pluggable Authentication Modules). PAM предоставляет гибкую систему аутентификации и авторизации, которую можно использовать для установки ограничений для пользователей.
Для использования PAM для создания оболочки с ограничениями, выполните следующие шаги:
- Создайте новый файл PAM для оболочки с ограничениями:
- В файле restricted-login добавьте следующую строку:
- Сохраните и закройте файл restricted-login.
- Создайте новый файл PAM для входа пользователя:
- В файле login добавьте следующую строку:
- Сохраните и закройте файл login.
sudo vi /etc/pam.d/restricted-login
account required pam_exec.so /path/to/restricted-shell
sudo vi /etc/pam.d/login
account required pam_exec.so /bin/bash
Обратите внимание, что «restricted-shell» — это путь к оболочке с ограничениями, а «/bin/bash» — это путь к обычной оболочке.
Теперь, когда пользователь пытается войти в систему, он будет получать оболочку с ограничениями вместо обычной оболочки.
Дополнительные ограничения
Для дополнительных ограничений при использовании оболочки с ограничениями в Linux можно использовать другие методы и инструменты:
- Настройте права доступа к файлам и директориям, чтобы они были доступны только для определенных пользователей и групп.
- Используйте список разрешенных команд для ограничения доступных пользователю команд.
- Ограничьте возможность исполнения определенных файлов с помощью SELinux или AppArmor.
- Запретите доступ к сети, запретив выполнение команды ping и других команд, связанных с сетевыми службами.
- Создайте глобальное ограничение для всех пользователей системы, используя файлы типа /etc/pam.d/* или /etc/profile.d/*.
Обратите внимание, что ограничение доступа к системе будет зависеть от вашей конкретной ситуации и требований. Пожалуйста, убедитесь в том, что вы тщательно продумали и протестировали конфигурацию оболочки с ограничениями, прежде чем применять ее в продакшн-среде.
Как ограничить доступ пользователей с помощью оболочки с ограничениями
Для ограничения доступа пользователей мы можем использовать механизм ограничений оболочки (shell restrictions), который позволит определить, какие команды и функциональности доступны пользователю в его сеансе. В Linux оболочкой по умолчанию является оболочка Bash, но в данном случае нам может подойти и другая оболочка, например, Zsh.
Для начала создадим новую учетную запись пользователя с ограничениями. Для этого нужно выполнить команду:
sudo useradd -m -s /usr/bin/zsh username
Здесь username — имя пользователя, которому будет ограничен доступ.
Далее нужно задать пользователю пароль:
sudo passwd username
Введите пароль для пользователя.
Для применения ограничений оболочки мы будем использовать файл /etc/pam.d/login. Откройте файл в редакторе:
sudo nano /etc/pam.d/login
В этом файле найдите строку, начинающуюся с session required, и добавьте следующий код в конец строки:
session optional pam_exec.so /path_to_your_script
Здесь path_to_your_script — путь к вашему скрипту ограничений.
Теперь создайте скрипт ограничений:
sudo nano /path_to_your_script
Вставьте следующий код в скрипт:
#!/bin/zsh
if [[ $(/usr/bin/uname -n) = "domain_name" ]]; then
exit 0
else
echo "Доступ запрещен. Пожалуйста, войдите в систему как пользователь username."
exit 1
fi
Здесь domain_name — имя вашего домена, а username — имя пользователя, для которого необходимо ограничить доступ.
Далее нужно сделать скрипт исполняемым:
sudo chmod +x /path_to_your_script
Теперь мы можем отключить глобальное ограничение входа в систему. По умолчанию оболочка заблокирована для пользователей с ограничениями. Чтобы разрешить этот доступ, нужно выполнить следующую команду:
sudo usermod -s /usr/bin/zsh username
Здесь username — имя пользователя, для которого нужно разрешить доступ.
Теперь пользователь может войти в систему с помощью команды «su — user» и выполнить только определенные команды. Ограничения оболочки будут применяться только при непосредственном входе в систему.
Используя различные скрипты ограничений, мы можем настроить разграничение прав доступа для разных пользователей и обеспечить безопасность системы.
Разрешить пользователям новые команды
Путь к решению
Для решения этой задачи нам понадобятся следующие элементы:
- Добавить пользователя в локальную группу
- Настроить PAM (Pluggable Authentication Modules) для разрешения использования команды «su — user»
- Настроить файл /etc/sudoers для определения, кто может использовать команду.
Добавление пользователя в локальную группу
Прежде чем разрешить пользователям использовать команду «su — user», добавим их в локальную группу, которая будет иметь доступ к этой команде. Для этого выполните следующие шаги:
- Создайте группу, если ее еще нет:
sudo groupadd simple_allow_groups
- Добавьте пользователей в созданную группу:
sudo usermod -aG simple_allow_groups user1 sudo usermod -aG simple_allow_groups user2
Настройка PAM
Теперь настроим PAM для разрешения использования команды «su — user» только для пользователей, находящихся в группе simple_allow_groups. Для этого выполните следующие действия:
- Откройте файл редактором:
sudo vim /etc/pam.d/su
- Внесите следующие изменения в файл:
# Добавьте следующую строку после строки "auth sufficient pam_rootok.so": auth sufficient pam_succeed_if.so use_uid user ingroup simple_allow_groups
Настройка файла /etc/sudoers
Теперь настроим файл /etc/sudoers таким образом, чтобы пользователи из группы simple_allow_groups могли использовать команду «su — user». Для этого выполните следующие действия:
- Откройте файл редактором:
sudo visudo
- Добавьте следующую строку в конце файла:
%simple_allow_groups ALL=(ALL) /bin/su - *
На этом настройка завершена. Теперь пользователи, находящиеся в группе simple_allow_groups, смогут запускать команду «su — user», чтобы получить доступ к учетной записи другого пользователя.
Добавление пользователю прав на выполнение команд
Для того чтобы пользователь не мог входить в систему, но имел возможность выполнять команды с использованием команды «su — user», необходимо выполнить следующие шаги:
1. Создайте пользователя, которому вы хотите предоставить такие права. Можно использовать команду «useradd» или «adduser». Например, чтобы создать пользователя с именем «zuser», выполните следующую команду:
sudo useradd zuser
2. Установите пользователю пароль, чтобы он мог войти в систему при необходимости. Для этого можно использовать команду «passwd».
sudo passwd zuser
3. Запустите редактор файла «/etc/pam.d/sshd». Добавьте или отредактируйте строку, которая содержит модуль «pam_exec.so». Такая строка обычно находится в файле «/etc/pam.d/sshd» и начинается с ключевого слова «auth». Например:
sudo nano /etc/pam.d/sshd
4. Добавьте следующий код в файл «/etc/pam.d/sshd»:
auth required pam_exec.so /полный/путь/к/скрипту
5. Создайте скрипт, который будет выполняться при авторизации пользователя на сервере. Например, создайте файл «simple_allow_groups» со следующим содержимым:
#!/bin/bash
allowed_groups=(«group1» «group2»)
user_groups=$(id -Gn $PAM_USER)
for group in ${allowed_groups[@]}
do
if [[ «$user_groups» =~ «$group» ]]
then
exit 0
fi
done
exit 1
6. Добавьте исполняемый флаг для скрипта:
sudo chmod +x /полный/путь/к/скрипту
7. Ограничьте доступ пользователю к командам с помощью оболочки rbash. Для этого установите пользователю оболочку rbash в файле «/etc/passwd». Для пользователя «zuser» добавьте следующую запись:
zuser:x:1001:1001::/home/zuser:/bin/rbash
8. Определите права доступа для пользователя в файле «/etc/sudoers». Добавьте следующую строку после комментариев в файле:
%zuser ALL=(ALL) ALL
9. Перезапустите службу SSH:
sudo service ssh restart
После выполнения этих шагов пользователь «zuser» сможет выполнять команды, но не сможет войти в систему. Он сможет использовать команду «su — zuser» для входа в свою учетную запись на сервере, если будет знать свой пароль.
Обратите внимание, что эти настройки могут быть ограниченными и недоступными для других пользователей системы, поэтому будьте внимательны при их применении. Модифицируйте настройки системы в соответствии с вашей политикой безопасности.
Видео:
Администрирование Линукс (Linux) — Урок 22 — Концепция безопасности SU и SUDO
Администрирование Линукс (Linux) — Урок 22 — Концепция безопасности SU и SUDO by Новая образовательная система 1,848 views 9 months ago 25 minutes