продолжение перевода статьи Linux Fundamentals Part 3 начало...

Модель разрешений в Linux часть-3

Один пользователь, одна группа

В этой секции, мы познакомимся с моделью разрешений и владельцев Linux. Мы уже видели, что каждый файл принадлежит одному пользователю и одной группе. Это является ядром модели разрешений Linux. Вы можете увидеть какому пользователю, и какой группе принадлежмит файл в листинге команды ls -l:

$ ls -l /bin/bash
-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash

В данном случае, файл /bin/bash может исполняться владельцем root в группе wheel. Модель разрешений Linux позволяе задать 3 независимых уровня разрешения для каждого объекта файловой системы – для владельца файла, группы пользователей и всех остальных пользователей.

Понимание "ls -l"

Давайте рассмотрим вывод команды ls -l и исследуем первую колонку вывода:

$ ls -l /bin/bash
-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash

Первое поле -rwxr-xr- является символическим представлением разрешений для доступа к этому файлу. Первый символ - говорит о типе файла, в нашем случае это обыкновенный файл. Возможные значения первого символа:

'd' directory
'l' symbolic link
'c' character special device
'b' block special device
'p' fifo
's' socket

Три триплета

$ ls -l /bin/bash
-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash

Остальное, что содержит файл это три триплета символов. Первый из них представляет разрешения для владельца файла, второй разрешения для группы пользователей и третий для всех остальных пользователей:

"rwx"
"r-x"
"r-x"

Наверху, r означает, что чтение этого файла рарешено (то есть можно посмотреть на данные содержащиеся в этом файле), w означает, что запись в этот файл разрешена (то есть можно изменять и удалять содержимое файла), и x означает что можно запускать этот файл на выполнение (разрешен запуск программы которая записана в это файле). Сложив вместе всю эту информацию, Вы можете увидеть, что все могут просматривать этот файл и запускать его на выполнение, но только владелей, кроме всех перечисленных действий, может еще и изменять его.

Кто Я?

Перед тем как мы начнем рассмотрение того, как осуществлется изменение владельца и группы для файла, давайте сначала узнаем как мы можем узнать под каким именем мы вошли в систему, и к какой группе пользователей мы относимся. Если Вы неиспользовали недавно команду su, Ваше текущее пользовательское id то, под которым вы вошли в систему. Если Вы часто используете команду su, то можете не запомнить Ваше текущее пользовательское id. Для вывода информации о нем, напечатайте whoami:

# whoami
root
# su drobbins
$ whoami
drobbins

В какой Я группе?

Чтобы узнать в какой Вы группе используйте команду groups :

$ groups
drobbins wheel audio

В примере наверху я являюсь членом групп drobbins, wheel, и audio. Если Вы хотите узнать, какой группе принадлежат другие пользователи, укажите имена этих пользователей как аргумент:

$ groups root daemon
root : root bin daemon sys adm disk wheel floppy dialout tape video
daemon : daemon bin adm

Изменение владельца и группы владельцев файла

Для изменения владельца и/или группы владельцев файла или другого объекта файловой системы используйте команды chown или chgrp, соответственно. Каждая из этих команд принимает следующие за ней одно или несколько имен файлов.

# chown root /etc/passwd
# chgrp wheel /etc/passwd

Вы также можно установить владельцев и группы альтернативной формой команды chown:

# chown root:wheel /etc/passwd

Не будучи суперпользователем, Вы не можете использовать команду chown, в то время как команда chgrp может быть использована для изменения любым членом группы для изменения владельца группы.

Рекурсивное изменение владельца

Обе рассмотренные команды и chown и chgrp имеют -R опцию которая может быть использована, для того чтобы изменять владельцев всех подпапок папки указанной как аргумент. Например, команда

# chown -R drobbins /home/drobbins

установит drobbins как влдельца всех документов и папок входящих в/home/drobbins

Введение в chmod

В то время как, chown и chgrp может быть использована для изменения владельца и группы объекта файловой системы, другая команда chmod ипользуется для изменения rwx разрешений которые мы могли наблюдать в выводе команды ls -l. Команд chmod может иметь два или более аргумента: mode (в нашем примере символ ‘+x’), показавает какие разрешения должны быть изменены, следующие имя файла или имена файлов к которым применяются эти изменения:

О $ chmod +x scriptfile.sh

Как Вы могли догодаться, +x говорит chmod сделать это файл исполняемым для всех групп пользователя, пользователя, группы и всех других. Если бы мы хотели удалить этот атрибут, то могли ипользовать такую конструкцию:

$t chmod -x scriptfile.sh

Детализация разрешений user/group/other

Наш пример chmod изменит разрешения для всех трех триплетов – пользователей, группы и всех остальных. Часто вствет необходимость модифицировать только один или два триплета. Для этого нам необходимо детализировать символы определенного триплета подобно тому как мы это плказали символами+ или -, и использовать символы u для триплета «пользователь», g для триплета «группа» и o для триплета «остальные»:

$ chmod go-w scriptfile.sh

Мы удалили разрешение модифицировать файл для группы пользователей и всех остальных, но не для пользователя.

Переустановка разрешений

В добавок к возможности установки одного бита разрешения в выключенное или включенное состояние, мы можем устанавливать два или три бита одновременно. С помощью оператора “=” мы можем сказать команде chmod что хотим установить разрешения именно таким конкретным образом:

$ chmod =rx scriptfile.sh

Верхняя команда устанавливает в состояние on биты read и execute и сбрасывает в off бит write. Если Вы хотите переустановить конкретный Вы должны указать символическое имя для триплета перед оператором = как указано ниже:

$ chmod u=rx scriptfile.sh

перевод статьи Linux Fundamentals Part 3 далее...