Try English version of Quizful



Раздаем бесплатные Q! подробности в группе Quizful.Alpha-test
Партнеры
Рекрутерам: Прескрининг кандидатов about
Топ контрибуторов
loading
loading
Знаете ли Вы, что

Вы можете подписаться на RSS ленту новых тестов сервиса Quizful, в том числе и отдельно по каждой категории

Лента обновлений
ссылка 19:35:14
Комментарий от jurfed:
Поправка к ответу: Локальные вложенные классы не могут им...
ссылка 19:27:48
Комментарий от ttt1:
потому что класлоадер не сможет выбрать объект для загрузки...
ссылка 16:12:08
Комментарий от ttt1:
в каком гугле?
ссылка 13:18:19
Комментарий от serj_agaka:
Согласен на счёт "Модули могут добавляться по одному,...
ссылка Jul 25 22:57
Комментарий от jekonda:
В Java такой код работает, вот я и ошибся(
Статистика

Тестов: 152, вопросов: 8545. Пройдено: 373527 / 1808540.

Файлы в Linux и доступ к файлам

head tail Статья
категория
Администрирование
дата17.07.2009
авторoggy
голосов14

[Disclaimer: Данная статья была переведена в рамках "Конкурса на лучший перевод статьи" на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]

Файловая система в Linux устроена так, что пользователь имеет возможность контролировать доступ к файлам. Существует 3 типа доступа:

  • чтение
  • запись
  • выполнение

Каждый файл принадлежит конкретному пользователю или группе. Доступ к файлам контролируется пользователем, группой и что называется "другими". Под "другим" подразумевается тот, кто не является пользователем (владельцем) файла равно как и членом группы к которой принадлежит файл. Когда говорят об использовании настроек доступа для "других" пользователей, обычно имеют в виду настройки глобального исполнения, чтения или записи поделенной с кем-нибудь в системе, позволяющей обеспечить управление если доступ установлен в другой категории.

Имена файлов и символы доступа

Имена файлов могут быть длиной до 256 символов включая "-", "_", и "." символы с буквами и цифрами.

Существует набор из 10 символов (находящийся слева при отображении полного листинга файлов) который показывает тип доступа к файлам. Доступ к файлам выглядит так:

drwerwerwe.

В этом примере 10 символов, как и у всех файлов в Linux. Первый символ указывает на тип файла, следующие 3 символа показывают доступ на чтение, запись и выполнение для каждого из 3-х типов: пользователя, группы и "других". Поскольку есть 3 типа доступа для 3-х пользователей, существует 9 бит доступа. В таблице ниже показан синтаксис:

12345678910
ФайлДоступ пользователяДоступ группыДругой доступ
ТипЧтениеЗаписьИсполнениеЧтениеЗаписьИсполнениечтениеЗаписьИсполнение
drwerwerwe
  • Первый символ - это тип файла: обычный, d - директория, l - ссылка.
  • Символы с 2 по 4 показывают доступ владельца. 2 символ показывает доступ на чтение, 3-й — на запись и 4-й — на исполнение.
  • Символы с 5 по 7 показывают доступ группы. 5-й символ — на чтение, 6-й — на запись, 7-й — на исполнение.
  • Символы с 8 по 10 показывают доступ для всех оставшихся пользователей. 8-й символ — на чтение, 9-й — на запись, 10-й — на исполнение.

Есть 5 возможных символов в полях доступа. Это:

  • r = чтение - Это только в области чтения.
  • w = запись – Это только в области записи.
  • x = выполнение – Это только в области выполнения.
  • s = setuid - Это только в области выполнения.
  • Если находится символ "-" в текущей области, то доступ отсутствует. Это может быть в любой области, будь то область чтения, записи или исполнения.

Примеры

Напишите в консоли «ls -l» и отобразиться список похож на приведенный ниже:

total 10
drwxrwxrwx4georgeteam1122Dec 12 18:02 Projects
-rw-rw-rw-1georgeteam11873Aug 23 08:34 test
-rw-rw-rw-1georgeteam11234Sep 12 11:13 datafile

Что означает следующее:

Тип и поле доступа# ссылкиВладелец файлаГруппа файлаРазмер в байтахДата последней модификацииИмя файла
|||||||
drwxrwxrwx4georgeteam1122Dec 12 18:02 Projects

Эти поля означают:

  1. Поле тип: первый символ в поле обозначает один из приведенных типов:
    • d = директории (directory)
    • l = символьная ссылка (symbolic link)
    • s = сокет (socket)
    • p = именованный канал (named pipe)
    • - = обычный файл (regular file)
    • с = символ (character) (небуферизированный) специальный файл устройства
    • b = блок (block) (буферизированный) специальный файл устройства
  2. Типы доступа описаны выше.
  3. Ссылки: количество директорий включающих ссылку на файл. В примере это 4.
  4. Владелец файла в нашем примере это George.
  5. Группа к которой принадлежит файл. В нашем примере это группа team1.
  6. Размер файла в байтах.
  7. Дата последней модификации. Если файл создан недавно, отображаются дата и время. Если файл создан не в текущем году, то год отображается перед временем.
  8. Имя файла.

Установка Атрибута идентификации пользователя

Биты доступа к файлу включают биты доступа исполнения для владельца файла, группы и других. Когда бит исполнения для владельца установлен в "s" , то набор битов ID пользователя установлен. Это позволяет любой персоне или процессу, которые запускают файл получить доступ к системным ресурсам, как будто они являются владельцем файла. Когда бит исполнения для группы установлен в "s", набор битов ID группы установлен и пользователю запустившему программу дается доступ основанный на разрешении доступа для группы к которой принадлежит файл. Следующие команды демонстрируют это:

chmod +s myfile

установка битов ID пользователя на файл "myfile".

Команда:

chmod g+s myfile

установка битов ID группы на файл "myfile".

Листинг показывает список из 2-х файлов у которых установлен бит ID группы и пользователя.

-rws--x--x   1 root    root    14024 Sep  9 1999 chfn
-rwxr-sr-x 1 root mail 12072 Aug 16 1999 lockfile

Файлы chfn и lockfile находятся в директории "/usr/bin". "s" занимает место в обычном расположении бита исполнения в выше приведенном листинге файлов. Этот специальный режим доступа не имеет смысла пока исполняемый файл могут выполнить группа или "другие". В случает с lockfile это означает, что если бит (глобального исполнения) не установлен с доступом на исполнение, тогда бит ID пользователя будет иметь смысл только если та же группа сможет запустить программу так или иначе. Оба бинарных файла может запустить кто угодно. Первая программа, при запуске исполняется так как будто она запущена от пользователя root. Вторая программа запускается так как если бы пользователь состоял в группе "mail".

В целях безопасности системы не очень хорошая идея устанавливать многим программам бит ID пользователя или группы больше чем необходимо, так как это может позволить неавторизированным пользователям получить доступ к важным зонам системы. Если программа Если в программе есть изъян, который позволяет пользователю выйти за рамки из предполагаемого использования программы, то система может оказаться под угрозой.

Доступ к директориям

Существует 2 специальных бита доступа к директориям. Это:

  • s - установка ID группы
  • t – Атрибут сохранности текста (sticky bit) – Пользователь может удалить или модифицировать только те файлы и директории, владельцем которых он является или имеет права записи для них.

Атрибут сохранности текста

Директория /tmp обычно глобально-доступная и так выглядит ее листинг:

drwxrwxrwt   13 root     root         4096 Apr 15 08:05 tmp

Любой может просмотреть, записать и управлять этой директорией. Символ "t'' показывает, что только пользователь (root, конечно) может удалить созданный файл в этой директории.

Для установки sticky bit в директории нужно сделать следующее:

chmod +t data

Этими опциями стоит пользоваться аккуратно. Возможная альтернатива этого это:

  1. Создание директории в домашней директории пользователя, в которой он может записать временные файлы.
  2. Установить переменную окружения TMPDIR использующую каждым пользовательским скриптом входа.
  3. Программы, использующие функцию tempnam(3) будут искать переменную TMPDIR и использовать ее для записи непосредственно в директорию /tmp.

Установка ID группы для директорий

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

Этот атрибут полезен, когда нескольким пользователям нужен доступ к определенным файлам. Если пользователи работают в директории с установленным атрибутом setgid, то к любым созданные ими файлам в директории будет иметь доступ и их группа. Для примера, администратор может создавать группу названную spcprj и добавлять пользователей Kathy и Mark в это группу. Директории spcprjdir может быть создана с установленным GID битом и Kathy и Mark состоя в разных первичных группах, могут работать с директорией и иметь доступ ко всем файлам в директории, но не иметь доступа к файлам других первичных групп.

Следующая команда устанавливает бит GID на директорию:

chmod g+s spcprjdir

Листинг директории "spcprjdir":

drwxrwsr-x 2 kathy spcprj 1674 Sep 17 1999 spcprjdir

Символ "s'' на месте бита исполнения для доступа группы к всем файлам записанным в директорию "spcprjdir" принадлежащей группе "spcprj".

Примеры

Ниже приведены примеры изменения доступа:

chmod u+x myfile

Дать пользователю права на исполнение файла myfile.

chmod +x myfile

Дать любому пользователю права на исполнение файла myfile.

chmod ugo+x myfile

Та же команда что и раньше, но уточняет пользователя, группу и других

chmod 400 myfile

Дать пользователю права на чтение и удалить все остальные права. Этот доступ приводиться в восьмеричном исчислении, первый символ для пользователя, второй для группы и третий для других. Первый бит (4) это доступ на чтение, средний бит (2) для доступа на запись, и последний бит (1) доступ на исполнение.

chmod 764 myfile

Дать пользователю полный доступ, группе доступ на чтение и запись, и другим доступ на чтение.

chmod 751 myfile

Дать пользователю полный доступ, группе доступ на чтение и исполнение и другим доступ на исполнение.

chmod +s myfile

Установка бита setuid.

chmod go=rx myfile

Удаление доступа на чтение и исполнение для группы и других.

Изменение владельца на файл test1 на Mark.

chown mark test1

Изменение на группу "mark" для файла test1.

chgrp mark test1

Заметка: При отображение файлов в Linux, установлено первоначальное значение размера столбца — 8, как в старых версиях. Это означает, что если имена файлов длиннее 8 то может быть, что они не отобразятся полностью, если использовать старые дистрибутивы Linux. Есть опция которая принадлежит команде ls которая решает эту проблему. Это "-T". Пример: "ls al -T 30" делает длину столбца равной 30.

Настройка Umask

Команда umask используется для установки и определения в системе доступа к файлу по-умолчанию. Это восьмеричные режим дополнения требуемого файла до конкретного типа файла. Доступом по умолчанию есть:

  • 777 – Исполняемые файлы
  • 666 – Текстовые файлы

Эти «дефолтные» значения устанавливают разрешение все пользователям на исполнение исполняемого файла и на запрет исполнения текстового файла. Также все пользователи могут читать файл и записывать в него.

Доступ для создания нового исполняемого файла вычисляется вычитанием значения маски из «дефолтного» значения доступа для созданного типа файла. Пример текстового файла приведен ниже с umask значением 022:

 666 Значение по умолчанию для текстового файла
-022 минус значение umask
-----
644 Разрешенный доступ

Поэтому umask значение является выражением доступа пользователя, группы, и системы не будет в качестве стандартного, что касается чтения, записи, или исполнения файла. Значение umask имеет в виду группу, которой файлы принадлежат, и других пользователей, которым владелец не позволяет записать файл. В этом случае, когда новый текстовый файл создан, но имеет значение режима доступа 644, которое означает, что владелец может чтитатьи записывать файл, но члены группы, которому файл принадлежит, и другие, могу только читать файл. Полный листинг директории с файлом, у которого установлен такой режим доступа, показан ниже:

-rw-r--r-- 1 root workgrp 14233 Apr 24 10:32 textfile.txt

Пример команды установки значения umask:

umask 022

Наиболее распространенное значение umask это 022. Обычно, когда команда umask устанавливается для всех пользователей, это скрипт /etc/profile.

Red Hat Linux имеет ID пользователя и группы, создающих схему, где каждый пользователь принадлежит группе и только этот пользователь принадлежит этой группе. Если вы используете эту схему последовательно, тогда вам нужно устанавливать значение для umask 002.

----------
Оригинальный текст статьи: Linux Files and File Permission

Если Вам понравилась статья, проголосуйте за нее

Голосов: 14  loading...
pasis   oggy   googperson   googman   googler   admin   bioflash   misha91   Ghosting   cobalt1981   werder13   senderos   Vo_iN   berk2030