
2. Связки ключей
Для хранения различных пользовательских паролей в Ubuntu используются так называемые связки ключей (keyrings). Весь этот механизм служит одной цели — никто, кроме конкретного пользователя, не должен иметь доступа к пользовательским паролям. Связка ключей — это собственно зашифрованный контейнер для хранения паролей, для доступа к которому строго говоря тоже нужен пароль. Кстати, связки ключей не имеют ничего общего с административными правами. Они принадлежат конкретному пользователю и вообще не зависят от прав доступа к системным параметрам.
Вообще система связок ключей достаточно прозрачна и незаметна в использовании.
Каждая связка ключей блокируется паролем, соответственно, только после его ввода можно разблокировать это связку и получить доступ к её содержимому. Однако среди всех связок ключей есть одна по умолчанию, которая разблокируется при входе в систему конкретного пользователя, соответственно, никаких дополнительных паролей вводить для доступа к ней не нужно. Обычно все приложения используют именно связку ключей по умолчанию (которая в Ubuntu называется login), но иногда некоторые пытаются создать свою собственную. В этом случае вам сначала потребуется ввести пароль для новой связки, а потом нужно будет вводить его каждый раз, когда потребуется к ней доступ. Что не очень удобно. Поэтому если у вас какое-то приложение просит пароль для разблокирование связки ключей, то можете обратить внимание на дополнительные параметры в диалоге ввода пароля. Там будет галочка — разблокировать при входе в систему.
Если её установить, то больше вам не потребуется вводить пароль для доступа к этой связки ключей, она так же, как и связка по умолчанию, будет разблокироваться при входе пользователя в систему.
Для управления паролями и связками ключей, а так же ключами шифрования, в Ubuntu существует специальная утилита Пароли и ключи шифрования, доступная из меню Приложения→Стандартные (рисунок 2).
Рисунок 2. Программа управления паролями и ключами шифрования
3. Права доступа
Любой файл и каталог в Linux имеет пользователя-владельца и группу-владельца.
Кроме того, у любого файла и каталога есть три группы прав доступа:
для пользователя-владельца,
для членов группы-владельца,
для всех остальных пользователей системы.
Каждая группа состоит из прав на:
чтение (read),
запись (write),
запуск файла на исполнение (execute).
Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов - просматривать перечень имен файлов в каталоге. Разрешение на запись позволяет пользователю писать в файл, изменять его или удалять. Для каталогов это дает право создавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Если на файле стоит атрибут Execute, то независимо от его расширения он считается программой, которую можно запустить. Для каталогов право на исполнение и право на чтение всегда идут вместе и означают одно и то же.
То есть, изменяя владельцев того или иного файла и различные группы прав доступа к нему, можно гибко управлять доступом к этому файлу. Например, сделав себя владельцем некоего файла и полностью запретив к нему доступ всем, кроме пользователя-владельца, можно скрыть содержимое и запретить изменение этого файла для всех других пользователей. Такая же штука проходит и с каталогами. Можно, например, запретить записывать файлы в каталог, или вообще скрыть его содержимое от посторонних глаз.
Команда chmod
Изменить права доступа к файлу может либо его владелец, либо сам root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.
Символьная форма прав доступа
Если войти в любой каталог, где есть файлы, и набрать ls -l, то появится список всех файлов в этом каталоге и права доступа в символьной форме. Строка прав доступа состоит из 10 символов. Первый символ указывает на тип файла: d - директория, - - это обычный файл. Три последующих - права доступа владельца к этому файлу. Если первый символ из этих трех - r, владелец имеет право читать этот файл, а если -, то не имеет. Следующие 2 символа - w - писать и x - запускать. Если вместо них стоит -, значит, владелец этого права не имеет. Еще 3 символа - права доступа группы, еще три - права всех остальных пользователей.
Например:
drwxrwxrwx - директория, к которой все имеют полный доступ.
Важно заметить, что права доступа, которые имеет файл, зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет -rwxrwxrwx, другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл.
Обычно пользователи UNIX весьма открыты всеми своими файлами. По умолчанию файлам устанавливается защита -rw-r--r--, которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа drwxr-xr-x, что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам, но ничего в них не трогать и не записывать.
С правами доступа в символьной форме chmod работает так:
chmod {a,u,g,o}{+,-}{r,w,x} <filenames>
Т.е., вы выбираете из all (все), user (пользователь), group (группа) или other (другие). По умолчанию считается, что права изменяются для всех (all). Далее указываете, либо вы добавляете права (+), либо лишаете прав (-). И, наконец, вы указываете один или несколько режимов: read, write или execute.
Числовая форма прав доступа
Теперь права доступа в числовой форме. Для некоторых эта форма может показаться более простой. Надо запомнить только следующее:
400 - владелец имеет право на чтение
200 - владелец имеет право на запись
100 - владелец имеет право на выполнение
40 - группа имеет право на чтение
20 - группа имеет право на запись
10 - группа имеет право на выполнение
4 - остальные имеют право на чтение
2 - остальные имеют право на запись
1 - остальные имеют право на выполнение
Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые вы хотите поставить файлу.
Пример:
400+200+100+40+4=744
chmod 744 stuff
владелец может делать все, а остальные - только читать.
Команда chown
Изменение владельца файла осуществляется командой chown, например:
sudo chown <имя нового владельца> <имя файла>
Для передачи каталога надо вводить:
sudo chown -R <имя нового владельца> <имя каталога>
Команда chgroup
Изменение группы, которой принадлежит файл:
sudo chown <название новой группы> <имя файла>
Для передачи каталога надо вводить:
sudo chown -R <название новой группы> <имя каталога>
Конкретному пользователю Ubuntu принадлежит только его домашний каталог и все его содержимое. В системе этот каталог находится по адресу /home/имя_пользователя. Все остальные файлы системы, включая все приложения, системные настройки и т.д., располагающиеся вне /home, принадлежат преимущественно root.
Все системные файлы и каталоги принадлежат root недаром, им всем выставлены права на изменение только для пользователя-владельца, таким образом никто, кроме root, не может вмешаться в работу системы и что-то поменять в системных файлах.
Это конечно очень хорошо для безопасности, но что же делать, если вам нужно изменить какие-нибудь системные файлы?
Есть два пути:
во-первых, большинство необходимых пользователю системных настроек можно изменить, обладая правами администратора, из графических конфигураторов, это самый предпочтительный способ.
во-вторых, можно временно повысить свои права до root и делать вообще всё, что угодно. Делается это с помощью утилиты sudo и её производных.
sudo — это консольная утилита. Она позволяет «прикинуться» суперпользователем при выполнении конкретной команды, таким образом, получив неограниченные права. Например, команда
sudo aptitude update
обновит данные о доступных вам приложениях.
Сама по себе команда
aptitude update
работает, только если её запускает root. Однако, запуская её с помощью sudo, вы выдаёте себя за суперпользователя, им при этом не являясь. Естественно, для использования sudo вы должны обладать правами администратора. При этом при запуске команды через sudo, система спросит у вас ваш пароль, однако в целях безопасности при его вводе вам не будет ничего показываться, ни звёздочек, ни чёрточек, ни птичек, ничего. Если вы являетесь администратором и правильно ввели пароль, то указанная после sudo команда исполнится от имени root.
Через терминал можно сделать всё, что угодно, так что, имея возможность стать суперпользователем, вы можете выполнить все необходимые вам настройки. Однако иногда удобно использовать графические приложения, при этом обладая правами рута. Например, если вам надо скопировать файлы в системные каталоги.
Для запуска графических приложений от имени root откройте диалог запуска GNOME сочетанием клавиш Alt–F2 и введите
gksudo имя_приложения
Например, для запуска файлового менеджера Nautlus надо ввести
gksudo nautilus