| Summary: | Не отключает вызов chroot, команда выполняется успешно | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | obidinog <obidinog> |
| Component: | priv_wrapper | Assignee: | Evgeny Sinelnikov <sin> |
| Status: | CLOSED NOTABUG | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P5 | CC: | iv, sin |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
|
Description
obidinog@basealt.ru
2024-09-30 15:32:46 MSK
Во-первых, PRIV_WRAPPER нужно явно включать, задавая переменную среды PRIV_WRAPPER=1, иначе он работать отказывается.
Во-вторых, "отключение" вызова chroot не заставляет его падать, а превращает его в nop, то есть сброса привилегий не происходит, функция chroot просто возвращает 0 (успех).
Возьмём пустой каталог:
# find /var/empty/
/var/empty/
Попробуем сделать chroot в него:
# chroot /var/empty echo foo
chroot: failed to run command ‘echo’: No such file or directory
Ну да, там нет команды echo, там нет НИЧЕГО.
# PRIV_WRAPPER_CHROOT_DISABLE=1 PRIV_WRAPPER=1 LD_PRELOAD=/usr/lib64/libpriv_wrapper.so chroot /var/empty echo foo
foo
А так работает!
Или даже так:
# strace -e /chroot chroot /var/empty /bin/true
chroot("/var/empty") = 0
chroot: failed to run command ‘/bin/true’: No such file or directory
+++ exited with 127 +++
Системный вызов chroot выполнился успешно, упали.
# PRIV_WRAPPER_CHROOT_DISABLE=1 PRIV_WRAPPER=1 LD_PRELOAD=/usr/lib64/libpriv_wrapper.so strace -e /chroot chroot /var/empty /bin/true
+++ exited with 0 +++
Системный вызов chroot даже не вызывался, команда успешно отработала в родительском окружении. Как и задумывалось.
|