[devel] suid/sgid programs and temporary files

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Вт Авг 16 23:31:36 MSD 2005


В /usr/lib/perl5/File/Temp.pm есть функция проверки временного каталога,
в котором будут созданы временные файлы.

   649  # internal routine to check to see if the directory is safe
   650  # First checks to see if the directory is not owned by the
   651  # current user or root. Then checks to see if anyone else
   652  # can write to the directory and if so, checks to see if
   653  # it has the sticky bit set
...
   668  sub _is_safe {
   669
   670    my $path = shift;
   671    my $err_ref = shift;
   672
   673    # Stat path
   674    my @info = stat($path);
   675    unless (scalar(@info)) {
   676      $$err_ref = "stat(path) returned no values";
   677      return 0;
   678    };
   679    return 1 if $^O eq 'VMS';  # owner delete control at file level
   680
   681    # Check to see whether owner is neither superuser (or a system uid) nor me
   682    # Use the real uid from the $< variable
   683    # UID is in [4]
   684    if ($info[4] > File::Temp->top_system_uid() && $info[4] != $<) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   685
   686      Carp::cluck(sprintf "uid=$info[4] topuid=%s \$<=$< path='$path'",
   687                  File::Temp->top_system_uid());
   688
   689      $$err_ref = "Directory owned neither by root nor the current user"
   690        if ref($err_ref);
   691      return 0;
   692    }
...

Условия подчеркнутой проверки можно перевести примерно как
	st.st_uid > 10 && st.st_uid != getuid()

Вопрос: хорошо ли, что здесь используется real uid?  Не лучше ли
проверять effective uid? 
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20050816/e6623e36/attachment-0001.bin>


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