темы. Одна из таких возможностей - очистка битов SGID и SUID при
записи в файл - является пассивной в том смысле, что для своего
выполнения не требует никаких действий с вашей стороны, т.е. со
стороны Администратора системы. Другие возможности являются ак-
тивными, т.е. вы можете использовать их или не использовать по
своему усмотрению. К числу таких активных возможностей, описыва-
емых ниже, относится специальное использование sticky-бита в ка-
талогах и использование променов. В настоящем разделе также опи-
сано импортирование файлов из других систем.
Очистка битов SUID/SGID и sticky-бита при записи
Операционная система обеспечивает очистку битов SUID, SGID
и sticky-бита для файлов, в которые производится запись. Очистка
выполняется для того, чтобы предотвратить замещение программы
SUID/SGID или программы, считающейся резидентной в памяти.
В следующем примере дважды демонстрируется очистка бита:
$ id
uid=76(blf) gid=11(guru)
$ ls -l myprogram
-rwsrwsrwt 1 root bin 10240 Jan 11 22:45 myprogram
$ cat sneakyprog > myprogram
$ ls -l myprogram
-rwxrwxrwx 1 root bin 10240 Mar 18 14:18 myprogram
$
$ ls -l anotherprog
-rws------ 1 blf guru 83706 Dec 15 1987 anotherprog
$ strip anotherprog
$ ls -l anotherprog
-rwx------ 1 blf guru 17500 Mar 18 14:19 anotherprog
$
Первый случай демонстрирует, что очистка бита происходит
при записи в файлы, принадлежащие другому пользователю. Второй
случай показывает, что очистка бита делается даже для файлов,
принадлежащих тому же пользователю. Следует иметь в виду, что
очистка происходит при замещении файлов. Подправьте сценарий ус-
тановки, чтобы сбросить соответствующие режимы.
Имея данную возможность, вы можете вводить sticky-бит в
пользовательские программы, не опасаясь, что пользователь может
переключить программы в одном и том же файле. Это тот случай,
.
- 5-49 -
когда дополнительная секретность позволяет вам выполнить функ-
цию, которую система может отслеживать, вместо того, чтобы прос-
то запретить эту возможность.
Биты SUID, SGID и sticky в каталогах не очищаются. Биты
SUID и SGID не имеют смыслового значения для каталогов, а значе-
ние sticky-бита для каталогов требует как раз его постоянства.
Это описывается ниже.
Sticky-бит и каталоги
Еще одно важное усовершенствование касается использования
sticky-бита в каталогах. Каталог с установленным sticky-битом
означает, что удалить файл из этого каталога может только владе-
лец файла или супер-пользователь. Другие пользователи лишаются
права удалять файлы. Установить sticky-бит в каталоге может
только супер-пользователь. Sticky-бит каталога, в отличие от
sticky-бита файла, остается в каталоге до тех пор, пока владелец
каталога или супер-пользователь не удалит каталог явно или не
применит к нему chmod(C) или chmod(S). Заметьте, что владелец
может удалить sticky-бит, но не может его установить.
Вы можете с помощью этой возможности добиться максимальной
секретности, поместив sticky-бит во все общие каталоги. В эти
каталоги может писать любой пользователь, отличный от админист-
ратора. Пользователям надо объяснить, что sticky-бит, вместе с
маской umask, равной 077 (значение, принимаемое по умолчанию),
дают решение многих проблем в менее секретных системах. Вместе
эти две возможности не дают пользователям изменять или замещать
файлы общего каталога. Единственная информация, которую они мо-
гут получить из файла, - это его имя и атрибуты.
В следующем примере демонстрируется эффект данного средства.
$ id
uid=76(blf) gid=11(guru)
$ ls -al /tmp
total 64
drwxrwxrwt 2 bin bin 1088 Mar 18 21:10 .
dr-xr-xr-x 19 bin bin 608 Mar 18 11:50 ..
-rw------- 1 blf guru 19456 Mar 18 21:18 Ex16566
-rw------- 1 blf guru 10240 Mar 18 21:18 Rx16566
-rwxr-xr-x 1 blf guru 19587 Mar 17 19:41 mine
-rw------- 1 blf guru 279 Mar 17 19:41 mytemp
-rw-rw-rw- 1 root sys 35 Mar 16 12:27 openfile
-rw------- 1 root root 32 Mar 10 10:26 protfile
$ rm /tmp/Ex16566
rm: /tmp/Ex16566 not removed. Permission denied
(Файл ... не удален. Разрешение отвергнуто)
$ rm /tmp/protfile
rm: /tmp/protfile not removed. Permission denied
$ cat /tmp/openfile
Ha! Ha!
You can't remove me. (Ха-ха! Вы не можете меня удалить)
$ rm /tmp/openfile
.
- 5-50 -
rm: /tmp/openfile not removed. Permission denied
$ rm -f /tmp/openfile
$ rm /tmp/mine mytemp
$ ls -l /tmp
drwxrwxrwt 2 bin bin 1088 Mar 18 21:19 .
dr-xr-xr-x 19 bin bin 608 Mar 18 11:50 ..
-rw------- 1 blf guru 19456 Mar 18 21:18 Ex16566
-rw------- 1 blf guru 10240 Mar 18 21:18 Rx16566
-rw-rw-rw- 1 root sys 35 Mar 16 12:27 openfile
-rw------- 1 root root 32 Mar 10 10:26 protfile
$ cp /dev/null /tmp/openfile
$ cat /tmp/openfile
$ cp /dev/null /tmp/protfile
cp: cannot create /tmp/protfile (cp не может создать файл)
$ ls -l /tmp
drwxrwxrwt 2 bin bin 1088 Mar 18 21:19 .
dr-xr-xr-x 19 bin bin 608 Mar 18 11:50 ..
-rw------- 1 blf guru 19456 Mar 18 21:18 Ex16566
-rw------- 1 blf guru 10240 Mar 18 21:18 Rx16566
-rw-rw-rw- 1 root sys 0 Mar 18 21:19 openfile
-rw------- 1 root root 32 Mar 10 10:26 protfile
$
Единственные удаленные файлы - это файлы, принадлежащие
пользователю blf, так как удаление проводил именно этот пользо-
ватель. Он не смог удалить никакой другой файл, даже доступный
файл /tmp/openfile. Однако значение режима самого файла позволя-
ло blf разрушить его содержимое; именно поэтому значение umask
необходимо для защиты данных. И наоборот, режим файла
/tmp/protfile вместе со sticky-битом каталога /tmp делает файл
/tmp/protfile недоступным.
Во всех общих каталогах следует установить sticky-бит. Это
относится к следующим каталогам (но не только к ним):
* /tmp
* /usr/tmp
* /usr/spool/uucppublic
Если у вас есть сомнения, гораздо лучше установить
sticky-бит в каталоге, чем оставить его нулевым. Вы можете уста-
новить sticky-бит каталога следующей командой (здесь directory -
имя каталога):
chmod u+t directory
.
- 5-51 -
Промены
Промен - это термин, обозначающий защищенный домен
(Protected Domain), где активизатор программы SUID получает не-
которую защиту из программы. Для программы SUID при ее работе с
частью дерева файлов, выбранной активизатором, обеспечивается
действительность проверки на доступ, как для владельца программы
SUID, так и для активизатора. Подробное описание этой модели с
примерами применения приведено в разделе promain(M) "Справочника
пользователя" (User's Reference). Промены также обсуждаются в
разделах auths(C) и setauths(S).
Промены - это инструмент, предназначенный для исследования
программ SUID4; они не имеют общезначимого смысла. Вы должны
иметь о них представление, чтобы помочь пользователям отлажи-
ваться в их среде.
Импортирование данных
Файлы и файловые системы, перенесенные в систему извне,
представляют угрозу системе при неправильной работе с ними. В
остальной части данного раздела описываются средства, используе-
мые при импортировании файлов в вашу систему.
Файлы
Нельзя принимать на веру разрешения для чужого файла. В
каждой системе не только файлы /etc/passwd и /etc/group отличны
от аналогичных файлов других систем, но и стратегии в разных
системах диктуют установку разных режимов. Эти соображения осо-
бенно важно учитывать, когда импортируемые файлы являются сис-
темными файлами.
Чтобы свести к минимуму свое вмешательство и подчистку пос-
ле импортирования файлов, нужно приучить всех пользователей
системы пользоваться опциями архивных программ, которые не отме-
няют принадлежность файлов. Некоторые версии tar(C) поддерживают
опцию -o, которая не аннулирует принадлежность файла владельцу и
группе. Владельцем файла является импортировавший его пользова-
тель. Программа cpio(C) только меняет владельца файла, если ее
вызывает супер-пользователь. В общем случае архивные программы
сбрасывают режимы файлов, устанавливая их такими, как описано на
архивном носителе. Помимо того, что файл может получить режимы с
большими разрешениями, чем это необходимо, для него могут ока-
заться установленными биты SUID, SGID или sticky. Все эти ситуа-
ции чреваты проблемами с секретностью.
Чтобы свести к минимуму эффект архивных разрешений, исполь-
зуйте те архивные опции, которые только проверяют содержание,
ничего не извлекая. Например, опция -tv функции tar и опция -tv
функции cpio позволяют увидеть режимы файлов на ленте и подгото-
виться к неблагоприятным эффектам при извлечении файлов. При
поступлении незнакомых каталогов сначала следует импортировать
.
- 5-52 -
файлы в иерархию, недоступную прочим пользователям. Затем вруч-
ную перенесите файлы, предварительно подправив имена владельцев
и режимы в соответствии со стратегией вашей системы.
Файловые системы
При монтировании файловых систем, созданных или обрабаты-
вавшихся в другом месте, могут возникнуть те же проблемы, что и
указанные выше для импортирования файлов. Для файловых систем
имеются и две дополнительные проблемы. Первая: файловая система
может быть запорчена. Вторая: разрешения для файла в файловой
системе могут быть неприемлемы для вашей системы.
Файловая система, перенесенная из другого места, может ока-
заться запорченной. Данные могут быть некорректны или предназна-
чаться для другого типа системы. В обоих случаях монтирование
дефектной файловой системы может вызвать в системе фатальный
сбой, дальнейшую порчу данных импортированной файловой системы
или повреждение других файловых систем из-за побочных эффектов.
Именно поэтому команда mount(ADM) зарезервирована для супер-
пользователя. Программу fsck(ADM) следует выполнять во всех фай-
ловых системах до их монтирования. Если файловая система содер-
жит системные данные, следует также выполнить программу System->
Software->Permissions.
Импортированные файловые системы могут содержать файлы с
разрешениями, не соответствующими вашей системе. Может оказать-
ся, что супер-пользователь импортированной файловой системы ус-
тановил имена владельцев, sticky-биты, специальные файлы, биты
SUID/SGID и композиции дерева файлов, несовместимые со стратеги-
ей вашей системы. Специальные файлы могут иметь владельцев и ре-
жимы, которые вы не можете разрешить. Программы с битами SUID,
SGID или sticky, установленными в другом месте, будучи смонтиро-
ваны, так и работают в вашей системе и могут вызвать проблемы с
секретностью.
Вы можете воспользоваться опцией -s команды ncheck(ADM),
чтобы выявить некоторые проблемные файлы до монтирования. Файло-
вые системы, как и файлы, перед монтированием следует просмот-
реть. Когда файловая система впервые монтируется под вашим уп-
равлением, лучше смонтировать ее в личном каталоге, чтобы вы
могли вручную просмотреть файловую систему перед ее монтировани-
ем в надлежащем месте. Проверьте организацию файлов, владельцев
и режимы файлов и ожидаемое использование файловой системы.
.
- 5-53 -
Шифрование данных
Предусмотрена дополнительная защита в виде программного