Наверняка многим из вас приходили в
голову мысли типа «Как бы сделать так,
чтобы мамочка никогда не узнала про
существование папки "c:\My
Documents\Downloads\Porno from WWW\"?», «Как бы
напрочь лишить младшего братца
возможности стереть "Program Files",
если тому не станет не хватать места
под новую игру?» и всё в таком духе.
Действительно, компьютеры под
управлением MS-DOS, Windows 95 и 98,
находящиеся в общем пользовании,
напоминают проходной двор. Каждый
может тереть всё что хочет, создавать
какие угодно файлы - всё что угодно. И
вы не в силах этому помешать.
Секретные файлы можно зашифровать - но
и шифрованный файл кто-нибудь
запросто может удалить.
С Windows NT и Unix дела обстоят по-другому.
При входе в систему вы обязаны указать
ваше имя и пароль - иначе система вас
не пустит. С вашим именем всегда
связан некоторый набор прав и
запретов, за соблюдением которых
система следит. Так, например,
пользователю «Brother» можно запретить
удаление папки "Program Files", а
дорогой мамочке - просмотр той самой
папки с порнушкой.
Как это всё реализовывается? Давайте
расскажу на примере Windows NT, а затем
только перейду к Unix, на которой,
собственно, работает Webservis.ru - так
будет понятнее.
В NT каждый пользователь в системе
принадлежит к какой-нибудь группе.
Например я имею на своём компьютере
логин «Administrator» и принадлежу к группе
«Admins». Все остальные члены моей семьи,
пользующиеся компьютером,
принадлежат к группе «Users». Они не
имеют прав изменять настройки системы,
удалять и устанавливать принтеры и
делать другие глупости.
Создавая папку или файл (а также
устанавливая принтер в систему),
пользователь становится его
владельцем. Некоторые права
приобретает и та группа, к которой он
принадлежит. Пользователь может
назначитьлюбые разрешения на доступ к
своему файлу или папке: запретить
пользователю «Little Brother» удалять файл,
а пользователю «Mamma» - просматривать
его содержимое.
В Unix всё проще и грубее. Создавая
файл, пользователь автоматически
получает самые широкие права на
делание с этим файлом чего угодно, его
группа - несколько меньшие права, а все
остальные - совсем ничтожные. В Unix есть
только три основных права - читать
файл или просматривать каталог ("Read"),
изменять файл или папку, записывая в
неё что-нибудь, или вообще её удалять
("Write").
Последнее право - право на запуск
файла ("Execute"). Эта вещь довольно
абсурдна для любого пользователя Windows
9x и MacOS. Если в Windows 9x файл имеет
разрешение *.exe, его можно запустить, не
встретив при этом никаких проблем. А
если переименовать tupoyfajl.txt в superprogram.exe
ничего не выйдет. В MacOS система
проверяет файл на его
четырёхбуквенную сигнатуру (расширения
у файлов в MacOS не играют никакой роли -
да они и не используются) - и если файл
не исполнимый, то вы с этим ничего не
сделаете.
В Unix же система может позволить себе
попробовать запустить файл только
тогда, когда это разрешено делать
конкретному пользователю. По
умолчанию всё практически всем
запрещено - в отличие от NT, где всё
наоборот. Конечно, и в NT вы можете
запретить младшему братцу запускать
Quake.exe если тот плохо себя ведёт - но по
умолчанию доступ открыт.
Создавая простенький текст в Unix, вы
получаете следующий стандартный
набор разрешениий для файла ("R"
обозначает "Read", "W" - "Write",
а "X" - "Execute")
А что делать, если вы создали скрипт
на Perl или скрипт с командами Unix - shell
script (аналогичный *.bat для Windows)? Надо
дать системе возможность его
запускать. Также надо дать такое право
членам вашей группы - но при этом
лишить их возможности что-то в этом
скрипте поменять. Делается это таким
набором разрешений.
Вы уже начинаете терять терпение и
спрашивать, на кой ляд вам все эти
тонкости сдались и каким боком это
касается вашего сайта. Ладно уж, мы уже
подошли к самой сути. r - 7; w-2; x-1;
|