Alma mater [XL]WOLF <admin@ns0.ru> Спецвыпуск: Хакер, номер #051, стр. 051-008-2 Man1 - пользовательские команды (ls, cd, rm). Man2 – системные вызовы (mkdir(), ioctl()). Man3 – различные функции (printf(), sin(), abs()). Man4 – форматы файлов (в частности файлы в /dev). Man5 – конфигурационные файлы (hosts, syslog.conf). Man6 – игры. Также существуют и man7 и man8 и man9, но о них ты теперь сможешь узнать без труда сам зайдя в каталог /usr/share/man/man8. А если вдруг мне захотелось написать свою собственную программу под *nix? Правила хорошего тона предписывают в этом случае написать мануал к ней и поместить его в нужную папку. Но и это еще не все. Так как мой мануал может занять слишком много места, то я его заархивирую. Именно так и сделано большинство мануалов. Чаще всего для этого используется gzip. Архивирование происходит при помощи очень простой команды: # gzip <имя_файла> То есть если мой мануал будет называться leet_syscall.2, то написав # gzip leet_syscall.2 я получу вместо файла leet_syscall.2, файл leet_syscall.2.gz. И размер файла уже другой. Если вдруг оказалось, что файл архивировать не нужно, то всегда можно сделать обратную операцию # gzip –d leet_syscall.2.gz и получить исходный файл. Также при работе с архивами часто бывает нужно, а иногда просто интересно узнать, что скрывается за личиной архива. В таком разоблачении поможет параметр "-l", то есть: # gzip –l leet_syscall2.gz Кроме gzip’а существует еще масса архиваторов. Рассмотрим наиболее эффективный из них – bzip2. У него совершенно особый алгоритм сжатия, и сжимает он лучше, чем gzip. Я провел следующий опыт: взял ~2 Гб текста (словари) и сжал его сночала rar’ом, потом эти же два Гб - с помощью Tar, потом - bzip2. Несмотря на отсутствие у bzip2 высоких скоростей, в плане степени сжатия он оказался более эффективным, чем RAR. Теперь об использовании bzip2 – и снова к мануалам. Смысл работы с bzip2 такой же, как и с gzip – без параметров; сжимаешь указав только имя файла, а параметр "-d" разожмет архив. Важная особенность: ключ "-f" указывает на то, что при разархивировании необходимо перезаписывать файлы, если они уже существуют. Теперь я знаю, как экономить место на диске, но стоит уделить теперь внимание другому аспекту моей программы и мануала к ней. Архиваторы – это, конечно, хорошо, но ведь я пишу программу только для root’а, так что я не хочу, чтобы обычные пользователи в системе могли узнать об этой программе и о том, как она работает. Но это все я описал в мануале к этой программе. Вот незадача. Но проблему опять же мне поможет решить команда man! Посмотрю-ка я мануал к команде access: # man access В самом верху надпись ACCESS(2). Значит так: это описание системного вызова. Это мне не подходит... Смотрю секцию SEE ALSO и вижу команду chmod(2). В ней что-то есть такое. # man 2 chmod Здесь двойка указывает на то, что мануал берется из секции 2 – опять системный вызов, но делать нечего – кто ищет, тот всегда найдет. Тут уже становится интересней. Доступ к файлу - это то, что мне нужно: запретить доступ к моему мануалу нежелательным пользователям! Но что-то тут совсем уж заумно написано, идем в SEE ALSO и находим команду Chmod, только уже с индексом (1). Прекрасно. Посмотри мануал к ней и пойми, наконец, что это то, что тебе нужно. Оказывается, что доступ к файлу определяется четырехзначным числом x x x x. Первый разряд определяет специальные уровни доступа, о которых расскажу позже. Второй разряд - уровень доступа хозяина файла. Третий разряд - уровень доступа для группы пользователей. Четвертый – для всех остальных. Итак, теперь ты можешь узнать, как именно определяется доступ для них. Используется очень простая и в то же время удачная система. Есть три возможности для файла (директория – это тот же файл, предназначенный для хранения других файлов) – чтение (r), запись (w), исполнение (x). Вроде бы все понятно, но вот "исполнение директории" звучит как-то странно. Так и есть: смысл бита x применительно к директории имеет другой смысл: при наличии бита x можно зайти в директорию и осуществлять в ней поиск файлов. |