LINUX.ORG.RU

я знаю, как это сделать враппером к su, ещё посмотри в libcgroups, он вроде умеет перекидывать определенные программы в другие цгруппы, но с последним я не работал. Враппер пишится элементарно:

#!/bin/bash
mkdir /sys/fs/cgroups/mycgroup/${USER}
echo $$ > /sys/fs/cgroups/mycgroup/${USER}/tasks
su $@
qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от deterok

да, будучи рутом пользователи могут двигать свои процессы по цгруппам, так что для полноценности нужно selinux правила поднимать, но тут я уже ничем не помогу :(

qnikst ★★★★★
()
Ответ на: комментарий от deterok

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

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

Там же демон есть (cgred) который помещает процессы в группы согласно с правилами, а cgroup можно в инитскрипте создавать. Вот больше документации: https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6-Bet...

Array
()
Последнее исправление: Array (всего исправлений: 1)
Ответ на: комментарий от qnikst

У меня эти утилиты не установлены, так что у себя не протестирую, но там будет что-то вроде:

*:su *  /sugroup

Для всех su запущенный от всех пользователей помещать процесс su (и как следствие, всех детей) в группу sugroup

Array
()
Последнее исправление: Array (всего исправлений: 1)
Ответ на: комментарий от Array

Для всех su запущенный от всех пользователей помещать процесс su (и как следствие, всех детей) в группу sugroup

это не совсем точное утверждение, он будет помещать процесс su и его тех детей, которых процесс su породит после того, как он будет перемещен (для su ещё покатит и то если не сделать su и сразу же новый шел, в этом случае race conduition и как повезет), а с sudo вообще шансы близки к 0. Ну и работать надо с отдельной цгруппой, но это уже просто сделать.

qnikst ★★★★★
()

ТС держи:

1). инициализируем нужную цгруппу:

localhost qnikst # mkdir /sys/fs/cgroup/test #это уж как 
localhost qnikst # mount -n -t cgroup -o none,nodev,noexec,nosuid,name=test test /sys/fs/cgroup/test
2). Пишем простой баш скрипт:
localhost qnikst # cat /usr/local/bin/pam_exec_test.sh 
#!/bin/sh
p=/sys/fs/cgroup/test/${PAM_RUSER}
[ ! -d "${p}" ] && \
        mkdir ${p}
echo $PPID > "${p}"/tasks
3). пишем правило для pam.d (логи опциональны)
session    optional             pam_exec.so   log=/var/log/pam_test_su.log seteuid /usr/local/bin/pam_exec_test.sh

наслаждаемся результатом.

Для полного счаться, как я уже говорил, нужна политика selinux.

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от qnikst

Спасибо, завел. Это то, что надо!

deterok ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.