[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