Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Linux как узнать права на файл


Права доступа к файлам в Linux

В операционной системе Linux есть много отличных функций безопасности, но она из самых важных - это система прав доступа к файлам. Linux, как последователь идеологии ядра Linux в отличие от Windows, изначально проектировался как многопользовательская система, поэтому права доступа к файлам в linux продуманы очень хорошо.

И это очень важно, потому что локальный доступ к файлам для всех программ и всех пользователей позволил бы вирусам без проблем уничтожить систему. Но новым пользователям могут показаться очень сложными новые права на файлы в linux, которые очень сильно отличаются от того, что мы привыкли видеть в Windows. В этой статье мы попытаемся разобраться в том как работают права файлов в linux, а также как их изменять и устанавливать.

Содержание статьи:

Основные права доступа к файлам в Linux

Изначально каждый файл имел три параметра доступа. Вот они:

  • Чтение - разрешает получать содержимое файла, но на запись нет. Для каталога позволяет получить список файлов и каталогов, расположенных в нем;
  • Запись - разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталоги;
  • Выполнение - вы не можете выполнить программу, если у нее нет флага выполнения. Этот атрибут устанавливается для всех программ и скриптов, именно с помощью него система может понять, что этот файл нужно запускать как программу.

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

  • Владелец - набор прав для владельца файла, пользователя, который его создал или сейчас установлен его владельцем. Обычно владелец имеет все права, чтение, запись и выполнение.
  • Группа - любая группа пользователей, существующая в системе и привязанная к файлу. Но это может быть только одна группа и обычно это группа владельца, хотя для файла можно назначить и другую группу.
  • Остальные - все пользователи, кроме владельца и пользователей, входящих в группу файла.

Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий.

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

Специальные права доступа к файлам в Linux

Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.

  • SUID - если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
  • SGID - этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
  • Sticky-bit - этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.

Теперь давайте рассмотрим как посмотреть и изменить права на файлы в Linux.

Как посмотреть права доступа к файлам в Linux

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

Чтобы узнать права на файл linux выполните такую команду, в папке где находится этот файл:

ls -l

За права файлов в linux тут отвечают черточки. Первая это тип файла, который рассмотрен в отдельной статье. Дальше же идут группы прав сначала для владельца, для группы и для всех остальных. Всего девять черточек на права и одна на тип.

Рассмотрим подробнее, что значат условные значения флагов прав:

  • --- - нет прав, совсем;
  • --x - разрешено только выполнение файла, как программы но не изменение и не чтение;
  • -w- - разрешена только запись и изменение файла;
  • -wx - разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
  • r-- - права только на чтение;
  • r-x - только чтение и выполнение, без права на запись;
  • rw- - права на чтение и запись, но без выполнения;
  • rwx - все права;
  • --s - установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы;
  • --t - установлен sticky-bit, а значит пользователи не могут удалить этот файл.

В нашем примере, файл test1 имеет типичные разрешения для программ, владелец может все, группа только чтение и выполнение, а все остальные - только выполнение. Для test2 дополнительно установлен флаг SUID и SGID. А для папки test3 установлен Sticky-bit. Файл test4 доступный всем. Теперь вы знаете как посмотреть права на файл linux.

Как изменить права файла в Linux

Чтобы изменить права на файл в linux вы можете использовать утилиту chmod. Она позволяет менять все флаги, включая специальные. Рассмотрим ее синтаксис:

$ chmod опции категориядействиефлаг файл

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

Категория указывает для какой группы пользователей нужно применять права, как вы помните доступно только три категории:

  • u - владелец файла;
  • g - группа файла;
  • o - другие пользователи.

Действие может быть одно из двух, либо добавить - знак "+", либо убрать - знак - "-". Что касается самих прав доступа, то они аналогичны выводу утилиты ls: r - чтение, w - запись, x - выполнение, s - suid/sgid, в зависимости от категории, для которой вы его устанавливаете, t - устанавливает sticky-bit. Например, всем пользователям полный доступ к файлу test5:

chmod ugo+rwx test5

Или заберем все права у группы и остальных пользователей:

chmod go-rwx test5

Дадим группе право на чтение и выполнение:

chmod g+rx test5

Остальным пользователям только чтение:

chmod o+r test5

Для файла test6 установим SUID:

chmod u+s test6

А для test7 - SGID:

chmod g+s test7

Посмотрим что получилось:

ls -l

Как видите, изменить права на файл в Linux очень просто. К тому же вы можете изменить основные права с помощью файлового менеджера.

Выводы

Вот и все, теперь вы знаете не только что такое права доступа к файлам в Linux, но и как их посмотреть, и даже как их изменить. Это очень важная тема, в которой действительно стоит разобраться новичкам, чтобы использовать свою систему более полноценно. Если у вас остались вопросы, спрашивайте в комментариях!

На завершение хочу предложить неплохое видео про права доступа в Linux:

Права в Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask) / Хабр

Всем привет. Это перевод статьи из книги RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 and EX300.

От себя: Надеюсь статья будет полезна не только начинающим, но и поможет более опытным администраторам упорядочить свои знания.

Итак, поехали.



Чтобы получить доступ к файлам в Linux, используются разрешения. Эти разрешения назначаются трем объектам: файлу, группе и другому объекту (то есть всем остальным). В этой статье вы узнаете, как применять разрешения.

Статья начинается с обзора основных понятий, после чего обсуждаются специальные разрешения (Special permissions) и списки контроля доступа (ACL). В конце этой статьи рассматривается настройка прав доступа по умолчанию через umask, а также управление расширенными атрибутами пользователя.

Управление владением файлами


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

Отображение владельца файла или каталога


В Linux у каждого файла и каждого каталога есть два владельца: пользователь и группа.

Эти владельцы устанавливаются при создании файла или каталога. Пользователь, который создаёт файл становится владельцем этого файла, а первичная группа, в которую входит этот же пользователь, так же становится владельцем этого файла. Чтобы определить, есть ли у вас как у пользователя права доступа к файлу или каталогу, оболочка проверяет владение ими.

Это происходит в следующем порядке:

  1. Оболочка проверяет, являетесь ли вы владельцем файла, к которому вы хотите получить доступ. Если вы являетесь этим владельцем, вы получаете разрешения и оболочка прекращает проверку.
  2. Если вы не являетесь владельцем файла, оболочка проверит, являетесь ли вы участником группы, у которой есть разрешения на этот файл. Если вы являетесь участником этой группы, вы получаете доступ к файлу с разрешениями, которые для группы установлены, и оболочка прекратит проверку.
  3. Если вы не являетесь ни пользователем, ни владельцем группы, вы получаете права других пользователей (Other).

Чтобы увидеть текущие назначения владельца, вы можете использовать команду ls -l. Эта команда показывает пользователя и группу-владельца. Ниже вы можете увидеть настройки владельца для каталогов в каталоге /home.
[root@server1 home]# ls -l total 8 drwx------. 3 bob bob 74 Feb 6 10:13 bob drwx------. 3 caroline caroline 74 Feb 6 10:13 caroline drwx------. 3 fozia fozia 74 Feb 6 10:13 fozia drwx------. 3 lara lara 74 Feb 6 10:13 lara drwx------. 5 lisa lisa 4096 Feb 6 10:12 lisa drwx------. 14 user user 4096 Feb 5 10:35 user 

С помощью команды ls вы можете отобразить владельца файлов в данном каталоге. Иногда может оказаться полезным получить список всех файлов в системе, в которых в качестве владельца указан данный пользователь или группа. Для этого вы можете использовать find. Аргумент find -user может быть использован для этой цели. Например, следующая команда показывает все файлы, у которых в качестве владельца указан пользователь linda:
find / -user linda

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

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

find / -group users

Изменение владельца


Чтобы применить соответствующие разрешения, первое, что нужно учитывать, это владение. Для этого есть команда chown. Синтаксис этой команды несложен для понимания:
chown кто что

Например, следующая команда меняет владельца каталога /home/account на пользователя linda:
chown linda /home/account

Команда chown имеет несколько опций, одна из которых особенно полезна: -R. Вы можете догадаться, что она делает, потому что эта опция доступна и для многих других команд. Это позволяет вам рекурсивно устанавливать владельца, что позволяет вам установить владельца текущего каталога и всего, что находится ниже. Следующая команда меняет владельца для каталога /home и всего, что находится под ним, на пользователя lisa:

Сейчас владельцы выглядят так:

[root@localhost ~]# ls -l /home total 0 drwx------. 2 account account 62 Sep 25 21:41 account drwx------. 2 lisa lisa 62 Sep 25 21:42 lisa 

Выполним:
[root@localhost ~]# chown -R lisa /home/account [root@localhost ~]# 

Теперь пользователь lisa стал владельцем каталога account:
[root@localhost ~]# ls -l /home total 0 drwx------. 2 lisa account 62 Sep 25 21:41 account drwx------. 2 lisa lisa 62 Sep 25 21:42 lisa 

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


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

Следующая команда изменяет какого-либо владельца группы /home/account на группу account:

chown .account /home/account 

Вы можете использовать chown для изменения владельца пользователя и/или группы несколькими способами. Вот несколько примеров:
  • chown lisa myfile1 устанавливает пользователя lisa владельцем файла myfile1.
  • chown lisa.sales myfile устанавливает пользователя lisa владельцем файла myfile, а так же устанавливает группу sales владельцем этого же файла.
  • chown lisa:sales myfile то же самое, что и предыдущая команда.
  • chown .sales myfile устанавливает группу sales владельцем файла myfile без изменения владельца пользователя.
  • chown :sales myfile то же самое, что и предыдущая команда.

Вы можете использовать команду chgrp, чтобы изменить владельца группы. Рассмотрим следующий пример, где вы можете с помощью chgrp установить владельцем каталога account группу sales:
chgrp .sales /home/account

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

Понимание владельца по умолчанию


Вы могли заметить, что когда пользователь создает файл, применяется владение по умолчанию.
Пользователь, который создает файл, автоматически становится владельцем этого файла, а основная группа этого пользователя автоматически становится владельцем этого файла. Обычно это группа, которая указана в файле /etc/passwd в качестве основной группы пользователя. Однако если пользователь является членом нескольких групп, он может изменить эффективную основную группу.

Чтобы показать текущую эффективную первичную группу, пользователь может использовать команду groups:

[root@server1 ~]# groups lisa lisa : lisa account sales 

Если текущий пользователь linda хочет изменить эффективную первичную группу, он будет использовать команду newgrp, за которой следует имя группы, которую он хочет установить в качестве новой эффективной первичной группы. После использования команды newgrp первичная группа будет активна, пока пользователь не введет команду exit или не выйдет из системы.

Ниже показано, как пользователь lisa использует эту команду, что бы первичной группой стала группа sales:

lisa@server1 ~]$ groups lisa account sales [lisa@server1 ~]$ newgrp sales [lisa@server1 ~]$ groups sales lisa account [lisa@server1 ~]$ touch file1 [lisa@server1 ~]$ ls -l total 0 -rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1 

После изменения действующей основной группы все новые файлы, созданные пользователем, получат эту группу в качестве группы-владельца.Чтобы вернуться к исходной настройке первичной группы, используйте exit.

Чтобы иметь возможность использовать команду newgrp, пользователь должен быть членом той группы, которую он хочет использовать в качестве первичной. Кроме этого, групповой пароль может быть использован для группы с помощью команды gpasswd. Если пользователь использует команду newgrp, но не является членом целевой группы, оболочка запрашивает пароль группы. После того, как вы введете правильный групповой пароль, будет установлена новая эффективная первичная группа.

Управление основными правами


Система разрешений Linux была изобретена в 1970-х годах. Поскольку вычислительные потребности были ограничены в те годы, базовая система разрешений была довольно ограничена. Эта система разрешений использует три разрешения, которые можно применять к файлам и каталогам. В этом разделе вы узнаете, как использовать и изменять эти разрешения.

Понимание прав на чтение, запись и выполнение


Три основных разрешения позволяют вам читать, записывать и выполнять файлы. Эффект этих разрешений отличается при применении к файлам или каталогам. Применительно к файлу разрешение на чтение дает вам право открыть файл для чтения. Следовательно, вы можете прочитать его содержимое, но это означает, что ваш компьютер может открыть файл, чтобы что-то с ним сделать.

Программный файл, которому требуется доступ к библиотеке, должен, например, иметь доступ для чтения к этой библиотеке. Из этого следует, что разрешение на чтение — это самое основное разрешение, которое вам нужно для работы с файлами.

Применительно к каталогу чтение позволяет отображать содержимое этого каталога. Вы должны знать, что это разрешение не позволяет вам читать файлы в каталоге. Система разрешений Linux не знает наследования, и единственный способ прочитать файл — использовать разрешения на чтение для этого файла.

Как вы, вероятно, можете догадаться, разрешение на запись, если оно применяется к файлу, позволяет записывать в файл. Иначе говоря, позволяет изменять содержимое существующих файлов. Однако он не позволяет создавать или удалять новые файлы или изменять права доступа к файлу. Для этого вам нужно дать разрешение на запись каталогу, где вы хотите создать файл. В каталогах это разрешение также позволяет создавать и удалять новые подкаталоги.

Разрешение на выполнение — это то, что вам нужно для выполнения файла. Оно никогда не будет установлено по умолчанию, что делает Linux практически полностью невосприимчивым к вирусам. Только кто-то с правами записи на каталог может применять разрешение на выполнение.

Ниже обобщается использование основных разрешений:

Использование chmod


Для управления правами используется команда chmod. При использовании chmod вы можете устанавливать разрешения для пользователя (user), группы (group) и других (other). Вы можете использовать эту команду в двух режимах: относительный режим и абсолютный режим. В абсолютном режиме три цифры используются для установки основных разрешений.

При настройке разрешений рассчитайте необходимое вам значение. Если вы хотите установить чтение, запись и выполнение для пользователя, чтение и выполнение для группы, а также чтение и выполнение для других в файле /somefile, то вы используете следующую команду chmod:

chmod 755 /somefile

Когда вы используете chmod таким способом, все текущие разрешения заменяются установленными вами разрешениями.

Если вы хотите изменить разрешения относительно текущих разрешений, вы можете использовать chmod в относительном режиме. При использовании chmod в относительном режиме вы работаете с тремя индикаторами, чтобы указать, что вы хотите сделать:

  1. Сначала вы указываете, для кого вы хотите изменить разрешения. Для этого вы можете выбрать между пользователем (u), группой (g) и другими (o).
  2. Затем вы используете оператор для добавления или удаления разрешений из текущего режима или устанавливаете их абсолютно.
  3. В конце вы используете r, w и x, чтобы указать, какие разрешения вы хотите установить.

При изменении разрешений в относительном режиме вы можете пропустить часть «кому», чтобы добавить или удалить разрешение для всех объектов. Например, эта команда добавляет разрешение на выполнение для всех пользователей:
chmod +x somefile

При работе в относительном режиме вы также можете использовать более сложные команды. Например, эта команда добавляет разрешение на запись в группу и удаляет чтение для других:
chmod g+w,o-r somefile

При использовании chmod -R o+rx /data вы устанавливаете разрешение на выполнение для всех каталогов, а также для файлов в каталоге /data. Чтобы установить разрешение на выполнение только для каталогов, а не для файлов, используйте chmod -R o+ rX /data.

Верхний регистр X гарантирует, что файлы не получат разрешение на выполнение, если файл уже не установил разрешение на выполнение для некоторых объектов. Это делает X более разумным способом работы с разрешениями на выполнение; это позволит избежать установки этого разрешения на файлы, где оно не требуется.

Расширенные права


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

Понимание расширенных прав SUID, GUID и sticky bit


Есть три продвинутых разрешения. Первое из них — это разрешение на установку идентификатора пользователя (SUID). В некоторых особых случаях вы можете применить это разрешение к исполняемым файлам. По умолчанию пользователь, запускающий исполняемый файл, запускает этот файл со своими собственными разрешениями.

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

Рассмотрим, например, ситуацию, когда пользователю необходимо сменить пароль. Для этого пользователь должен записать свой новый пароль в файл /etc/shadow. Однако этот файл недоступен для записи пользователям, не имеющим прав доступа root:

root@hnl ~]# ls -l /etc/shadow ----------. 1 root root 1184 Apr 30 16:54 /etc/shadow 

Разрешение SUID предлагает решение этой проблемы. В утилите /usr/bin/passwd это разрешение применяется по умолчанию. Это означает, что при смене пароля пользователь временно получает права root, что позволяет ему записывать в файл /etc/shadow. Вы можете видеть разрешение SUID с ls -l как s в позиции, где обычно вы ожидаете увидеть x для пользовательских разрешений:
[root@hnl ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd 

Разрешение SUID может выглядеть полезным (и в некоторых случаях так оно и есть), но в то же время оно потенциально опасно. При неправильном применении вы можете случайно раздать права доступа root. Поэтому я рекомендую использовать его только с максимальной осторожностью.

Большинству администраторов никогда не придется его использовать; вы увидите его только в некоторых файлах, где операционная система должна установить его по умолчанию.

Второе специальное разрешение — это идентификатор группы (SGID). Это разрешение имеет два эффекта. При применении к исполняемому файлу, он дает пользователю, который исполняет файл, разрешения владельца группы этого файла. Таким образом, SGID может выполнить более или менее то же самое, что SUID. Однако для этой цели SGID практически не используется.

Как и в случае с разрешением SUID, SGID применяется к некоторым системным файлам в качестве настройки по умолчанию.

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

Это не всегда очень полезно, особенно потому, что у пользователей Red Hat/CentOS в качестве основной группы задана группа с тем же именем, что и у пользователя, и из которых пользователь является единственным участником. Таким образом, по умолчанию файлы, которые создает пользователь, будут групповыми для общего доступа.

Представьте себе ситуацию, когда пользователи linda и lori работают в бухгалтерии и являются членами группы account. По умолчанию эти пользователи являются членами частной группы, единственным членом которой они являются. Однако оба пользователя являются членами группы account, но также и в качестве параметра вторичной группы.

Ситуация по умолчанию состоит в том, что когда любой из этих пользователей создает файл, основная группа становится владельцем. Поэтому по умолчанию linda не может получить доступ к файлам, созданным lori, и наоборот. Однако, если вы создаете общий каталог группы (скажем, /groups/account) и убедитесь, что разрешение SGID применено к этому каталогу и что учет группы установлен как владелец группы для этого каталога, все файлы, созданные в этом каталоге и во всех его подкаталогах, также получают account группы как владельца группы по умолчанию.

По этой причине разрешение SGID является очень полезным разрешением для установки в каталогах общих групп.

Разрешение SGID показывается в выводе ls -ld как s в позиции, где вы обычно находите разрешение на выполнение группы:

[root@hnl data]# ls -ld account drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account 

Третий из специальных разрешений — sticky bit. Это разрешение полезно для защиты файлов от случайного удаления в среде, где несколько пользователей имеют права на запись в один и тот же каталог. Если применяется закрепленный sticky bit, пользователь может удалить файл, только если он является пользователем-владельцем файла или каталога, в котором содержится файл. По этой причине он применяется в качестве разрешения по умолчанию для каталога /tmp и может быть полезен также для каталогов общих групп.

Без sticky bit, если пользователь может создавать файлы в каталоге, он также может удалять файлы из этого каталога. В общедоступной групповой среде это может раздражать. Представьте себе пользователей linda и lori, которые оба имеют права на запись в каталог /data/account и получают эти разрешения благодаря участию в группе account. Поэтому linda может удалять файлы, созданные lori, и наоборот.

Когда вы применяете sticky bit, пользователь может удалять файлы, только если выполняется одно из следующих условий:

  • Пользователь является владельцем файла;
  • Пользователь является владельцем каталога, в котором находится файл.

При использовании ls -ld, вы можете видеть sticky bit как t в позиции, где вы обычно видите разрешение на выполнение для других:
[root@hnl data]# ls -ld account/ drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/ 

Применение расширенных прав


Чтобы применить SUID, SGID и sticky bit, вы также можете использовать chmod. SUID имеет числовое значение 4, SGID имеет числовое значение 2, а sticky bit имеет числовое значение 1.

Если вы хотите применить эти разрешения, вам нужно добавить четырехзначный аргумент в chmod, первая цифра которого относится к специальным разрешениям. Следующая строка, например, добавит разрешение SGID на каталог и установит rwx для пользователя и rx для группы и других:

chmod 2755 /somedir

Это довольно непрактично, если вам нужно посмотреть текущие права доступа, которые установлены, прежде чем работать с chmod в абсолютном режиме. (Вы рискуете перезаписать разрешения, если вы этого не сделаете.) Поэтому я рекомендую работать в относительном режиме, если вам нужно применить какое-либо из специальных разрешений:
  1. Для SUID используйте chmod u+s.
  2. Для SGID используйте chmod g+s.
  3. Для sticky bit используйте chmod +t, а затем имя файла или каталога, для которого вы хотите установить разрешения.

В таблице обобщено все, что важно знать об управлении специальными разрешениями.

Пример работы со специальными правами


В этом примере вы используете специальные разрешения, чтобы членам группы было проще обмениваться файлами в каталоге общей группы. Вы назначаете ID-бит установленного идентификатора группы, а также sticky bit, и видите, что после их установки добавляются функции, облегчающие совместную работу членов группы.
  1. Откройте терминал, в котором вы являетесь пользователем linda. Создать пользователя можно командой useradd linda, добавить пароль passwd linda.
  2. Создайте в корне каталог /data и подкаталог /data/sales командой mkdir -p /data/sales. Выполните cd /data/sales, чтобы перейти в каталог sales. Выполните touch linda1 и touch linda2, чтобы создать два пустых файла, владельцем которых является linda.
  3. Выполните su — lisa для переключения текущего пользователя на пользователя lisa, который также является членом группы sales.
  4. Выполните cd /data/sales и из этого каталога выполните ls -l. Вы увидите два файла, которые были созданы пользователем linda и принадлежат группе linda. Выполните rm -f linda*. Это удалит оба файла.
  5. Выполните touch lisa1 и touch lisa2, чтобы создать два файла, которые принадлежат пользователю lisa.
  6. Выполните su - для повышения ваших привилегий до уровня root.
  7. Выполните chmod g+s,o+t /data/sales, чтобы установить бит идентификатора группы (GUID), а также sticky bit в каталоге общей группы.
  8. Выполните su — linda. Затем выполните touch linda3 и touch linda4. Теперь вы должны увидеть, что два созданных вами файла принадлежат группе sales, которая является владельцем группы каталога /data/sales.
  9. Выполните rm -rf lisa*. Sticky bit предотвращает удаление этих файлов от имени пользователя linda, поскольку вы не являетесь владельцем этих файлов. Обратите внимание, что если пользователь linda является владельцем каталога /data/sales, он в любом случае может удалить эти файлы!

Управление ACL (setfacl, getfacl) в Linux


Даже если расширенные права, которые обсуждались выше, добавляют полезную функциональность к тому, как Linux работает с разрешениями, это не позволяет вам предоставлять разрешения более чем одному пользователю или одной группе в одном файле.

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

Понимание ACL


Хотя подсистема ACL добавляет отличные функциональные возможности вашему серверу, у нее есть один недостаток: не все утилиты поддерживают ее. Следовательно, вы можете потерять настройки ACL при копировании или перемещении файлов, а программное обеспечение для резервного копирования может не выполнить резервное копирование настроек ACL.

Утилита tar не поддерживает ACL. Чтобы убедиться, что настройки ACL не будут потеряны при создании резервной копии, используйте star вместо tar. star работает с теми же параметрами, что и tar; он просто добавляет поддержку настроек ACL.

Вы также можете создать резервную копию ACL с помощью getfacl, которую можно восстановить с помощью команды setfacl. Чтобы создать резервную копию, используйте getfacl -R /directory > file.acls. Чтобы восстановить настройки из файла резервной копии, используйте setfacl --restore=file.acl.

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

Подготовка файловой системы для ACL


Перед началом работы с ACL может потребоваться подготовить файловую систему для поддержки ACL. Поскольку метаданные файловой системы необходимо расширять, не всегда есть поддержка по умолчанию для ACL в файловой системе. Если при настройке списков ACL для файловой системы вы получаете сообщение «operation not supported», возможно, в вашей файловой системе отсутствует поддержка ACL.

Чтобы это исправить, вам нужно добавить опцию acl mount в файле /etc/fstab, чтобы файловая система была смонтирована с поддержкой ACL по умолчанию.

Изменение и просмотр настроек ACL с помощью setfacl и getfacl


Чтобы установить ACL, вам нужна команда setfacl. Чтобы увидеть текущие настройки ACL, вам нужен getfacl. Команда ls -l не показывает никаких существующих ACL; он просто показывает + после списка разрешений, который указывает, что списки ACL применяются и к файлу.

Перед настройкой списков ACL всегда полезно показать текущие настройки ACL с помощью getfacl. Ниже на примере вы можете увидеть текущие права доступа, как показано с помощью ls -ld, а также как показано с getfacl. Если вы посмотрите достаточно внимательно, вы увидите, что показанная информация точно такая же.

[root@server1 /]# ls -ld /dir drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir [root@server1 /]# getfacl /dir getfacl: Removing leading '/' from absolute path names # file: dir # owner: root # group: root user::rwx group::r-x other::r-x 

В результате выполнения команды getfacl ниже видно, что разрешения показаны для трех разных объектов: пользователя, группы и других. Теперь давайте добавим ACL, чтобы дать права на чтение и выполнение и группе sales. Команда для этого setfacl -m g:sales:rx /dir. В этой команде -m указывает, что текущие настройки ACL необходимо изменить. После этого g:sales:rx сообщает команде установить ACL для чтения и выполнения (rx) для группы (g) sales. Ниже вы можете увидеть, как выглядит команда, а также вывод команды getfacl после изменения текущих настроек ACL.
[root@server1 /]# setfacl -m g:sales:rx /dir [root@server1 /]# getfacl /dir getfacl: Removing leading '/' from absolute path names # file: dir # owner: root # group: root user::rwx group::r-x group:sales:r-x mask::r-x other::r-x 

Теперь, когда вы понимаете, как установить групповой ACL, легко понять ACL для пользователей и других пользователей. Например, команда setfacl -m u:linda:rwx /data дает разрешения пользователю linda в каталоге /data, не делая его владельцем и не изменяя назначение текущего владельца.

Команда setfacl имеет много возможностей и опций. Один вариант особенно важен, параметр -R. Если используется, опция делает настройку ACL для всех файлов и подкаталогов, которые в настоящее время существуют в каталоге, где вы устанавливаете ACL. Рекомендуется всегда использовать эту опцию при изменении списков ACL для существующих каталогов.

Работа с ACL по умолчанию


Одним из преимуществ использования списков ACL является то, что вы можете давать разрешения нескольким пользователям или группам в каталоге. Еще одним преимуществом является то, что вы можете включить наследование, работая с ACL по умолчанию.

Установив ACL по умолчанию, вы определите разрешения, которые будут установлены для всех новых элементов, создаваемых в каталоге. Имейте в виду, что ACL по умолчанию не меняет разрешения для существующих файлов и подкаталогов. Чтобы изменить их, нужно добавить и обычный ACL!

Это важно знать. Если вы хотите использовать ACL для настройки доступа нескольких пользователей или групп к одному и тому же каталогу, вы должны установить ACL дважды. Сначала используйте setfacl -R -m, чтобы изменить ACL для текущих файлов. Затем используйте setfacl -m d:, чтобы позаботиться обо всех новых элементах, которые также будут созданы.

Чтобы установить ACL по умолчанию, вам просто нужно добавить опцию d после опции -m (порядок имеет значение!). Поэтому используйте setfacl -m d:g:sales:rx /data, если вы хотите, чтобы группа sales имела доступ на чтение и выполнение всего, что когда-либо будет создано в каталоге /data.

При использовании списков ACL по умолчанию также может быть полезно установить ACL для других. Обычно это не имеет особого смысла, потому что вы также можете изменить разрешения для других, используя chmod. Однако, что вы не можете сделать с помощью chmod, это указать права, которые должны быть предоставлены другим пользователям для каждого нового файла, который когда-либо будет создан. Если вы хотите, чтобы другие не получали никаких разрешений на что-либо, созданное в /data, например, используйте setfacl -m d:o::- /data.

ACL и обычные разрешения не всегда хорошо интегрированы. Проблемы могут возникнуть, если вы применили ACL по умолчанию к каталогу, после чего элементы были добавлены в этот каталог, и затем попытаетесь изменить обычные разрешения. Изменения, которые применяются к обычным разрешениям, не будут хорошо отражены в обзоре ACL. Чтобы избежать проблем, сначала установите обычные разрешения, после чего установите ACL по умолчанию (и после этого старайтесь не изменять их снова).

Пример управления расширенными правами с использованием ACL


В этом примере вы продолжите работу с каталогами /data/account и /data/sales, которые вы создали ранее. В предыдущих примерах вы гарантировали, что группа sales имеет разрешения на /data/sales, а группа account имеет разрешения на /data/account.

Сначала убедитесь, что группа account получает разрешения на чтение в каталоге /data/sales, а группа sales получает разрешения на чтение в каталоге /data/account.

Затем вы устанавливаете списки ACL по умолчанию, чтобы убедиться, что для всех новых файлов правильно установлены разрешения для всех новых элементов.

  1. Откройте терминал.
  2. Выполните setfacl -m g:account:rx /data/sales и setfacl -m g:sales:rx /data/account.
  3. Выполните getfacl, чтобы убедиться, что права доступа были установлены так, как вы хотели.
  4. Выполните setfacl -m d:g:account:rwx,g:sales:rx /data/sales, чтобы установить ACL по умолчанию для каталога sales.
  5. Добавьте ACL по умолчанию для каталога /data/account, используя setfacl -m d:g:sales:rwx,g:account:rx /data/account.
  6. Убедитесь, что настройки ACL действуют, добавив новый файл в /data/sales. Выполните touch /data/sales/newfile и выполните getfacl /data/sales/newfile для проверки текущих разрешений.

Установка прав по умолчанию с помощью umask


Выше вы узнали, как работать с ACL по умолчанию. Если вы не используете ACL, есть параметр оболочки, который определяет права по умолчанию, которые вы получите: umask (обратная маска). В этом разделе вы узнаете, как изменить разрешения по умолчанию с помощью umask.

Вы, наверное, заметили, что при создании нового файла устанавливаются некоторые разрешения по умолчанию. Эти разрешения определяются настройкой umask. Этот параметр оболочки применяется ко всем пользователям при входе в систему. В параметре umask используется числовое значение, которое вычитается из максимальных разрешений, которые могут быть автоматически установлены для файла; максимальная настройка для файлов — 666, а для каталогов — 777.

Однако некоторые исключения относятся к этому правилу. Вы можете найти полный обзор настроек umask в таблице внизу.

Из цифр, используемых в umask, как и в случае числовых аргументов для команды chmod, первая цифра относится к разрешениям пользователя, вторая цифра относится к разрешениям группы, а последняя относится к разрешениям по умолчанию, установленным для других. Значение umask по умолчанию 022 дает 644 для всех новых файлов и 755 для всех новых каталогов, созданных на вашем сервере.

Полный обзор всех числовых значений umask и их результатов в таблице ниже.

Простой способ увидеть, как работает параметр umask, выглядит следующим образом: начните с разрешений по умолчанию для файла, установленного на 666, и вычтите umask, чтобы получить действующие разрешения. Сделайте то же самое для каталога и его разрешений по умолчанию 777.

Есть два способа изменить настройку umask: для всех пользователей и для отдельных пользователей. Если вы хотите установить umask для всех пользователей, вы должны убедиться, что параметр umask учитывается при запуске файлов среды оболочки, как указано в /etc/profile. Правильный подход — создать сценарий оболочки с именем umask.sh в каталоге /etc/profile.d и указать umask, который вы хотите использовать в этом сценарии оболочки. Если в этом файле изменяется umask, он применяется ко всем пользователям после входа на сервер.

Альтернативой настройке umask через /etc/profile и связанные файлы, где он применяется ко всем пользователям, входящим в систему, является изменение настроек umask в файле с именем .profile, который создается в домашнем каталоге каждого пользователя.

Настройки, примененные в этом файле, применяются только для отдельного пользователя; следовательно, это хороший метод, если вам нужно больше детализации. Мне лично нравится эта функция, чтобы изменить значение umask по умолчанию для пользователя root на 027, тогда как обычные пользователи работают с umask по умолчанию 022.

Работа с расширенными атрибутами пользователя


Это заключительный раздел о правах в Linux.

При работе с разрешениями всегда существует связь между объектом пользователя или группы и разрешениями, которые эти объекты пользователя или группы имеют для файла или каталога. Альтернативный метод защиты файлов на сервере Linux — работа с атрибутами.
Атрибуты выполняют свою работу независимо от пользователя, который обращается к файлу.

Как и в случае с ACL, для атрибутов файла может потребоваться включить параметр mount.

Это опция user_xattr. Если вы получаете сообщение «operation not supported» при работе с расширенными атрибутами пользователя, обязательно установите параметр mount в файле /etc/fstab.

Многие атрибуты задокументированы. Некоторые атрибуты доступны, но еще не реализованы. Не используйте их; они ничего вам не принесут.

Ниже приведены наиболее полезные атрибуты, которые вы можете применить:

A Этот атрибут гарантирует, что время доступа к файлу файла не изменяется.
Обычно каждый раз, когда файл открывается, время доступа к файлу должно быть записано в метаданные файла. Это отрицательно влияет на производительность; поэтому для файлов, к которым осуществляется регулярный доступ, атрибут A можно использовать для отключения этой функции.

a Этот атрибут позволяет добавлять, но не удалять файл.

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

D Этот атрибут гарантирует, что изменения в файлах записываются на диск немедленно, а не в кэширование в первую очередь. Это полезный атрибут в важных файлах базы данных, позволяющий убедиться, что они не теряются между файловым кешем и жестким диском.

d Этот атрибут гарантирует, что файл не будет сохранен в резервных копиях, где используется утилита дампа.

I Этот атрибут включает индексирование для каталога, в котором он включен. Это обеспечивает более быстрый доступ к файлам для примитивных файловых систем, таких как Ext3, которые не используют базу данных B-tree для быстрого доступа к файлам.

i Этот атрибут делает файл неизменным. Следовательно, в файл нельзя вносить изменения, что полезно для файлов, которые нуждаются в дополнительной защите.

j Этот атрибут гарантирует, что в файловой системе ext3 файл сначала записывается в журнал, а затем — в блоки данных на жестком диске.

s Перезаписать блоки, в которых файл был сохранен, на 0 с после удаления файла. Это гарантирует, что восстановление файла невозможно после того, как он был удален.

u Этот атрибут сохраняет информацию об удалении. Это позволяет разрабатывать утилиту, которая работает с этой информацией для спасения удаленных файлов.

Если вы хотите применить атрибуты, вы можете использовать команду chattr. Например, используйте chattr +s somefile, чтобы применить атрибуты к somefile. Нужно удалить атрибут? Тогда используйте chattr -s somefile, и он будет удален. Чтобы получить обзор всех атрибутов, которые в настоящее время применяются, используйте команду lsattr.

Резюме


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

Если вам понравился этот перевод, то прошу написать об этом в комментариях. Будет больше мотивации делать полезные переводы.

В статье исправил некоторые опечатки и грамматические ошибки. Уменьшил некоторые громоздкие абзацы на более мелкие для удобства восприятия.

Вместо «Только кто-то с административными правами на каталог может применять разрешение на выполнение.» исправил на «Только кто-то с правами записи на каталог может применять разрешение на выполнение.», что будет более правильным.

За замечания спасибо berez.


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

На:
Если вы не являетесь владельцем файла, оболочка проверит, являетесь ли вы участником группы, у которой есть разрешения на этот файл. Если вы являетесь участником этой группы, вы получаете доступ к файлу с разрешениями, которые для группы установлены, и оболочка прекратит проверку.

Спасибо за замечание CryptoPirate

Разрешения и права доступа к файлам Linux с примерами

Изучите все, что вам нужно знать о разрешениях файлов в Linux. Также узнайте, как изменить права доступа и собственности к файлам.
По дизайну Linux – многопользовательская операционная система. В корпоративной системе было бы несколько пользователей, обращающихся к одной и той же системе. Но если любой пользователь может получить доступ и изменить все файлы, принадлежащие другим пользователям или системным файлам, это, безусловно, будет угрозой безопасности.

Вот почему UNIX и, следовательно, Linux (Linux – Unix-подобная система) имеют встроенную меру безопасности. Это гарантирует, что доступ к файлу или каталогу может быть изменен только желаемыми пользователями.

К какому файлу будет обращаться пользователь, решает два фактора в Linux:

  • Владение файлами
  • Разрешение файла

Понимание прав собственности на файл и разрешения имеет решающее значение для пользователя Linux. Здесь мы подробно объясним эти условия.

 

Владение файлами в Linux

Заметка

Мы можем использовать этот термин здесь, но он применим и к каталогам. Наверное, вы знаете, что каталоги – это файлы в любом случае.

Каждый файл и каталог в Linux имеет трех типов владельцев:

 

Пользователь

Пользователь является владельцем файла. Когда вы создаете файл, вы становитесь владельцем файла. Собственность также может быть изменена, но мы это позже.

 

Группа

Каждый пользователь является частью определенной группы (групп). Группа состоит из нескольких пользователей, и это один из способов управления пользователями в многопользовательской среде.

Например, если у вас есть команда разработчиков, команда QA и команды sysadmin, обращающиеся к одной и той же системе, вы должны создать для них отдельные группы. Таким образом, вы можете эффективно управлять файлами и безопасностью системы. Это экономит время, потому что вместо того, чтобы вручную добавлять разрешения для каждого пользователя, вы можете просто добавить их в группу и изменить разрешение для группы. Вы увидите, как это сделать позже в этой статье.

Даже если вы являетесь единственным пользователем системы, вы по-прежнему будете частью многих групп. Такие дистрибутивы, как Ubuntu, также создают группу с именем, аналогичным имени пользователя.

Совет

Запустите команду группы, чтобы узнать, какой группе пользователей вы принадлежите.

 

Другие

Другие – это в основном супергруппа со всеми пользователями в системе. В принципе, любой, кто имеет доступ к системе, принадлежит этой группе.

Другими словами, «Пользователь» – это один пользователь, группа представляет собой набор пользователей, а «Другой» состоит из всех пользователей системы.

 

Разрешения для файлов в Linux

Каждый файл и каталог в Linux имеет три разрешения для всех трех типов владельцев:

Разрешения для файлов

  • Чтение – просмотр или копирование содержимого файла
  • Запись – может изменять содержимое файла
  • Выполнение – может запускать файл (если его исполняемый файл)

 

Разрешения для каталогов

  • Чтение – может перечислить все файлы и скопировать файлы из каталога
  • Запись – может добавлять или удалять файлы в каталог (требуется также разрешение на выполнение)
  • Выполнение – может войти в каталог

 

Общие сведения о разрешениях и правах доступа к файлам в Linux

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

Если вы используете команду ls с параметром -l в файле, вы увидите такой вывод:

-rwxrw-r-- 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt

 

Позвольте нам объяснить этот результат с изображением:

Подробно весь вывод:

  • File type (Тип файла) : Обозначает тип файла. d означает каталог, – означает обычный файл, l означает символическую ссылку.
  • Permissions (Разрешения) : В этом поле отображается набор разрешений для файла. Я объясню это подробно в следующем разделе.
  • Hard Link Count (Количество жестких ссылок) : показывает, имеет ли файл жесткие ссылки. Счет по умолчанию – один.
  • User (Пользователь) : Пользователь, которому принадлежат файлы.
  • Group (Группа) : Группа, у которой есть доступ к этому файлу. Одновременно может быть только одна группа.
  • File Size (Размер файла) : Размер файла в байтах.
  • Modification timestamp (Время модификации) : Дата и время последнего изменения файла.
  • Filename (Имя файла) : Очевидно, имя файла или каталога.

Теперь, когда вы поняли вывод команды ls -l, давайте сосредоточимся на части разрешения файла.

В приведенной выше команде вы видите разрешение файла, подобное этому в девятизначном формате :

rwxrw-r--

 

Каждая буква обозначает конкретное разрешение:

  • r: разрешение на чтение
  • w: разрешение на запись
  • x: выполнить разрешение
  • -: не установлено разрешение

Разрешения всегда находятся в порядке читать, писать и выполнять, т. е. rwx. И тогда эти разрешения устанавливаются для всех трех своего рода владельцев (см. раздел прав собственности) в порядке: Пользователь, Группа и Другое.

Эта картина лучше объяснит:

 

Итак, если вы посмотрите на приведенную выше картинку, вы можете сказать следующие вещи о разрешениях файлов:

  • Файл имеет права на чтение, запись и выполнение для Пользователя, Но кто является владельцем этого файла? У вас есть эта информация на выходе ls -l (т.е. пользователь andreyex).
  • Файл имеет права на чтение и запись для группы, но не выполняется. Какая группа? У вас есть информация о группе на выходе команды ls -l (т.е. группа andreygroup).
  • Файл имеет только разрешение на чтение для других, то есть всех, у кого есть доступ к системе. Вам не нужно знать, что это за другое, потому что «другое» означает всех пользователей.

Теперь, если вы снова увидите всю команду ls -l, вы можете прочитать права на файлы и права собственности вместе.

-rwxrw-r-- 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt

 

Файл andreyex.txt принадлежит пользователю andreyex а также andreyex имеет разрешение на чтение, запись и выполнение. Все члены группы andreygroup имеют доступ на чтение и запись к этому файлу, в то время как все остальные имеют доступ только к чтению этого файла.

Примечание

Корневой пользователь имеет полномочия суперпользователя и, как правило, он имеет права на чтение, запись и выполнение всех файлов, даже если вы не видите их в файл разрешения.

Один пользователь может быть членом нескольких групп, но только основная группа пользователя является владельцем группы файла, созданного пользователем. Основная группа пользователя может быть найдена с помощью идентификатора команды –gn <username>. Оставьте имя пользователя пустым, если вы пытаетесь найти свою собственную основную группу.

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

 

Изменить права доступа к файлам в Linux

Вы можете использовать команду CHMOD для изменения разрешений на файл в Linux.

Общая информация : Разрешения назывались режимом доступа и, следовательно, CHMOD была короткая форма изменения режима доступа.

Существует два способа использования команды chmod:

  • Абсолютный режим
  • Символический режим

 

Использование chmod в абсолютном режиме

В абсолютном режиме разрешения представлены в числовой форме (точнее, восьмеричная система). В этой системе каждое разрешение файла представлено числом.

  • r (чтение) = 4
  • w (написать) = 2
  • x (выполнить) = 1
  • – (без разрешения) = 0

С помощью этих числовых значений вы можете комбинировать их, и, таким образом, один номер может использоваться для представления всего набора разрешений.

Число разрешение
0
1 -x
2 -w-
3 (т.е. 2 + 1) -wx
4 r-
5 (т.е. 4 + 1) г-х
6 (т.е. 4 + 2) rw-
7 (т.е. 4 + 2 + 1) rwx

 

Можете ли вы догадаться о разрешении файла в цифрах в файле andreyex.txt в нашем примере? Это пишут, это 754.

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

Предположим, вы хотите изменить разрешение файла на andreyex.txt, чтобы каждый мог читать и писать, но никто не может его выполнить? В этом случае вы можете использовать команду chmod следующим образом:

chmod 666 andreyex.txt

 

Если вы перечислите andreyex.txt сейчас, вы увидите, что разрешение было изменено.

-rw-rw-rw- 1 andreyex andreyex 457 Aug 18 16:20 andreyex.txt

 

Использование chmod в символическом режиме

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

Здесь вы можете использовать символический режим с помощью команды chmod.

В символическом режиме владельцы обозначаются следующими символами:

  • u = пользовательский пользователь
  • g = владелец группы
  • o = другое
  • a = все (пользователь + группа + прочее)

Символический режим использует математические операторы для выполнения изменений разрешения:

  • + для добавления разрешений
  • – для удаления разрешений
  • = для переопределения существующих разрешений с новым значением

Теперь, когда вы знаете, давайте посмотрим, как использовать команду chmod в символическом режиме.

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

chmod g+x andreyex.txt

 

Если вы сейчас просмотрите разрешения для этого файла, вы увидите, что теперь добавлено разрешение на выполнение:

-rw-rwxrw- 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt

 

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

chmod o-rw+x,u+x andreyex.txt

 

Полученные разрешения будут такими:

-rwxrwx--x 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt

 

Если вы хотите одновременно изменить разрешения для всех трех пользователей, вы можете использовать его следующим образом:

chmod a-x andreyex.txt

 

Это приведет к удалению разрешения на выполнение для всех.

-rw-rw---- 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt

 

Теперь, когда вы знаете, как изменить разрешение файла, давайте посмотрим, как изменить права собственности на файл.

Совет

Один файл не может входить в несколько групп.

 

Изменение владельца файла в Linux

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

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

chown <new_user_name> <filename>

 

Если вы хотите изменить пользователя и группу, вы можете использовать команду cown следующим образом:

chown <new_user_name>:<new_user_group> <filename>

 

Если вы просто хотите изменить группу, вы можете использовать команду chwon таким образом:

chown :<new_user_group> <filename>

 

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

chgrp <new_user_group> <filename>

 

В нашем примере до сих пор, если вы хотите изменить владельца и группу пользователей на root, вы можете использовать команду chown следующим образом:

sudo chown root:root andreyex.txt

 

Это изменит право собственности на файл на root как для пользователя, так и для группы.

-rw-rw---- 1 root root 457 Aug 18 16:20 andreyex.txt

 

Заметьте, что нам пришлось использовать sudo с chown? Это связано с тем, что здесь задействован root, и чтобы справиться с корнем, вам нужны права суперпользователя.

 

Бонус Совет: Есть ли приоритет в разрешениях на файлы?

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

----r--rw- 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt

 

Теперь, если пользователь andreyex пытается прочитать файл с помощью команды cat или less, сможет ли он это сделать? Ответ – нет, потому что у него нет разрешения на чтение.

Но пользователь andreyex является частью группы andreygroup, и у группы есть доступ на чтение. Другой имеет право на чтение и запись. Это должно означать, что каждый (включая пользователя andreyex) может читать и писать файл, не так ли? Неправильно!

В Linux приоритет от пользователя, а затем от группы, а затем и от другого. Система Linux проверяет, кто инициировал этот процесс (в нашем примере cat или less). Если пользователь, инициировавший этот процесс, также является владельцем пользователя, устанавливаются биты прав пользователя.

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

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

 

Что еще?

Существуют некоторые расширенные разрешения для файлов, такие как установка Sticky bit для предотвращения удаления файлов и т. д.

Надеюсь, вам понравилась статья, и теперь у вас есть лучшее понимание того, как права доступа к файлам работают в Linux.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Урок 17. Права доступа Linux к файлам и папкам

В 3-м уроке была рассмотрена команда ls -l, а также краткое описание к выводу команды. В выводе команды также присутствует информация о правах доступа к данному файлу:

Права доступа разделены на 3 группы:

  • владелец файла
  • группа владельцев файла
  • другие пользователи


Для указания уровня доступа к файлу или каталогу используются следующие атрибуты. 

Для файла:

  • r (read) - чтение файла разрешено, то есть можно просматривать его содержимое, открывать в текстовом редакторе.
  • w (write) - запись файла разрешена, то есть можно его редактировать, переименовывать, удалять.
  • x (execute) - исполнение файла разрешено. Это касается исполняемых файлов.

 

Для каталога:

  • r (read) - разрешено просматривать содержимое  каталога, то есть можно воспользоваться командой ls и посмотреть какие файлы и каталоги содержаться в данном каталоге.
  • w (write) - используется совместно с атрибутом x (execute). Позволяет удалять и переименовывать файлы в каталоге.
  • x (execute) - при использовании совместно атрибутом r (read) позволяет увидеть атрибуты файла, то есть его размер, дату модификации, права доступа. Одним словом позволяет полноценно воспользоваться командой ls -l. При использовании совместно с атрибутом w (write) позволяет перейти в каталог командой cd, удалять и переименовывать файлы.

 

Рассмотрим вышесказанное на примерах.

У нас в системе имеются 2 пользователя: teacher (учитель) и student (студент). У каждого из них имеется свой домашний каталог, в котором они могут хранить свои файлы.Так как пользователь student не является владельцем каталога /home/teacher и не относится к группе его владельцев, то для него будут действовать права доступа для категории остальных пользователей.

Домашний каталог пользователя teacher имеет следующие права доступа:

Пользователь student хочет посмотреть какие файлы имеются в данном каталоге:

Доступа нет. Попробуем хотя бы перейти в этот каталог:

Снова нет доступа.

Пользователь teacher решил всем разрешить просмотр его файлов в каталоге:

Попробуем узнать что у него хранится:

Мы узнали имена файлов, но абсолютно ничего не знаем какие это файлы и их атрибуты. То есть атрибут r (read) каталога позволяет просматривать имена (только имена) файлов с помощью ls, но не выдает о них дополнительную информацию. Попробуем перейти в этот каталог:

И снова неудача. Попробуем установить права записи, то есть атрибут w (write):

 

 

Теперь попробуем выполнить все те же действия, что и до этого:

 

Как видно атрибут w (write) сам по себе не работает. Удалим этот атрибут и установим x (execute):

И в итоге:


 

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

Попробуем теперь удалить или переименовать любой файл:

 

Операция запрещена, так как у нас для каталога teacher/ не установлен атрибут w (write).

 

Но ведь сами файлы в каталоге имеют полный доступ для всех остальных пользователей.. Почему мы ничего не можем сделать с данными файлами?

 

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

Когда для каталога запрещена запись, то остальным пользователям запрещено следующее:

  • удалять файлы из каталога
  • перемещать/переименовывать файлы
  • создавать жесткие ссылки
  • создавать новые файлы и каталоги в данном каталоге

 

Однако данная политика не накладывает ограничения на редактирование и копирование файлов. Можно с легкостью отредактировать и сохранить файл. Кроме того, мы можем скопировать файл в свой каталог. Причем файл будет иметь совершенно иные атрибуты. Например, скопируем файл Worknotes.txt в каталог /home/student/:

Теперь у скопированного файла новый владелец и другие права доступа. Здесь данные операции регламентируется уже правами доступа самого файла.

 

А что можно делать с файлами, когда установлен атрибут x (execute)? 

Можно делать следующее:

  • просматривать атрибуты файлов (совместно с атрибутом r) с помощью команды ls -l
  • переходить в каталог командой cd
  • запуск исполняемых файлов
  • совместно с атрибутом w (write) можно удалять и перемещать файлы

 

Теперь установим атрибут w (write) для каталога /home/teacher/ и посмотрим, что произойдет:

 

Теперь можно делать абсолютно что угодно с файлами и каталогами.

 

То есть атрибут w (write) работает всегда в паре с x (execute)? 

Все верно, но это в отношении каталогов. У файлов данные атрибуты независимы друг от друга.

 

А как быть, если пользователь student хочет предоставить доступ к своим файлам определенным пользователям и запретить остальным? 

Для этого существует группа владельцев файла. Пользователю student достаточно поменять группу владельцев файла на teacher и предоставить соответствующие права, а всем остальным - запретить:

А как поменять группу? 

С помощью команды chgrp [опции] группа файл.

Например, чтобы поменять группу владельцев файла Linux.txt на teacher введем chgrp teacher Linux.txt.

 

А если имеется много файлов, то как это сделать быстрее и проще? 

Есть специальная опция -R (--recursive). Например, имеется каталог Homework/ с файлами:

Применим команду chgrp -R teacher Homework/:

А можно поменять и самого владельца? 

Конечно, существует команда chown [опции] владелец файл. 

Однако в тех случаях, когда нам необходимо поменять сразу и группу и владельца, то приходится выполнять 2 команды и это не очень удобно. Поэтому команда chown позволяет менять одновременно и владельца и группу chown [опции] владелец:группа файл. Опция -R (--recursive) действительна и для данной команды.

 

А как можно менять сами права для группы владельцев и остальных пользователей? 

Существуют 2 способа:

  • символьный
  • числовой

Символьный способ 

Используются следующие обозначения объектов, которым предоставляем права доступа:

  • u - владелец
  • g - группа
  • o - остальные
  • а - все перечисленные

 

Операции управления:

  • - запретить
  • + разрешить
  • = заменить права на указанные

 

Права меняются с помощью команды chmod [опции] права_доступа файл. Например, файл notes.txt имеет следующие права доступа:

Запретим остальным пользователям редактирование данного файла: 

chmod o-w notes.txt

Теперь разрешим группе владельцев исполнение данного файла: 

chmod g+x notes.txt

То есть мы указываем объект (u, g или о), а затем с помощью символов управления назначаем или удаляем соответствующие права.

 

А можно одновременно выполнить вышеуказанные действия в одной команде? 

Конечно, достаточно выполнить chmod o-w,g+x notes.txt  и результат будет тот же.

 

А можно одновременно в одной команде выполнить следующее:

  • владельцу назначить rw-
  • группе назначить r-x
  • остальным назначить r-- ?

 

Конечно можно. Для этого существует символ ”=” : chmod u=rw,g=rx,o=r notes.txt.  

А если нужно всем назначить одинаковые права, например r-x, то воспользуемся chmod a=rx notes.txt:

Числовой способ 

Существует и другой способ указать права доступа - с помощью восьмеричного представления. Не будем вдаваться в подробности булевы алгебры и двоично-восьмеричного преобразования. Просто запомним таблицу: 

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

Числовое представление

r (read)

4

w (write)

2

x (execute)

1

А вот как используется числовое представление прав доступа: 

Символьное представление

Операция

Цифровое представление

rwx

4 + 2 +1

7

rw-

4 + 2 + 0

6

r--

4 + 0 + 0

4

r-x

4 + 0 + 1

5

-wx

0 + 2 + 1

3

-w-

0 + 2 + 1

2

--x

0 + 0 + 1

1

---

0 + 0 + 0

0

 

Так как у нас права доступа разделяются на 3 категории (владелец, группа, остальные), то применяется трехзначное обозначение. Например, чтобы абсолютно всем назначить права rwx, то применяется команда chmod 777 notes.txt. 

Чтобы остальным пользователям разрешить только чтение файла, то есть r--, выполним chmod 774 notes.txt.  

Если хотим группе владельцев назначить права r-x, а остальным пользователям вообще все запретить, то выполним chmod 750 notes.txt.

 

Нет смысла запоминать все комбинации, достаточно запомнить числовое значение каждого символа и сложить все 3 цифры.

Теперь представим такую ситуацию. На сервере имеется общий каталог Shared/, который содержит файлы всех пользователей. Такое явление обычное в компаниях, когда у пользователей недостаточно места на диске и  они используют сетевые ресурсы. Чтобы пользователи могли добавлять и удалять свои файлы установлены все разрешающие права:

Но в таком случае любой сможет удалить или переименовать файлы. Не кажется ли такое решение небезопасным? 

Это так, однако в Linux есть небольшое решение. Существует специальный признак “sticky bit”, который устанавливается только для каталогов. Когда он установлен, то только владельцы файла могут его удалять и переименовывать. Остальным пользователям операции по удалению и переименованию файлов запрещены.

 

Как установить данный признак? 

Можно это сделать 2-мя способами: символьным и числовым: 

chmod +t Shared/ или chmod 1777 Shared/, то есть в начало добавляется 1.

 

А как узнать, что этот признак установлен? 

Если признак установлен, то символ x (execute) в категории остальных пользователей заменяется на символ t:

Теперь пусть пользователь student удалит файлы пользователя teacher:

Как видно операция запрещена.

 

А как удалить данный признак? 

Следующими командами: 

chmod -t каталог или chmod 0xxx каталог.

 

Существуют еще 2 специальных признака: suid и sgid.

 

Для чего они используются? 

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

 

А что это могут быть за файлы? 

Например, утилиты passwd, visudo, chfn, gpasswd, useradd, groupadd, chgrp, chown и так далее.

Данные утилиты работают с такими файлами, как /etc/shadow, /etc/passwd, sudoers и т.д. Редактировать данные файлы может только суперпользователь. Поэтому в некоторых случаях и устанавливаются признаки suid или sgid.

 

То есть обычный пользователь косвенно через некоторые файлы может редактировать файлы с ограниченным доступом? 

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

 

А как узнать, что такой признак установлен? 

suid устанавливается для владельца файла, sgid - для группы владельцев. Если он установлен, то на месте символа x (execute) присутствует символ s:

А как установить данные признак? 

Опять же 2-мя способами: символьным и числовым.

 

Установка suid: 

chmod u+s файл или chmod 4xxx файл, то есть в начало добавляется 4.

 

Установка sgid: 

chmod g+s файл или chmod 2xxx файл, то есть в начало добавляется 2.

 

А как удалить признак s

Одной из команд : 

chmod u-s файлchmod g-s файл или просто chmod 0xxx файл.

 

Список используемых команд:

chgrp группа файл - смена группы владельцев файла

chown владелец файл - смена владельца файла

chown владелец:группа файл - смены владельца и группы владельцев файла

chmod права_доступа файл - смена прав доступа к файлу

 

  

 

Комментарии для сайта Cackle

Права доступа в Linux. Команды CHMOD и ls -ld

В этой статье мы узнаем, как установить разрешения Linux для файлов и каталогов. Разрешения определяют, может ли конкретное лицо взаимодействовать с файлом или каталогом. Таким образом, разрешения важны для создания безопасной среды.

Например, вы не хотите, чтобы другие люди изменяли ваши файлы. Также, чтобы системные файлы были защищены от повреждения (случайного или преднамеренного). К счастью, с разрешениями в системе Linux довольно легко работать.

Введение

Разрешения Linux диктуют 3 вещи, которые вы можете делать с файлом: чтение, запись и выполнение. Они упоминаются в Linux одной буквой каждая.

  • r read — вы можете просмотреть содержимое файла.
  • w write — вы можете изменить содержимое файла.
  • x execute — вы можете выполнить или запустить файл, если это программа или скрипт.

Для каждого файла мы определяем 3 группы людей, для которых мы можем указать разрешения.

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

Три убеждения и три группы людей.

Это все, что есть на самом деле с разрешениями. Теперь давайте посмотрим, как мы можем просмотреть и изменить их.

Просмотр разрешений

Для просмотра прав доступа к файлу мы используем параметр длинного списка для команды ls.

ls -l [путь]

В приведенном выше примере первые 10 символов вывода — это то, на что мы смотрим, чтобы определить разрешения.

  • Первый символ определяет тип файла. Если это тире (-), то это обычный файл.
  • Следующие 3 символа представляют разрешения для владельца. Буква обозначает наличие разрешения, а тире (-) обозначает отсутствие разрешения. В этом примере владелец имеет все разрешения (чтение, запись и выполнение).
  • Следующие 3 символа представляют разрешения для группы. В этом примере группа имеет возможность читать, но не писать или выполнять. Обратите внимание, что порядок разрешений всегда читается, затем записывается и выполняется.
  • Наконец, последние 3 символа представляют разрешения для других (или всех остальных). В этом примере у них есть разрешение на выполнение и больше ничего.

Изменить разрешения

Чтобы изменить права доступа к файлу или каталогу, мы используем команду chmod.

chmod [права доступа] [путь]

У chmod есть аргументы разрешения, которые состоят из 3 компонентов

  • Для кого мы меняем разрешение? [ugoa] — пользователь (или владелец), группа, другие, все
  • Предоставляем ли мы или отменяем разрешение — обозначается плюсом (+) или минусом (-)
  • Какое разрешение мы устанавливаем? — прочитать (r), написать (w) или выполнить (x)

Следующие примеры сделают их использование более понятным.

Предоставьте разрешение на выполнение группе. Затем удалите разрешение на запись для владельца.

Не хотите назначать разрешения индивидуально? Мы можем назначить несколько разрешений одновременно.

Может показаться странным, что как владелец файла мы можем лишить нас возможности читать, записывать и выполнять этот файл, но есть веские причины, по которым мы можем захотеть это сделать. Например, может быть, у нас есть файл с данными, которые мы не хотим случайно изменить. Хотя мы можем удалить эти разрешения, мы не можем лишить нас возможности устанавливать эти разрешения. В итоге, мы всегда имеем контроль над каждым файлом.

Разрешения для каталогов

Серии разрешений могут использоваться для каталогов, но они ведут себя несколько иначе.

  • r — у вас есть возможность прочитать содержимое каталога (т.е. сделать ls)
  • w — у вас есть возможность записи в каталог (т.е. создавать файлы и каталоги)
  • х — у вас есть возможность войти в этот каталог (например, CD)

Давайте посмотрим некоторые из них в действии

Обратите внимание, когда мы запускали ls, включена опция -d, которая обозначает каталог. Обычно, если мы даем ls аргумент, который является каталогом, он будет перечислять содержимое каталога. Однако в этом случае нас интересуют права доступа к каталогу, а опция -d позволяет нам получить это.

На первый взгляд эти разрешения могут показаться немного запутанными. Нам нужно помнить, что эти разрешения предназначены для самого каталога, а не для файлов внутри. Например, у вас может быть каталог, для которого у вас нет разрешения на чтение. В нем могут быть файлы, для которых у вас есть разрешение на чтение. Пока вы знаете, что файл существует и его имя, вы все равно можете прочитать файл.

Пользователь root

В системе Linux обычно есть только 2 человека, которые могут изменять права доступа к файлу или каталогу. Владелец файла или каталога и пользователь root.

Пользователь root — это суперпользователь, которому разрешено делать все и вся в системе. Обычно администраторы системы являются единственными, кто имеет доступ к корневой учетной записи и использует ее для обслуживания системы.

Обычные пользователи в основном имеют доступ к файлам и каталогам в своем домашнем каталоге. Впоследствии, это помогает поддерживать безопасность и стабильность системы.

Основная безопасность

Ваш домашний каталог — это ваше личное пространство в системе.

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

Как правило, для оптимальной безопасности вы не должны предоставлять группе или другим пользователям права на запись в ваш домашний каталог. Между тем, иногда выполнение без чтения может оказаться полезным. Это позволяет людям входить в ваш домашний каталог, но не позволяет им видеть, что там.

Обычно система запускает веб-сервер и позволяет пользователям иметь свое собственное веб-пространство. Обычная настройка заключается в том, что если вы поместите каталог в свой домашний каталог с именем public_html, то веб-сервер будет читать и отображать его содержимое. Однако веб-сервер работает от имени другого пользователя, поэтому по умолчанию он не будет иметь доступа для доступа и чтения этих файлов. Это ситуация, когда необходимо предоставить команду execute для вашего домашнего каталога, чтобы пользователь веб-сервера мог получить доступ к необходимым ресурсам.

Вывод

В данной статье мы познакомились со следующими командами:

  • CHMOD — измените права доступа к файлу или каталогу.
  • ls -ld — просмотр разрешений для определенного каталога.

Права доступа к файлам в Linux. Linux статьи


Подробное руководство по правам доступа к файлам в Linux.

Видео про права доступа к файлам в Linux

Начнем с примера

Рассмотрим пример. Если выполнить в какой-либо директории с файлами команду ls -l, то вывод будет примерно следующий:

ls -l -rw-rw-r-- yuriy yuriy 155 июл 25 16:12 myfile.sh drwxrwxr-x yuriy yuriy 4096 июл 25 17:54 Data

В этом выводе в начале каждой строки для каждого файла перечислены права доступа к данному файлу (-rw-rw-r-- yuriy yuriy).

Или, например, если вы щелкните правой кнопкой по файлу и нажмете Свойства, то в открывшемся окне можно будет просмотреть и изменить права доступа к файлу (внешний вид окна может быть другой):

Из чего состоят права доступа

Каждый файл в операционной системе Linux имеет права доступа. Права доступа определяются тремя атрибутами:

набор
разрешений
(rwxrwxrwx)

владелец
пользователь
(user, owner)

владелец
группа
(group)

Набор разрешений

Для каждого файла в Linux задается набор разрешений. Разрешения могут быть следующими:

  • r — read — возможность открытия и чтения файла. Для директории это возможность просматривать содержимое директории.
  • w — write — возможность изменения файла. Для директории это возможность добавлять, удалять или переименовывать файлы в директории.
  • x — execute — возможность выполнения файла (запуска файла). Если проводить аналогию с Windows, то это что-то вроде .exe-файлов. Если право доступа на запуск файла отключено, то вы по прежнему можете читать или изменять файл (если включены права на чтение и запись), но не можете запускать файл. Для директории запуск означает возможность войти в директорию и получить доступ к файлам и поддиректориям в ней.

Набор разрешений состоит из 3 блоков rwx:

rwxrwxrwx

Если какая-либо возможность отключена, то вместо соответствующего символа в блоке ставится прочерк, например: rw-rw-r--

  • Первый блок rwx определяет права доступа для владельца-пользователя.
  • Второй блок rwx определяет права доступа для владельца-группы.
  • Третий блок rwx определяет права доступа для всех остальных.

Владелец-пользователь

У каждого файла в Linux есть владелец-пользователь (также обозначается как user или owner). По умолчанию, тот, кто создал файл, становится его владельцем.

Первый блок rwx в наборе разрешений файла задет разрешения именно для данного пользователя.

Владелец-группа

У каждого файла в Linux есть владелец-группа (group). Звучит немного странно, но сейчас объясню. Каждая группа в Linux может содержать несколько пользователей. Все пользователи, принадлежащие группе, будут иметь одинаковые права доступа к данному файлу.

Например, у вас есть проект, в котором задействовано несколько работников. Вы можете создать для них группу, например — projectx. Для файлов этого проекта вы устанавливаете группу projectx и запрещаете доступ для всех остальных. Таким образом, только работники проекта (которые входят в группу projectx) смогут иметь доступ к этим файлам, а все остальные нет.

Второй блок rwx в наборе разрешений файла задает разрешения именно для данной группы.

Все остальные

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

Третий блок rwx в наборе разрешений файла задает разрешения для этих пользователей.

Для изменения прав доступа у файлов и директорий служит команда chmod.

Подытожим

Для каждого файла или директории в Linux задаются права доступа. Они задаются тремя атрибутами: набором разрешений, именем владельца, именем группы.

Набор разрешений — это три блока прав доступа: права доступа для владельца файла, права доступа для группы, права доступа для всех остальных.

Разрешения записываются символами r, w, x.

Набор разрешений состоит из трех блоков и записывается в виде трех rwx, записанных друг за другом в виде одного «слова».

Если какая-либо возможность отключена (запрещена), то вместо соответствующего символа в наборе разрешений ставится прочерк (символ минус).

Обозначение прав доступа

Теперь можно еще раз рассмотреть пример вывода команды ls -l. Данная команда выводит список файлов в директории и показывает права доступа к файлам.

Как вы можете видеть, для файла myfile.sh установлены права доступа -rw-rw-r--, владельцем файла является пользователь yuriy и владелец-группа yuriy. Здесь нужно пояснить, что большинство Linux дистрибутивов для каждого пользователя создают группу с таким же названием, как и имя пользователя. В нашем примере как раз такой случай — пользователь yuriy добавлен в группу yuriy.

Первый символ в правах доступа это флаг. В примерах выше, он также использовался. В нашем случае это прочерк (символ минус). Технически он не задает права доступа, но используется, как первый символ в обозначении прав доступа. Для файлов он принимает значение «-», для директорий значение «d», а для ссылок значение «l».

Далее следуют три блока прав доступа.

rw-rw-r--

  • Первый блок задает права для пользователя yuriy (он владелец файла). Он может читать и изменять файл, но не может запускать файл.
  • Второй блок задает права для группы yuriy. Члены группы yuriy могут читать и изменять файл, но не могут запускать файл.
  • Третий блок задает права доступа для всех остальных. Все остальные пользователи (не yuriy и те кто не входит в группу yuriy) могут только читать файл.

Как изменить права доступа к файлу в linux

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
.

Как найти файлы и каталоги в Linux

Обновлено: 30.11.2020 компанией Computer Hope

В операционных системах Linux команду find можно использовать для поиска файлов и каталогов на вашем компьютере. Чтобы продолжить, выберите ссылку из следующего списка или просмотрите каждый раздел по порядку.

Базовая функциональность find

Запуск find без каких-либо опций создает список всех файлов и каталогов внутри и ниже рабочего каталога. Например, если ваш рабочий каталог - / home / hope / Documents , запуск find выводит следующее:

  • Каждый файл в / home / hope / Documents .
  • Все подкаталоги в / home / hope / Documents .
  • Каждый файл в каждом из этих подкаталогов.

Давайте посмотрим на это в действии. Сначала давайте проверим наш рабочий каталог с помощью команды pwd:

 pwd 
 / на главную / надежда / Документы 

Теперь запустим find без опций:

 найти 
. ./изображений ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

В этом примере мы видим в общей сложности десять файлов и четыре подкаталога в нашей папке Documents и ниже.

Обратите внимание, что выходные данные начинаются с одной точки, которая представляет рабочий каталог.Запуск find без параметров - это то же самое, что указание того, что поиск должен начинаться в рабочем каталоге, например:

 находка. 

Пример выше - «правильный» способ использования find . Если вы попытаетесь использовать его в другой Unix-подобной операционной системе, такой как FreeBSD, необходимо указать каталог. Хорошая практика - использовать эту форму команды.

Указание, где искать

Чтобы вывести список только файлов и подкаталогов, содержащихся в каталоге / home / hope / Documents / images , укажите первый аргумент команды как:

 найти / главная / надежда / документы / изображения 
 / главная / надежда / Документы / изображения / home / hope / Documents / images / hp / главная / надежда / документы / изображения / hp / snape.jpg /home/hope/Documents/images/hp/harry.jpg / главная / надежда / Документы / изображения / мемы /home/hope/Documents/images/memes/winteriscoming.jpg /home/hope/Documents/images/memes/goodguygary.JPG /home/hope/Documents/images/memes/picard.jpg 

Обратите внимание, что в результатах также отображается полный путь.

Если наш рабочий каталог - / home / hope / Documents , мы можем использовать следующую команду, которая находит те же файлы:

 наход. / Изображения 

Но на этот раз вывод отражает начальное местоположение поиска и выглядит так:

./изображений ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg 

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

Например, указав -maxdepth 1 выполняет поиск только в каталоге, в котором начинается поиск.Если какие-либо подкаталоги найдены, они отображаются в списке, но не просматриваются.

 находка. -максглубина 1 
. ./изображений ./bigfiles.txt ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./archlinux-2016.02.01-dual.iso 

Указание -maxdepth 2 ищет каталог и один подкаталог в глубине:

 находка. -максглубина 2 
. ./изображений ./images/hp ./images/memes ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./hp-fanfic/malfoys-revenge.док ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

Указание -maxdepth 3 поиск на один уровень глубже этого:

 находка. -максглубина 3 
. ./изображений ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./ hp-fanfic ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

Нахождение по названию

Чтобы ограничить результаты поиска только файлами и каталогами с определенным именем, используйте опцию -name и поместите имя в кавычки:

 находка. -name "picard.jpg" 
 ./images/memes/picard.jpg 

Вы также можете использовать подстановочные знаки как часть имени файла.Например, чтобы найти все файлы, имя которых заканчивается на .jpg , вы можете использовать звездочку для обозначения остальной части имени файла. Когда вы запускаете команду, оболочка заменяет имя файла всем, что соответствует шаблону:

 находка. -name "* .jpg" 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/picard.jpg 

Обратите внимание, что наша команда не перечислила файл с расширением (в данном случае JPG ) заглавными буквами.Это потому, что в отличие от других операционных систем, таких как Microsoft Windows, имена файлов Linux чувствительны к регистру.

Чтобы вместо этого выполнить поиск без учета регистра, используйте параметр -iname :

 находка. -iname "* .jpg" 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg 

Поиск только файлов или только каталогов

Чтобы перечислить только файлы и исключить имена каталогов из результатов, укажите -type f :

 находка.-типа f 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

Чтобы перечислить только каталоги и опустить имена файлов, укажите -type d :

 находка. -типа d 
. ./изображений ./images/hp ./images/memes ./hp-fanfic 

Поиск файлов по размеру

Чтобы отображать только файлы определенного размера, вы можете использовать параметр -размер . Чтобы указать размер, используйте знак плюс или минус (для «больше чем» или «меньше чем»), число и количественный суффикс, например k , M или G .

Например, чтобы найти файлы размером «более 50 килобайт», используйте -size + 50k :

 находка.-размер + 50к 
 ./images/memes/winteriscoming.jpg ./gimp-2.8.16.tar.bz2 ./archlinux-2016.02.01-dual.iso 

Для файлов размером более 10 мегабайт используйте -size + 10M :

 находка. -размер + 10М 
 ./gimp-2.8.16.tar.bz2 ./archlinux-2016.02.01-dual.iso 

Для «более 1 гигабайта» используйте -size + 1G :

 находка. -размер + 1G 
 ./archlinux-2016.02.01-dual.iso 

Для файлов определенного диапазона размеров используйте два параметра -size .Например, чтобы найти файлы «больше 10 мегабайт, но меньше 1 гигабайта», укажите -size + 10M -size -1G :

 находка. -размер + 10M -размер -1G 
 ./gimp-2.8.16.tar.bz2 

Поиск файлов на основе модификации, доступа или изменения статуса

Параметр -mtime ограничивает поиск количеством дней с момента изменения содержимого файла. Чтобы указать прошедшие дни, используйте отрицательное число. Например, чтобы найти только те файлы, которые были изменены за последние два дня (48 часов назад), используйте -mtime -2 :

 находка.-mtime -2 

Параметр -mmin делает то же самое, но в минутах, а не в днях. Например, эта команда показывает только файлы, измененные за последние полчаса:

 находка. -ммин -30 

Аналогичная опция - -ctime , которая проверяет время последнего изменения статуса файла в днях. Изменение статуса - это изменение метаданных файла. Например, изменение прав доступа к файлу - это изменение статуса.

Параметр -cmin выполняет поиск изменения состояния, измеряемого в минутах.

Вы также можете найти, когда к файлу в последний раз обращались, другими словами, когда его содержимое просматривалось в последний раз. Параметр -atime используется для поиска файлов на основе времени их последнего доступа, измеряемого в днях.

Параметр -amin выполняет то же ограничение поиска, но измеряется в минутах.

Перенаправление вывода в текстовый файл

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

 находка. -iname "* .jpg"> images.txt 

Затем вы можете открыть свои результаты в текстовом редакторе или распечатать их с помощью команды cat .

 кот images.txt 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg 

В качестве альтернативы вы можете передать свой вывод команде tee , которая выводит вывод на экран и записывает его в файл:

 находка.размер + 500M | тройник bigfiles.txt 
 ./archlinux-2016.02.01-dual.iso 
 кот bigfiles.txt 
 ./archlinux-2016.02.01-dual.iso 

Подавление сообщений об ошибках

При выполнении поиска может появиться сообщение об ошибке «В доступе отказано». Например, если вы выполняете поиск в корневом каталоге как обычный пользователь:

 найти / 
 найти: `/ var / lib / sudo / ts ': в доступе отказано find: `/ var / lib / sudo / lectured ': в доступе отказано find: `/ var / lib / polkit-1 ': в доступе отказано find: `/ var / lib / container ': в доступе отказано найти: `/ var / lib / gdm3 /.dbus ': в доступе отказано find: `/var/lib/gdm3/.config/ibus ': В доступе отказано ... 

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

Если все, что вам нужно сделать, это скрыть сообщение «Permission denied»

.

.net - Как я могу узнать, имеет ли моя программа право создавать файл в каталоге?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
.

linux - Как загрузить файл с сервера по SSH?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Смотрите также