Существуют системные обращения, которые создают и удаляют файлы, и только с их помощью можно изменить содержимое каталога. Но принцип прав доступа применим и для них: поле w
Право на удаление файла не зависит от самого файла. Если у вас есть право записи в каталог, вы можете удалять файлы из него, причем даже те, которые защищены от записи. Команда rm
-f
команды rm обеспечивает удаление файлов без запроса.)Поле x
x
" для других пользователей, предполагая, что пользователи будут иметь доступ к любому известному им файлу в каталоге, но не смогут выполнять команду ls
или читать каталог, чтобы узнать, какие файлы в нем находятся. Аналогично каталог с правом доступа r--
можно читать (с помощью ls
), но нельзя работать с его файлами. В некоторых системах используют это свойство, чтобы закрыть каталог /usr/games
в рабочее время.Команда chmod
$ chmod права_доступа имена файлов...
Синтаксис конструкции "права_доступа", к сожалению, громоздкий. Она может определяться двумя способами: с помощью восьмеричных чисел и последовательностью символов. Проще использовать восьмеричные числа, хотя иногда более удобными оказываются символьные обозначения, так как с их помощью можно показать, какие изменения произошли в правах доступа. Лучше, конечно, было бы задать
$ chmod rw-rw-rw- junk
чем вводить
$ chmod 666 junk
но так не получается. Восьмеричное значение режима складывается из значений прав доступа: 4 — для чтения, 2 — для записи и 1 — для выполнения. Три цифры, как и в выводе команды ls
chmod(1)
. Для наших же целей достаточно указать, что "+
" устанавливает право доступа, а "-
" лишает его. Например,$ chmod +x command
позволяет всем выполнять команду, а
$ chmod -w file
лишает всех права записи в файл, включая и владельца файла. Если не принимать во внимание существование суперпользователя, то только владелец файла может изменить права доступа к файлу, независимо от текущих прав доступа. В том случае, когда кто-то еще предоставил вам право записи в файл, система не позволит изменить код прав доступа к файлу:
$ ls -ld /usr/mary
drwxrwxrwx 5 mary 704 Sep 25 10:18 /usr/mary
$ chmod 444 /usr/mary
chmod: can't change /usr/mary
$
Но, если каталог не защищен от записи, пользователи могут удалять файлы, несмотря на отсутствие права доступа к файлу. Если вы хотите быть уверенным в том, что ни вы, ни ваши друзья никогда не удалят файлы из каталога, отмените право на запись для каталога:
$ cd
$ date temp
$ chmod -w .
$ ls -ld .
dr-xr-xr-x 3 you 80 Sep 27 11:48 .
$ rm temp
rm: temp not removed
$ chmod 775 .
$ ls -ld .
drwxrwxr-x 3 you 80 Sep 27 11:48 .
$ rm temp
$
Файл temp
Поэкспериментируйте с командой chmod
2.5 Индексные дескрипторы
Файл имеет несколько атрибутов: имя, содержимое и служебную информацию (права доступа и даты модификации). Служебная информация размещается в индексном дескрипторе вместе с важной системной информацией, такой, как размер файла, место хранения его на диске и т.д.[8]
В индексном дескрипторе хранятся три даты: время последнего изменения файла (записи в него), время последнего использования файла (чтение или выполнение), время последнего изменения самого индексного дескриптора, например изменения прав доступа.