Лекция №8 - основные свойства объектов, команды chown и chmod

В этой лекции речь пойдет о свойствах объектов, которые позволяют управлять доступ к этим самым объектам. Хочу еще раз напомнить, что Linux - это многопользовательская многозадачная операционная система и вопрос разграничения полномочий один из самых ключевых.У каждого объекта Linux есть владелец. Выполняя команду ls -l можно видеть имя владельца в третьем столбике результатов выполнения команды ls:

igor@adm-ubuntu:~/linux$ ls -l
итого 4
-rw-r–r–        1 igor igor          0 2009-10-12 17:55 atrrib.txt
-rw-r–r–        1 root root          0 2009-10-13 12:26 file.txt
lrwxrwxrwx 1 igor igor        10 2009-10-13 12:27 link1 -> atrrib.txt
drwxr-xr-x   3 igor igor   4096 2009-10-08 17:08 temp

Из результатов выше, видим, что владельцем файла file.txt является пользователь root, а владельцем всех остальных объектов - пользователь igor. Обратите также внимание на первый столбец. В нем указаны права доступа к объекту, а также тип самого объекта. На тип объекта указывает самый первый символ. Если первый символ это знак “тире”, то объект либо регулярный файл, либо “жесткий” линк. Ниже представлены остальные символы обозначающие тип объекта.

d -  директория;
l - символический линк;
b - файл-устройство блочного типа;
c - файл-устройство символьного типа (буферизированное);
u - файл-устройство символьного типа (небуферизированное);
p - именованные каналы (pipe)

Теперь посмотрим на оставшиеся 9 позиций в первом столбце. Эти свойства необходимо рассматривать по три. Таким образом мы имеем первую тройку свойств, вторую и третью. Первая тройка задает права доступа к объекту для владельца объекта. Вторая отображает права доступа для группы владельца файла, а третья тройка для всех остальных пользователей. Порядок символов, описывающих права, в тройках одинаковый - rwx (r - read, w - write, x - execute). Если на месте символа стоит “тире” значит свойство не установлено (выполнять соответствующее действие над объектом нельзя). Рассмотрим следующие заданные права: -rw-r–r– . Первый символ (”тире”), говорит нам о том, что это обычный регулярный файл. Далее идет первая тройка rw- . Установленный бит r говорит, что владелец файла может читать информацию из файла, w - что файл можно изменять, а “тире” вместо х говорит о том, что файл не является исполняемым. Соответственно вторая тройка говорит нам о том, что для группы владельца разрешено только просматривать содержимое файла. Третья тройка устанавливает право просмотра файла для остальных пользователей.

Для каталога эти права (rwx) трактуются немного иначе. Если для каталога установлено свойство w - значит можно создавать объекты внутри каталога. Если установлено свойство r - значит можно узнать, что есть внутри каталога (выполнить команду ls). Если для каталога установлено свойство х - значит можно перейти в этот каталог (сделать его текущим командой cd). На рисунке 1 небольшая памятка в графическом виде.

Права объекта

Рисунок 1

Есть еще три свойства объекта. Это биты setuid, setgid и sticky bit. С этими битами часто у новичков возникает путаница. Тут необходимо немного терпения и практических занятий, чтобы разобраться, что к чему. Практический интерес представляет собой установка бита setuid для исполняемых файлов и установка бита setgid для каталога. Свойство sticky bit имеет смысл только для каталога.

Если бит setuid установлен для исполняемого файла (процесса), то работать этот процесс будет не с правами пользователя, а с правами установленными для процесса. Хорошим примером здесь служит команда passwd и файл passwd. Выполнив команду ls -l /usr/bin/passwd увидим следующий результат:

igor@adm-ubuntu:~/linux/dir$ ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root 41292 2009-07-31 16:55 /usr/bin/passwd

В первой тройке прав видим не rwx, а rws. s - означает, что бит setuid установлен. Теперь выполним команду ls -l /etc/passwd и посмотрим права на текстовый файл passwd

igor@adm-ubuntu:~/linux/dir$ ls -l /etc/passwd
-rw-r–r– 1 root root 1785 2009-10-16 09:01 /etc/passwd

Видим, что право записи в этот файл имеет только пользователь root. Для всех остальных есть право только на чтение. Если бы бит setuid не был бы установлен для программы passwd, то обычный пользователь не смог бы изменить свой пароль, так как программа passwd работала бы с правами пользователя, который ее запустил. Но бит setuid установлен, а это значит, что программа будет работать с правами своего владельца, а не пользователя запустившего программу. Владелец у программы passwd - пользователь root, значит обычный пользователь запустивший программу passwd сможет изменить свой пароль (внести изменения в файл /etc/passwd).

Установленное свойство setgid для каталога означает, что все создаваемые объекты внутри каталога будут в качестве группы владельца принимать группу владельца каталога, а не пользователя создающего объект. Этот бит используется для организации общедоступных каталогов для пользователей.

sticky bit установленный для каталога, разрешает удалять и переименовывать файлы этого каталога только для владельца и пользователя root, даже если право записи будет установлено и для остальных пользователей.

Теперь рассмотрим две команды, которые позволяют изменять владельца объекта и изменять его основные свойства (у объекта есть еще другие свойства, но о них мы будем говорить позже).

Сменить владельца объекта можно с помощью команды chown. Эту команду может выполнить только суперпользователь - root. Синтаксис команды простой: chown newuser:newgroup file. Если команду chown выполнить с ключом -R для каталога, то изменение будет выполнено для всех объектов этого каталога. Остальные возможности команды chown смотрите в man chown.

Для изменения свойств объектов существует команда chmod. Ее синтаксис в упрощенном виде обозначим как chmod выражение file, где выражение состоит из трех компонентов: для кого, действие и свойства. Смотрите на рисунок 2:

Команда chmod

Рисунок 2

Рассмотрим несколько примеров.

chmod  ug+wx file1 - добавляем права записи и выполнения для владельца и группы.

chmod o-rwx file1 - забираем все права (rwx) для остальных пользователей.

chmod a-wx file1 - забираем все права на записи и выполнение для всех пользователей. ugo равно a, то есть можно было бы написать ugo-wx - это равнозначно a-wx.

chmod ug=rw file1 - устанавливаем права. Не добавляем как с +, а именно устанавливаем. То есть если права были –xr-xr–, то после данной команды будет rw-rwr–.

chmod u+s file1 - устанавливаем setuserid-бит.

chmod g+s file1 - устанавливаем setgroupid-бит.

Рекомендую попрактиковаться в установке прав. Особенно биты setuid и setgid и посмотреть какие результаты будут получены при установке тех или иных прав. Для этого проведения экспериментов создайте у себя одного-двух тестовых пользователей. Воспользуйтесь для этого командой adduser.

Есть еще один вариант как задавать права - числовой. Каждый бит имеет свой числовой вес. Бит r - это 4, бит w - это 2, бит x - это 1. Если биты можно суммировать. То есть если вы хотите установить права rw, то это будет 4 плюс 2 равно 6. Смотрим пример.

chmod 644 file1 - установка прав для записи, чтения для владельца и установка прав чтения для группы и остальных пользователей. Цифры задаются так же как и отображаются права по команде ls -l. Первая цифра для владельца, вторая для группы, третья для всех остальных пользователей. Минус этого способа в том, каждый раз необходимо задавать права для всех групп. Таким способом можно задать и дополнительные биты setuid, setgid, sticky bit. Для этого необходимо впереди добавить еще одну цифру: 1 - для sticky bit, 2 - для setgid, 4 - для setuid. Например, chmod 4666 file1 установит помимо прочих прав и бит setuid.

Хочу также обратить внимание, что команда chmod не изменяет права символических линков. Если выполнить команду chmod для символического линка, то будут изменены права файла на который ссылается линк. Попробуйте также изменить права для жестких линков и ответить самостоятельно на вопрос к чему привязаны права - к имени файла или к данным?

Читать другие лекции по курсу Администратор ПК с Linux

Статьи и новости схожей тематики:

Один комментарий

  1. Александр:

    Ошибка?
    один из самых ключевых.У каждого

    Ответить

Оставьте свой отзыв