- Жизнь — это движение! А тестирование — это жизнь 🙂
- 1 комментарий:
- Как ограничить команды пользователя в Linux
- Как ограничить команды пользователя в Linux
- 1. Изменение пользовательского Bash на ограниченный Bash
- 2. Изменение прав доступа к каталогам
- 3. Удалите файл .bashrc пользователя
- 4. Создание безопасных псевдонимов
- 5. Отключение команд оболочки
- 6. Изменение права собственности на .bash_profile
- 7. Удаление разрешения пользователя в .bash_profile
- Заключение
- Похожие записи:
- Запретить пользователю выполнять ряд команд
- Можно ли в Linux запретить выполнение команд обычным пользователям?
Жизнь — это движение! А тестирование — это жизнь 🙂
Один из способов запретить пользователю запускать определенные команды — это убрать бит исполнения для всех, кроме владельца root.
1 комментарий:
$ cp /usr/bin/curl .
$ chmod +x ./curl
$ ./curl -I ya.ru
HTTP/1.1 302 Found
Date: Wed, 18 Jul 2018 16:03:04 GMT
Cache-Control: no-cache,no-store,max-age=0,must-revalidate
Location: https://ya.ru/
Expires: Wed, 18 Jul 2018 16:03:04 GMT
Last-Modified: Wed, 18 Jul 2018 16:03:04 GMT
P3P: policyref=»/w3c/p3p.xml», CP=»NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI»
Set-Cookie: yandexuid=6313425851531929784; Expires=Sat, 15-Jul-2028 16:03:04 GMT; Domain=.ya.ru; Path=/
X-Content-Type-Options: nosniff
Content-Length: 0
$ chmod -x ./curl
$ ./curl -I ya.ru
bash: ./curl: Отказано в доступе
$ /lib64/ld-linux-x86-64.so.2 ./curl -I ya.ru
HTTP/1.1 302 Found
Date: Wed, 18 Jul 2018 16:03:34 GMT
Cache-Control: no-cache,no-store,max-age=0,must-revalidate
Location: https://ya.ru/
Expires: Wed, 18 Jul 2018 16:03:34 GMT
Last-Modified: Wed, 18 Jul 2018 16:03:34 GMT
P3P: policyref=»/w3c/p3p.xml», CP=»NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI»
Set-Cookie: yandexuid=2527280581531929813; Expires=Sat, 15-Jul-2028 16:03:34 GMT; Domain=.ya.ru; Path=/
X-Content-Type-Options: nosniff
Content-Length: 0
$ ls -1al . |grep curl
-rw-r—r— 1 va va 182312 июл 18 19:02 curl
Как ограничить команды пользователя в Linux
Иногда вам может понадобиться ограничить пользовательские команды в Linux. Это обычное требование системных администраторов, чтобы предотвратить выполнение неавторизованными пользователями ключевых команд, которые могут повредить систему. Существует несколько способов ограничить пользовательские команды в Linux. В этой статье мы узнаем, как ограничить команды пользователя в Linux.
Как ограничить команды пользователя в Linux
Ниже описаны шаги по ограничению команд пользователя в Linux. Мы предположили, что каждый пользователь имеет свой собственный каталог /home/[имя пользователя], а его оболочкой по умолчанию является /bin/bash.
1. Изменение пользовательского Bash на ограниченный Bash
Bash позволяет запускать оболочку в ограниченном режиме, который не позволяет пользователям изменять каталоги и вносить другие критические изменения. По умолчанию пользователи входят в неограниченную оболочку bash. Вы можете изменить пользовательский shell на ограниченный bash shell, выполнив следующую команду в терминале.
chsh -s /bin/rbash [имя пользователя]
После выполнения этой команды пользователь с именем [username] сможет работать только в ограниченной оболочке bash, когда войдет в систему.
2. Изменение прав доступа к каталогам
У каждого пользователя есть свой домашний каталог /home/[имя пользователя]. Вы можете изменить права доступа к нему так, чтобы только пользователь (и root) мог редактировать этот каталог, а не другие. Это можно сделать с помощью команды chmod.
chmod 755 /home/[имя пользователя]
3. Удалите файл .bashrc пользователя
Каждый пользователь имеет свой собственный .bash_profile, который выполняется для настройки начальной загрузки командной строки оболочки пользователя. Вы можете удалить его, чтобы пользователи не могли изменять свою оболочку по умолчанию.
rm /home/[имя пользователя]/.bashrc
4. Создание безопасных псевдонимов
Система Linux позволяет создавать псевдонимы для команд, которые действуют как ярлыки. Вы можете использовать эту возможность для отключения команд. Для этого создайте пустой файл .bash_profile.
Вот пример создания псевдонима для команды apt-get, которая используется для загрузки и установки пакетов в системах Ubuntu/Debian. Для этого добавьте следующую строку к приведенной выше строке.
В приведенной выше команде Linux будет просто печатать пустую строку, когда пользователь вызывает команду apt-get, фактически отключая ее. Аналогично, вы можете добавить больше псевдонимов в этот файл для команд, которые вы хотите отключить.
alias aptitude="printf ''" alias vi="vi -Z" alias alias="printf ''"
Последняя команда alias alias отключает даже псевдонимы для пользователя. Но, пожалуйста, добавьте ее в конец, иначе она отключит возможность псевдонимов предыдущих команд.
После завершения работы сохраните и закройте файл. Обратите внимание, что после создания псевдонима для команды, Linux всегда будет использовать псевдоним вместо оригинальной команды, пока вы не удалите его.
Вы можете использовать этот метод для отключения других команд, таких как ls, rm, cp, mv и т.д., если хотите.
5. Отключение команд оболочки
Вы можете отключить команды оболочки в vi, переименовав команду vi в ограниченный режим, как упоминалось выше.
6. Изменение права собственности на .bash_profile
Также вы можете изменить права собственности на .bash_profile так, чтобы только пользователь root мог изменять его. Таким образом, пользователи не смогут изменять свой файл ._bash_profile и выполнять несанкционированные команды.
chown root:root /home/[имя пользователя]/.bash_profile
7. Удаление разрешения пользователя в .bash_profile
Наконец, удалите разрешение пользователя из файла .bash_profile.
chmod 755 /home/[имя пользователя/.bash_profile]
Заключение
В этой статье мы рассмотрели несколько способов ограничения команд пользователя в Linux. Вы можете составить список команд, которые вы не хотите, чтобы ваши пользователи могли выполнять, и отключить их в вашей системе для этих пользователей.
Похожие записи:
Запретить пользователю выполнять ряд команд
Хотел бы ограничить обычных юзеров в выполнении команд, которые им не нужны, (ifconfig,kill,fdisk и тд ) да к ним нужны права sudo, но задача не чтобы не могли изменять, а чтобы не знали что можно поменять, но при этом оставить им возможность создавать/копировать/перемещать их файлы и тп элементарные задачи.
1 вариант: переменную $PATH изменить, но тогда не сложно набрать /sbin/ifconfig
2 вариант: дать права 544 на эти команды, но тогда мне придется сидеть под sudo
Есть ли вариант «человеческий»?
> 2 вариант: дать права 744 на эти команды, но тогда мне придется сидеть под sudo
3 вариант: дать права 754 и добавиться в группу
>kill
А она им точно не нужна?
но задача не чтобы не могли изменять, а чтобы не знали что можно поменять, но при этом оставить им возможность создавать/копировать/перемещать их файлы и тп элементарные задачи.
Если я правильно понял, то либо сделать специальную группу, добавить себя в нее и сделать ее группой-владельцем этих файлов, либо, если это невозможно, отнять у группы и others права на исполнение, а себе их дать отдельно через ACL.
Как раз для этих целей и были придуманны аттрибуты владелец-группа-остальные + отдельные разрешения.
Поменяй группу у нужных файлов на, к примеру, operator, добавь себя в эту группу, а юзеров из этой группы исключи. И убери права на чтение/исполнение для «others» у этих файлов
> 3 вариант: дать права 754 и добавиться в группу
Любой может скопировать этот файл и сделать его исполняемым.
ky-san> Любой может скопировать этот файл и сделать его исполняемым.
Куда, eсли $HOME, /tmp, /var/tmp смонтированны с noexec?
> Куда, eсли $HOME, /tmp, /var/tmp смонтированны с noexec?
Это предложение поиграть в телепата или попытка сказать, что на разделах с опцией монтирования noexec нельзя выставить биты на исполнение?
Намёк был на то, что ни ты, ни я не можем знать, что же у будет у ТС и каким образом.
Как раз для этих целей и были придуманны аттрибуты владелец-группа-остальные + отдельные разрешения.
Он обновится и все прова слетят
.
нет намек был на твой неверный совет. Ты ведь тоже не знаешь что там у ТС, но при этом однозначно заявил, что достаточно скопировать файл и сделать его исполняемым, чтобы обойти ограничение на запуск. Хотя при условии, что ТС собирается ужесточать пользовательское окружение, логично предположить, что будет noexec на ФС доступных для юзеру на запись.
Никто не мешает сделать /lib/ld-linux* /путь/к/бинарнику/без/прав/на/выполнение, если уж на то пошло.
AITap> Никто не мешает сделать /lib/ld-linux* /путь/к/бинарнику/без/прав/на/выполнение, если уж на то пошло.
Я ждал этого. Сделай! И выложи пруф.
[16:18:19][aitap@Tarkus ~]> cp /bin/echo ./echo [17:08:28][aitap@Tarkus ~]> chmod -x ./echo [17:08:32][aitap@Tarkus ~]> ll ./echo -rw-r--r-- 1 aitap aitap 18820 Мар 12 17:08 ./echo [17:08:34][aitap@Tarkus ~]> /lib/ld-linux.so.2 ./echo zzz zzz [17:08:41][aitap@Tarkus ~]>
Или Вы имели в виду то же самое на noexec? Тогда, конечно, не получится:
[17:09:32][aitap@Tarkus ~]> cp /bin/echo /media/WD\ Passport/echo [17:09:58][aitap@Tarkus ~]> /lib/ld-linux.so.2 /media/WD\ Passport/echo zzz /media/WD Passport/echo: error while loading shared libraries: /media/WD Passport/echo: failed to map segment from shared object: Operation not permitted [17:10:04][aitap@Tarkus ~]127> mount | grep WD /dev/sdc1 on /media/WD Passport type vfat (rw,noexec,nosuid,nodev,umask=0) [17:10:16][aitap@Tarkus ~]>
AITap> Или Вы имели в виду то же самое на noexec?
Конечно, я только о noexec и говорил.
Совет дважды верный — при защите от исполнения нужно убирать защиту от копирования (вдруг пользователь владеет spool файлами для e-mail в /var/spool/mail | /var/mail) и на файл на noexec разделе всё можно поставить exec биты — т.е. формально сделать его исполняемым.
А ТС, задавая такие вопросы, про noexec вряд ли знает, так что гадать смысла не вижу
> чтобы обойти ограничение на запуск.
Можно ли в Linux запретить выполнение команд обычным пользователям?
Можно ли в Linux запретить выполнение команд обычным пользователям?
Обычный пользователь может выполнять команды: cp, rm и другие подобные.
Возможно их как-то запретить?
Оценить 12 комментариев
Владимир Муковоз,
Запущена игра (java)!
Устанавливают плагин в нёё и прямо из игры крадут пароли например: cp -r /etc/pure-ftpd/ ./home/igra
Я конечно права на каталоги выставил, но сам факт использования команд прямо из игры меня удручает просто.
Александр Назаров, пароли хранятся в БД, доступ к БД осуществляется по логину и паролю который хранится /etc/pure-ftpd/db/mysql.conf. Копирнуть пароли не возможно без этих данных. Теперь смотри что происходит когда я обычным юзером копирую эту папку.
Александр Назаров, если у тебя как-то по другому, то рекомендую оторвать руки тому кто тебе настраивал. То что мутишь ты называется костыли. При нормальной настройке никто и ничего так просто не уведёт.
Владимир Муковоз, У пользователя нет прямого доступа к серверу, никакого вообще, ни прямого ни по ssh.
Доступ есть только к своему домашнему каталогу в который он может подключаться через FTP клиент с логином и паролем от pure-ftp-mysql. В ftp лежит ядро игры.
А также на сайте есть кнопка запуска этой игры.
Загружая в свой каталог игру, он загружает к ней плагин и уже находясь в самой игре может запускать из своего домашнего каталога что угодно. Он в игровом чате вводит любые команды, как если бы он их вводил в терминале, если бы у него был доступ.
Права на каталоги я выставил, увести /mysql.conf и другие файлы он не может, но вот как быть с его возможностью запускать любые программы.
Например он может беспрепятственно прописать: java -jar primer.jar
Как отрубить ему команды?
Владимир Муковоз, По какому ftp нельзя? При чем тут ftp?
Через ftp пользователь загружает плагин в игру, заходит на сайт, стартует игру, заходит в игру, открывает игровой чат, в него вводит команду, например: touch file.txt в каталоге его домашнем создастся файлик или же может загрузить через фтп что угодно и запустить это из игры, игра из чата отправляет команду в linux.