The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Раздел полезных советов: Помещение пользователя в chroot при..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [Проследить за развитием треда]

"Раздел полезных советов: Помещение пользователя в chroot при..."
Сообщение от auto_tips on 16-Авг-04, 21:49 
В качестве шелла пользователю назначается скрипт /bin/chrsh
echo "/bin/chrsh" >> /etc/shells
cat >> /bin/chrsh << EOF
#!/bin/sh
/usr/bin/sudo /usr/bin/chroot /home/$USER /bin/bash
EOF
chsh -s /bin/chrsh логин

URL: http://www.opennet.dev/openforum/vsluhforumID1/46802.html
Обсуждается: http://www.opennet.dev/tips/info/709.shtml

Cообщить модератору | Наверх | ^

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Помещение пользователя в chroot при входе в систему"
Сообщение от ivoronin email on 16-Авг-04, 21:49 
Ужасный способ. Тем более добавление "/bin/chrsh" в /etc/shells, - при доступе к non-chroot environment на этой машине юзер сможет запросто сменить свой шелл.
Как это сделать правильно в *BSD:
Создаём в /etc/login.conf новый класс пользователей,  скажем chrootusers, и назначаем ему shell=/bin/chrsh, которая представляет из себя програмку-враппер которая делает getpwent(), chroot() а потом exec(pw->pw_shell,..). Готово. Никаких скриптов и лазеек.
Думаю в linux можно как-нибудь извернуться через PAM.
Cообщить модератору | Наверх | ^

2. "Помещение пользователя в chroot при входе в систему"
Сообщение от Liago0Sh on 18-Авг-04, 17:33 
В линуксе это чрезвычайно просто проделал через PAM.
http://www.chains.ch/chroot.php
Cообщить модератору | Наверх | ^

7. "Помещение пользователя в chroot при входе в систему"
Сообщение от HFSC on 24-Авг-04, 10:35 

Чрезвычайно просто...каждому юзеру создавать dev и монтировать devpts
Cообщить модератору | Наверх | ^

11. "Помещение пользователя в chroot при входе в систему"
Сообщение от Zmicier email(??) on 07-Сен-04, 16:14 
ссылка битая !
Cообщить модератору | Наверх | ^

3. "Помещение пользователя в chroot при входе в систему"
Сообщение от Дмитрий Ю. Карпов email on 21-Авг-04, 00:29 
И ни слова о том, что надо создать такому юзеру остельное окружение, включающее запускаемые программы (начиная с ls), разделяемые библиотеки, файлы из /etc (например, groups, который используется программой ls) и ещё много чего, я даже не назову всё. Возможно, юзеру понадобятся спецфайлы из /dev ...

А если какая-то из нужных этому юзеру программ использует /proc, то я даже не знаю, что делать - в отличие от вышеупомянутых, её нельзя скопировать (разве что смонтировать на саму себя по NFS).

Cообщить модератору | Наверх | ^

5. "Помещение пользователя в chroot при входе в систему"
Сообщение от Илья Воронин email on 23-Авг-04, 16:35 
> И ни слова о том, что надо создать такому юзеру остельное окружение,
> включающее запускаемые программы (начиная с ls), разделяемые
> библиотеки, файлы из /etc (например, groups, который используется
> программой ls) и ещё много чего, я даже не назову всё. Возможно, юзеру
> понадобятся спецфайлы из /dev ...
Банальности.

> А если какая-то из нужных этому юзеру программ использует /proc, то я
> даже не знаю, что делать - в отличие от вышеупомянутых, её нельзя
> скопировать (разве что смонтировать на саму себя по NFS).
Можно просто ещё раз её смонтировать.

Cообщить модератору | Наверх | ^

6. "Помещение пользователя в chroot при входе в систему"
Сообщение от Friendly GHOST email on 23-Авг-04, 17:08 
Господь с вами любезный государь!  :))) По NFSу... хи-хи :))
Я думаю проще так: для простоты положим что пользователю нужен bash и ls

#начинаем создавать окружение
mkdir -p /home/vasya_pupkin/etc ;
mkdir -p /home/vasya_pupkin/proc ;
#монтируем нужные файловые системы
mount -t proc /proc /home/vasya_pupkin/proc;
mount -o bind /etc /home/vasya_pupkin/etc;
#Проверочка
mount;
#Смотрим используемые библиотеки и копируем их
ldd -d /bin/ls;
mkdir /home/vasya_pupkin/lib;
cp libtermcap.so.2 /home/vasya_pupkin/lib;
cp /lib/libtermcap.so.2 /home/vasya_pupkin/lib;
cp /lib/libc.so.6 /home/vasya_pupkin/lib;
cp /lib/ld-linux.so.2 /home/vasya_pupkin/lib;
ldd -d /bin/bash;
cp /lib/libreadline.so.4.2 /home/vasya_pupkin/lib;
cp /lib/libhistory.so.4.2 /home/vasya_pupkin/lib;
cp /lib/libdl.so.2 /home/vasya_pupkin/lib;
#Копируем необходимое
mkdir /home/vasya_pupkin/bin;
cp /bin/bash /home/vasya_pupkin/bin;
cp /bin/ls /home/vasya_pupkin/bin;
#собственно chroot
chroot /home/vasya_pupkin/;

аналогично обходимся со всем что нужно и все работает без NFS :)))

Cообщить модератору | Наверх | ^

8. "Помещение пользователя в chroot при входе в систему"
Сообщение от HFSC on 24-Авг-04, 10:57 

Чтото длинно и долго...
#!/bin/bash
chroot=$1
progs=${*#$1}
for i in $progs
do
for d in $(ldd $(which $i)|awk '{print $3}')
do
echo mkdir -p $chroot$(dirname $d) && cp $d $chroot$d || echo "failed" && exit 1
done
        done

./chroot.sh /home/vasja perl bash  

Cообщить модератору | Наверх | ^

9. "Помещение пользователя в chroot при входе в систему"
Сообщение от Michael email(??) on 28-Авг-04, 10:59 
это не все. через truss можно вычислить, что перлу, кроме shared objects, которые показывает ldd, не хватает еще горы файлов.
у меня так:
truss /usr/local/bin/perl > perl 2>&1
cat perl | grep open

open("/etc/libmap.conf",0x0,0666)                ERR#2 'No such file or directory'
open("/var/run/ld-elf.so.hints",0x0,00)          = 3 (0x3)
open("/usr/lib/libm.so.2",0x0,027757774564)      = 3 (0x3)
open("/usr/lib/libcrypt.so.2",0x0,027757774564)  = 3 (0x3)
open("/usr/lib/libutil.so.3",0x0,027757774564)   = 3 (0x3)
open("/usr/lib/libc.so.4",0x0,027757774564)      = 3 (0x3)
open("/usr/share/locale/uk_UA.KOI8-U/LC_COLLATE",0x0,0666) = 3 (0x3)
open("/usr/share/locale/uk_UA.KOI8-U/LC_CTYPE",0x0,0666) = 3 (0x3)
open("/usr/share/locale/uk_UA.KOI8-U/LC_MONETARY",0x0,05007724567) = 3 (0x3)
open("/usr/share/locale/uk_UA.KOI8-U/LC_NUMERIC",0x0,05007724567) = 3 (0x3)
open("/usr/share/locale/uk_UA.KOI8-U/LC_TIME",0x0,05007724567) = 3 (0x3)
open("/usr/share/locale/uk_UA.KOI8-U/LC_MESSAGES",0x0,05007724567) = 3 (0x3)
open("/dev/urandom",0x0,01002533205)             = 3 (0x3)

и это, похоже, еще не все. К перлу еще прийдется копировать .PM'ы. Для каждого пользователя.

Не ужели нет более красивого способа?

Cообщить модератору | Наверх | ^

10. "Помещение пользователя в chroot при входе в систему"
Сообщение от HFSC on 29-Авг-04, 13:33 
>это не все. через truss можно вычислить, что перлу, кроме shared objects,
>которые показывает ldd, не хватает еще горы файлов.
>у меня так:
>truss /usr/local/bin/perl > perl 2>&1
>cat perl | grep open
>
>open("/etc/libmap.conf",0x0,0666)            
>    ERR#2 'No such file or directory'
>open("/var/run/ld-elf.so.hints",0x0,00)          = 3
>(0x3)
>open("/usr/lib/libm.so.2",0x0,027757774564)      = 3 (0x3)
>open("/usr/lib/libcrypt.so.2",0x0,027757774564)  = 3 (0x3)
>open("/usr/lib/libutil.so.3",0x0,027757774564)   = 3 (0x3)
>open("/usr/lib/libc.so.4",0x0,027757774564)      = 3 (0x3)
>open("/usr/share/locale/uk_UA.KOI8-U/LC_COLLATE",0x0,0666) = 3 (0x3)
>open("/usr/share/locale/uk_UA.KOI8-U/LC_CTYPE",0x0,0666) = 3 (0x3)
>open("/usr/share/locale/uk_UA.KOI8-U/LC_MONETARY",0x0,05007724567) = 3 (0x3)
>open("/usr/share/locale/uk_UA.KOI8-U/LC_NUMERIC",0x0,05007724567) = 3 (0x3)
>open("/usr/share/locale/uk_UA.KOI8-U/LC_TIME",0x0,05007724567) = 3 (0x3)
>open("/usr/share/locale/uk_UA.KOI8-U/LC_MESSAGES",0x0,05007724567) = 3 (0x3)
>open("/dev/urandom",0x0,01002533205)            
> = 3 (0x3)
>
>и это, похоже, еще не все. К перлу еще прийдется копировать .PM'ы.
>Для каждого пользователя.
>
>Не ужели нет более красивого способа?

perl я от балды поставил...и так ясно что перл нужно весь копировать,со всеми модулями и либами

Cообщить модератору | Наверх | ^

Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру