Права доступа в Linux

Вы знакомы с правами доступа, не так ли? Милая троица «чтение, запись, исполнение», для «владельца, группы и остальных пользователей». Конечно, знакомы!Скажем, у нас есть такой файл:
ls -l foo
-rw-r----1 chris student 1550 2008-08-21 15:05 foo
Мы видим, что пользователь chris может читать и записывать в файл, члены группы student могут только читать его, а у остальных пользователей вообще нет доступа. А как насчет следующего файла?
ls -l foo
-r--rw---1 chris student 1550 2008-08-21 15:05 foo
Если chris является членом группы student, может ли он писать данные в файл? Когда я задаю этот вопрос в классе, мои студенты обычно делятся на три группы: «да», «нет» и «не хочу оконфузиться, дав, возможно, неверный ответ». Верный ответ – нет. Так как chris является владельцем файла, то видит первые три бита прав доступа. Точка. Linux не говорит: «Ага, но chris – член группы student, поэтому он может писать в файл». На практике этот вопрос всплывает редко – вы вряд ли увидите права доступа, в которых ограничения ослабляются слева направо.Следующий вопрос: может ли chris удалить файл (права доступа те же самые)? Раз уж я убедил всех, что chris не может писать в файл, большинство студентов в классе решили, что удалить его он тоже не может. На самом деле это не исключено – в зависимости от наличия прав на запись для каталога, откуда он пытается удалить файл. Именно так: вам не нужны права на запись для файла, чтобы его удалить, нужны только права на запись для каталога.А права на выполнение? Для двоичных скомпилированных файлов, вроде тех, что в каталоге /usr/bin, они означают, что вы можете запустить команду. Права на выполнение и на чтение – разные, и для выполнения файла вам не обязательно мочь его читать. Скрипты, однако, статья особая. Пусть у меня есть скрипт demo. Имея права на чтение, запустить файл я могу несколькими способами. Во-первых, можно явно запустить новую оболочку и передать ей файл скрипта как входной параметр таким образом:
sh demo
Во-вторых, можно выполнить команды скрипта из текущей оболочки, используя команду source таким образом:
source demo 
. demo # . - сокращенный аналог source
В обоих случаях мне нужны только права на чтение (а не исполнение) скрипта. Также можно выполнить скрипт как команду, набрав его имя таким образом:
./demo
В этом случае будет автоматически запущена новая оболочка, в которой выполнится скрипт. Для этого необходимы права на чтение и выполнение, только прав на выполнение недостаточно.Другой вопрос, вызывающий путаницу – это права доступа по отношению к каталогу. Различия между правами на чтение и исполнения для каталога четко определены, но они очень тонкие. Если у меня есть право на чтение для каталога, но нет права на исполнение, я могу просмотреть содержимое каталога, но не смогу перейти в него командой cd. Если у меня есть право на исполнение, но нет права на чтение, переход в каталог командой cd разрешен, но нельзя просмотреть его содержимое, хотя, как это ни удивительно, можно обратиться к файлу по имени. Суть такова: чтобы иметь разумный доступ к каталогу, нужны как права на чтение, так и на исполнение. Только одно из этих прав без второго не имеет смысла, и, насколько я знаю, в Linux нет каталогов с такими правами.
Sticky-бит
Наконец, о значении «sticky-бита». Этот флажок появился в Unix в середине семидесятых. Когда жон установлен, ядро знает: нужно оставить сегмент кода программы в области подкачки после завершения процесса. Это увеличивает скорость последовательных выполнений программы, поскольку единственное, что нужно сделать ядру в таком случае – это переместить программу из области подкачки в память. Благодаря этому часто используемые приложения – например, редакторы – будут загружаться заметно быстрее. Хотя для своего времени эта идея была неплохой, в текущих версиях Unix данный бит для обычных файлов не установлен, а в Linux никогда и не устанавливался. Но он играет важную роль для каталогов, изменяя правила, определяющие, кто может удалять в них файлы. Если бит установлен, это может делать только владелец файла, владелец каталога или суперпользователь.
  • 20 января 2011, 16:11
  • Oden

Комментарии (0) Вконтакте (0) facebook ()

Комментарии (0)

RSS свернуть / развернуть

комментировать

Ваше имя
Ваш e-mail (будет скрыто и используется только для отправки ответов на ваш комментарий)
Вы — гость, и вам запрещено использовать HTML-теги.
 
Введите цифры и буквы: