Запрет чтения файла linux

Команда umask в Linux

Права доступа к файлам и папкам в Linux – это часть стандарта POSIX. В связи с этим нам доступен ряд команд, таких как chmod, chown, chgrp и umask. В этой статье будет рассмотрена команда umask Linux. Эта команда задаёт набор прав, которые будут применены к файлам и директориям при их создании.

Настройки заданные командой будут действовать только для новых файлов. В этой статье будет рассмотрена команда umask Linux, её основные параметры, а также способы применения их на практике.

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

Поскольку команда umask используется для настройки прав по умолчанию, надо сначала разобраться какие есть права. Как было сказано ранее, Linux следует стандартам POSIX, что делает его UNIX-совместимой операционной системой. В общем случае права доступа в UNIX разбиты на три категории:

Каждая категория имеет три вида прав, причём эти права имеют отличия для файлов и каталогов. Для файлов:

Вы можете посмотреть список прав командой для файлов в любом текущем каталоге такой командой:

Вы увидите что-то вроде -rwxrw-r—, где первый символ служит для обозначения папок и символических ссылок, а последующие символы можно разбить на группы по три, для категорий u, g и o соответственно.

С файлами всё понятно, но для каталогов параметры r и x могут вносить некоторую неясность. Если запретить чтение списка файлов (r), то вы не сможете открыть каталог, но при этом можете открыть и изменить файл, если знаете его имя, также доступно создание новых файлов. Если запретить открытие файлов (x), то вы не сможете открыть каталог и прочитать файлы в нём, но при этом с помощью команды ls вы получите список файлов без какой-либо конкретики в виде прав и размера файлов.

По умолчанию новые файлы будут иметь права -rw-rw-r—, где первый прочерк говорит о том, что перед нами файл. Для папок же права будут выглядеть следующим образом: drwxrwxr-x, где d говорит о том, что мы имеем дело с папкой (l будет означать символическую ссылку).

Права могут быть выражены не только в виде последовательности букв, но и в восьмеричном виде, например, для -rw-rw-r— запись будет выглядеть вот так: 0664. Права для файла по умолчанию в Linux в восьмеричном формате записываются как 0666, а для каталога 0777. В этом случае 0 ничего не означает, а каждая цифра означает набор прав для определённой группы. Сначала владелец, потом группа, а потом все остальные. Но благодаря маске в Linux по умолчанию для файла выставляются права 0664, а для директории 0775. Именно на установку этих значений влияет команда umask. Подробнее о правах доступа к файлам можете узнать из нашей статьи.

Читайте также:  Пароль от рута astra linux

Как работает umask

Команда umask задаёт маску прав для новых файлов и каталогов. При создании любого файла операционная система запрашивает маску прав и рассчитывает маску на основе неё. По умолчанию стоит маска 0002, Первая цифра ни на что не влияет и является пережитком синтаксиса языка C. Дальше цифры аналогичны правам доступа в Linux: первая — владелец, вторая — группа и третья — все остальные. Эта маска используется для расчета прав файла. Если не вдаваться в подробности, то рассчитывается всё довольно просто, от максимальных прав отнимается маска и получаются права для файла. Фактически, получается, что маска содержит права, которые не будут установлены для файла. Поэтому права по умолчанию для файла будут 666 — 002 = 664, а для каталога — 777 — 002 = 775.

Каждую цифру маски 002 можно перевести в двоичную систему. Последняя 2 описывает категорию other и в двоичной системе выглядит как 010. Биты читаются слева направо и описывают права rwx. В данном примере 1 означает запрет на запись, а нули разрешают чтение и выполнение. Если будет стоять битовая маска 100, то получится 4 в восьмеричной системе, то это будет означать запрет на чтение.

Важное замечание, что с помощью маски не получится разрешить выполнение файлов. Флаг x с помощью маски можно установить только для каталогов. Поскольку права файла рассчитываются на основе прав 666, в которых выполнение уже отключено rw-rw-rw, то маска тут уже ничего сделать не может. Зато для каталогов всё работает, потому что используются права 777. Для наглядности маску по умолчанию можно представить в виде таблицы:

Источник

Права доступа в системе Linux

Поскольку Linux (да и UNIX вообще) — многопользовательская OS, в ней существует система прав доступа к файлам, служащая для защиты файлов каждого пользователя от влияния других пользователей системы.

  • чтение (read)
  • запись (write)
  • выполнение (execute)

Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов — просматривать перечень имен файлов в каталоге (используя, например, команду ls). Разрешение на запись позволяет пользователю писать в файл, изменять его или удалять. Для каталогов это дает право cоздавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Если на файле стоит атрибут Execute, то независимо от его расширения он считается программой, которую можно запустить. (Вот почему в *nix не принято ставить исполняемым файлам расширения по типу DOS’овских *.com, *.exe, *.bat. Вообще в Unix/Linux нет такого жесткого понятия расширение файла, как в Dos/Windows, и система сама определяет тип файлов независимо от их расширения, но это — уже другая история. ). Так же атрибут выполнения может стоять у shell-скриптов, CGI-скриптов, и у всего, что можно хоть как-то запустить. Разрешение на выполнение применительно к каталогам означает возможность выполнять команды вроде cd.

  • владельцы — у каждого файла в Linux’e есть один владелец.
  • группы — с каждым файлом связана группа пользователей этого файла.
  • остальные пользователи.
Читайте также:  Linux check ntfs partition

Владельцем файла становится юзер, который создал этот файл. Короче говоря, для файла все юзеры делятся на 3 типа: хозяин, или владелец, юзеры, состоящие в одной группе с владельцем, и все остальные юзеры. Для каждого типа — свои права. Учтите, что директории и все системные устройства в UNIX являются обычными файлами. Тот же самый /dev/fd0 — это не сам Floppy disk, а всего лишь файл, связанный с флопповодом. Поэтому, если root запретил юзеру доступ к этому файлу, тот не сможет использовать флопповод (так же обстоят дела с модемами, хардами и т.п.). Владельцем всех системных файлов является root. Он же имеет право забирать файлы у одного юзера и передавать их другому (менять владельца).

Команда chmod

Изменить права доступа к файлу может либо его владелец, либо сам root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.

Символьная форма прав доступа

Если войти в любой каталог, где есть файлы, и набрать ls -l, то появится список всех файлов в этом каталоге и права доступа в символьной форме. Строка прав доступа состоит из 10 символов. Первый символ указывает на тип файла: d — директория, — обычный файл. Три последующих — права доступа владельца к этому файлу. Если первый символ из этих трех — r, владелец имеет право читать этот файл, а если , то не имеет. Следующие 2 символа — w — писать и x — запускать. Если вместо них стоит , значит, владелец этого права не имеет. Еще 3 символа — права доступа группы, еще три — права всех остальных пользователей.

drwxrwxrwx — директория, к которой все имеют любые права доступа.

-rwxr--r-- — обычный файл, владелец может делать все, а остальные — только читать.

-r-------- — обычный файл, который владелец может только читать, а остальные пользователи не видят.

Важно заметить, что права доступа, которые имеет файл, зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет -rwxrwxrwx, другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл. Например, если юзер захочет ограничить доступ ко всем своим файлам, он может просто изменить права доступа своего домашнего каталога /home/user на drwx------. Таким образом, никто другой не будет иметь доступ в его каталог, а следовательно посторонним будут недоступны и все файлы. Так что, пользователь может не заботиться об индивидуальной защите своих файлов. Другими словами, чтобы иметь доступ к файлу, вы должны иметь доступ ко всем каталогам, лежащим на пути от корня к этому файлу, а также разрешение на доступ собственно к этому файлу. Обычно пользователи UNIX весьма открыты всеми своими файлами. По умолчанию файлам устанавливается защита -rw-r--r--, которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа drwxr-xr-x, что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам, но ничего в них не трогать и не записывать.

Читайте также:  Пароль администратора kali linux

Но многие пользователи хотят держать других подальше от своих файлов. Установив права доступа файла -rw-------, вы никому не покажете этот файл и не дадите записать в него. Также хорошо закрывает файлы защита соответствующего каталога drwx------.

С правами доступа в символьной форме chmod работает так:

Кратко, вы выбираете из all (все), user (пользователь), group (группа) или other (другие). Далее указываете, либо вы добавляете права (+), либо лишаете прав (). И наконец, вы указываете один или несколько режимов: read, write или execute.

Числовая форма прав доступа

  • 400 — владелец имеет право на чтение
  • 200 — владелец имеет право на запись
  • 100 — владелец имеет право на выполнение
  • 40 — группа имеет право на чтение
  • 20 — группа имеет право на запись
  • 10 — группа имеет право на выполнение
  • 4 — остальные имеют право на чтение
  • 2 — остальные имеют право на запись
  • 1 — остальные имеют право на выполнение

Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые мы хотим поставить файлу.

Примеры

Символьная форма

Дает всем пользователям право читать файл stuff.

То же самое, что и ранее (a — по умолчанию).

Лишает права на выполнение всех, кроме владельца.

Разрешает владельцу все (read, write и execute).

Запрещает все (read, write и execute) пользователям категории другие (other).

владелец может делать все, а остальные — только читать.

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

владелец может читать и выполнять, остальные — только выполнять.

Классическая команда. Скрипт — это исполняемый файл, и все должны иметь к нему доступ на чтение и выполнение. Только владелец этого файла может его изменять или удалять.

Команда chown

Изменение владельца файла осуществляется командой chown, например:

Для передачи каталога надо вводить:

Команда chgroup

Изменение группы, которой принадлежит файл.

Для передачи каталога надо вводить:

FilePermissionsRu (последним исправлял пользователь ckimes 2017-09-02 05:31:46)

The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details

Источник

Оцените статью
Adblock
detector