[devel] suid-root files

Grigory Batalov =?iso-8859-1?q?bga_=CE=C1_altlinux=2Eru?=
Ср Июл 16 16:34:29 MSD 2003


On Wed, 16 Jul 2003 11:51:17 +0400
Stanislav Ievlev <inger на altlinux.org> wrote:

> > А как быть, если программа рассчитывает быть запущенной
> > как SUID-root? В пакете Amanda семь таких программ.
> > Sisyphus_check ругается.

> sisyphus_check ругается не на то что они SUID (кстати обязательно
> проверьте, действительно, ли нужен SUID, можно ли перейти на SGID схему?)

  Без правки исходников не удастся. Впрочем, программы
  при запуске проверяют uid запускавшего и выходят с ошибкой,
  если это не amanda. Так что риск немного снижается.

> а на то что они доступны на чтение другим пользователям.
> Правильные права должны быть 2711 и 4711 соответственно.

  А можно 4710? Вот так будет правильно?

amanda.spec:
---
%install

...

# Control settings
%__mkdir_p %buildroot%_sysconfdir/control.d/facilities
for i in %_libdir/amanda/dumper %_libdir/amanda/planner %_sbindir/amcheck \
         %_libdir/amanda/calcsize %_libdir/amanda/killpgrp \
         %_libdir/amanda/rundump %_libdir/amanda/runtar; do
   PROGNAME=`basename $i`
   %__cat > %buildroot%_sysconfdir/control.d/facilities/$PROGNAME << EOF
#!/bin/sh

. /etc/control.d/functions

BINARY=$i

new_fmode public 4710 root disk
new_fmode restricted 700 root root

control_fmode "\$BINARY" "\$*" || exit 1
EOF
done
%__chmod 0755 %buildroot%_sysconfdir/control.d/facilities/*

...

%pre client
[ $1 -eq 1 ] || /usr/sbin/control-dump calcsize killpgrp rundump runtar

%post client
%post_ldconfig
[ $1 -eq 1 ] || /usr/sbin/control-restore calcsize killpgrp rundump runtar

%pre server
[ $1 -eq 1 ] || /usr/sbin/control-dump dumper planner amcheck

%post server
%post_ldconfig
[ $1 -eq 1 ] || /usr/sbin/control-restore dumper planner amcheck

...

%files server
%attr(4710,root,disk) %_libdir/amanda/dumper
%attr(4710,root,disk) %_libdir/amanda/planner
%attr(4710,root,disk) %_sbindir/amcheck
%config %_sysconfdir/control.d/facilities/dumper
%config %_sysconfdir/control.d/facilities/planner
%config %_sysconfdir/control.d/facilities/amcheck

...

%files client
%attr(4710,root,disk) %_libdir/amanda/calcsize
%attr(4710,root,disk) %_libdir/amanda/killpgrp
%attr(4710,root,disk) %_libdir/amanda/rundump
%attr(4710,root,disk) %_libdir/amanda/runtar
%config %_sysconfdir/control.d/facilities/calcsize
%config %_sysconfdir/control.d/facilities/killpgrp
%config %_sysconfdir/control.d/facilities/rundump
%config %_sysconfdir/control.d/facilities/runtar

...

---
  В итоге получим примерно следующие control-файлы:

#!/bin/sh

. /etc/control.d/functions

BINARY=/usr/sbin/amcheck

new_fmode public 4710 root disk
new_fmode restricted 700 root root

control_fmode "$BINARY" "$*" || exit 1

> Обязательно повесьте эту штуку на control и ещё лучше по умолчанию
> включать restricted режим для control.

  А как это сделать, или оно так и есть по умолчанию?

-- 
Григорий Баталов,
группа техподдержки
ОАО "Ковдорский ГОК"



Подробная информация о списке рассылки Devel