Как узнать владельца файла в linux

Обновлено: 02.07.2024

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

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

Команда chown Linux

1. Синтаксис и опции

Синтаксис chown, как и других подобных команд linux очень прост:

$ chown пользователь опции /путь/к/файлу

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

Утилита имеет ещё несколько опций, но это самые основные и то большинство из них вам не понадобится. А теперь давайте посмотрим как пользоваться chown.

2. Использование chown

Например, у нас есть несколько папок dir и их владелец пользователь sergiy:

Давайте изменим владельца папки dir1 на root:

chown root ./dir1

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

chown root:root ./dir2

Если вы хотите чтобы изменения применялись не только к этому каталогу, но и ко всем его подкаталогам, добавьте опцию -R:

chown -R root:root ./dir3

Дальше давайте изменим группу и владельца на www-data только для тех каталогов и файлов, у которых владелец и группа root в каталоге /dir3:

chown --from=root:root www-data:www-data -cR ./

Для обращения к текущему каталогу используйте путь ./. Мы его использовали и выше. Далее указываем нужную группу с помощью опции --from и просим утилиту выводить изменения, которые она делает в файловой системе с помощью опции -c.

Выводы

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

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

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

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

Прежде, чем двигаться далее, советую прочитать первую статью (если Вы этого не сделали, конечно) данного цикла про навигацию в терминале.

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

Для того, чтобы просмотреть права доступа на файлы и каталоги в нужной директории, переходим в неё и выполняем команду:

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

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

Слева отображены права доступа на файл и директорию вида:

Чуть ниже подробно разберём это "непонятную" надпись, а пока двигаемся дальше.

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

Вот как это выглядит:

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

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

Выглядит это следующим образом:

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

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

либо ввести каталог:

Выглядит это следующим образом:

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

Расшифровка "символьной формы" прав доступа на каталоги и файлы в Linux.

Будем использовать в качестве примера в этом пункте.

Это символьная форма прав доступа в Linux. Давайте разберем её подробно.

Первый символ обозначает тип данных.

Данный символ может быть следующим:

В большинстве случаев это будет:

- обычный файл;
d директория/каталог/папка (directory);
l символическая ссылка (link).

Но может быть следующим:

b файл блочного устройства (block);
c файл символьного устройства;
s доменное гнездо (socket);
p именованный канал (pipe).

Следовательно, в нашем случае это директория (каталог, папка).

Следующие 9 символов обозначают права доступа.

Данные 9 символов состоят из трех групп:

  • Первая группа из трех символов обозначает права доступа владельца файла или директории (u - user).
  • Вторая группа из трех символов обозначает права доступа на файл или директорию для системной группы (g - group).
  • Третья группа из трех символов обозначает права доступа на файл или директорию для всех остальных (o - other).

У этих трёх групп одинаковая комбинация символов, то есть:

Что же они обозначают?

Очень легко запомнить:

r read, то есть, право доступа на чтение файла или директории.
w write, то есть, право на изменение и удаление файла или директории.
x eXecute, то есть, право на запуск файла как программы или вход в директорию.

Всегда располагаются в таком порядке:

Если вместо какого-то символа идёт тире (минус), к примеру:

то это значит, что отсутствуют права на изменение и удаление файла или директории.

то это обозначает, что отсутствуют права на изменение и запуск файла или директории. Доступен только просмотр.

Таким образом, из нашего примера:

Как видите, ничего сложного нет.

Определение владельца и группы файла или директории.

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

Те же самые команды из первого пункта:

Определение владельца и группы файла или директории

Как видно на скриншоте:

  • в третей колонке идет имя владельца файла;
  • в четвертой колонке идет название группы.

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

В Nautilus (файловом менеджере Ubuntu), можно нажать правой кнопкой мыши на файле, открыть свойства, перейти на вкладку "Права" и увидеть:

Определение владельца и группы файла или директории

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

Подробно разобрали просмотр прав доступа на файлы и каталоги Linux.

Теперь приступим к их изменению в терминале.

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

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

Вместо persons нужно использовать совокупность символов или один из:

u user, пользователь, владелец файла или директории.
g group, группа файла или директории.
o other, все другие.
a all, то есть, все вместе взятые - владелец, группа и все остальные.

Этот символ обозначает субъект, которому будут назначены, удалены или изменены права.

Вместо Operator, может быть один из следующих символов:

+ "плюс", добавляем нужные права.
- "минус", удаляем нужные права.
= "равно", устанавливаем нужные права.

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

Вместо Rights перечисляем символы прав доступа:

r read - чтение.
w write - запись.
x eXecute - выполнение.

Важно замечание.

Здесь идёт цепочка из трёх перечисленных символов, но в определённом порядке rwx. Но при этом, не нужно указывать тире для пропуска. Примеры: rwx, rw, wx, rx, r, w, x.

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

Для рекурсивного изменения прав в каталоге используется параметр -R.

То есть, если нужно изменить права всех файлов и папок внутри указанной нами директории, то после chmod просто указываем параметр -R. Выглядит это следующим образом:

Важно.

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

Приступим к практике. Разберём примеры.

1. Убираем права для группы на изменение файла:

Убираем права для группы на изменение файла

2. Убираем права на чтение у группы и всех остальных:

Убираем права для группы на изменение файла

3. Добавим для группы права на чтение и изменение:

Убираем права для группы на изменение файла

4. Изменим рекурсивно права на файлы и директории внутри нужной директории. Отменим, к примеру, все права у остальных пользователей и групп:

Убираем права для группы на изменение файла

Вы, наверное, зачастую видели команду:

Это значит, что мы даём права на выполнение данного файла как программы всем.

Это аналогично следующим командам:

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

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

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

Думаю, что многие из вас видели на форумах или сайтах о Linux советы по изменению прав, вида:

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

Давайте разберем, что же значат эти цифры.

Итак, у нас есть комбинация прав доступа на директорию:

А теперь делим на группы:

Теперь преобразуем в двоичном виде наши права доступа:

  • если есть символ, то это 1.
  • если тире (пропуск), то это 0.

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

А теперь переведем из двоичной в восьмеричную систему исчисления:

Вот и получили наше "магическое" число 775.

Более проще запомнить:

r это 4
w это 2
x это 1

Каждая цифра обозначает определенную группу:

  • Первая цифра - права для владельца,
  • вторая цифра - права для группы,
  • третья цифра - права для остальных.

Просто прибавляем цифры. К примеру, нам нужно чтение r и изменение w. Прибавляем 4+2, получаем 6.

Если хотим выдать полные права только владельцу файла, а остальным убрать все:

Изменение прав доступа на файлы и каталоги в абсолютном режиме

Вот так меняются права в абсолютном (числовом) режиме.

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

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

Используется следующий шаблон выполнения данной команды chown:

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

Если хотим изменить только владельца, то шаблон следующий:

В принципе, ничего сложного.

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

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

Получить список пользователей:

Получить группы конкретного пользователя (вместо user_name ввести имя пользователя):


Мануал

Это руководство поможет вам получить список владельцев всех файлов в каталоге Linux.

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

Статья основана на Ubuntu 18.04, 16.04 и CentOS 7.

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

Список владельцев файлов в каталоге с помощью команды stat

В Ubuntu и во всех системах на базе Debian команда stat предоставляется пакетом coreutils.

Если по какой-либо причине этот пакет не установлен, его можно установить с помощью команды:

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

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

-c: указать формат
% U: Формат для печати имени пользователя владельца файла

Таким образом, синтаксис команды:

Для всех файлов используйте знак подстановки *.

См. Примеры ниже:

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

Нам нужно будет использовать bash для сопоставления файла и владельца.

Итак, мы запустим команду, как показано ниже:

Вывод для выше будет в формате <файл> <владелец>, который должен быть легко интерпретирован.

Вы можете узнать больше о команде stat

Список владельцев файлов в каталоге с помощью команды find

С помощью команды find вы можете указать владельцев файлов в каталоге

Точный синтаксис команды для использования:

Это действие будет делать рекурсивный поиск и листинг по умолчанию.

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

Для этого проведите вывод команды сортировки с параметром -u

Чтобы включить владение файловой группой, добавьте параметр% g в функцию вывода.

В приведенном ниже примере будут показаны все уникальные имена пользователей, хранящиеся в каталоге / var /

См. Следующий пример для имен пользователей и групп:

Использование команды ls

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

Единственная проблема заключается в том, как обрабатывать вывод

Три команды должны помочь вам идентифицировать владельцев файлов и каталогов на ваших машинах Linux.

Андрей Волков

Права и привелегии в Linux

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

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

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

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

Владельцем файла всегда является один человек, тогда как в группу владельцев могут входить несколько пользователей. По традиции информация о группах хранилась в фай­ле /etc/group , но теперь ее чаще хранят на сетевом сервере NIS или LDAP.

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

Узнать идентификаторы владельцев файла можно с помощью команды ls -l имя_файла . Например:

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

Операционная система Linux отслеживает не имена владельцев и групп, а их иден­тификаторы. В самом общем случае идентификаторы пользователей (сокращенно UID — User ID) и соответствующие им имена хранятся в файле /etc/passwd , а иден­тификаторы и названия групп находятся в файле /etc/group . Текстовые эквиваленты идентификаторов определяются исключительно для удобства пользователей. Чтобы команда вроде ls могла вывести информацию о принадлежности файла в удобочитае­мом виде, она должна просмотреть базу данных идентификаторов и найти в ней нужные имена.

Владелец может посылать процессу сигналы, а также по­нижать его приоритет. С процессорами связаны, по меньшей мере, семь идентификато­ров: реальный, эффективный и сохраненный идентификатор пользователя, реальный, эффективный и сохраненный идентификатор группы, и, в системе Linux — “идентифи­катор пользователя файловой системы”, который используется только для определения прав доступа к файлам. Вообще говоря, реальные номера применяются для учета ис­пользования системных ресурсов, а эффективные — для указания прав доступа. В боль­шинстве случаев реальные и эффективные идентификаторы совпадают.

Сохраненные идентификаторы не оказывают никакого непосредственного влияния. Они позволяют программам “приберегать” неактивные идентификаторы для последую­щего использования, тем самым способствуя расчетливому применению расширенных полномочий. Вообще говоря, идентификатор пользователя файловой системы — это особенность реализации файловой системы NFS, и обычно он совпадает с эффектив­ным идентификатором пользователя.

Процесс не может явно изменить ни один из своих идентификаторов, но есть особая ситуация, когда новые эффективные идентификаторы устанавливаются косвенно. Дело в том, что существуют два специальных бита, устанавливаемых в маске прав доступа к файлу: “ setuid ” (Set User ID — бит смены идентификатора пользователя) и “ setgid ” (Set Group ID — бит смены идентификатора группы). Если запускается исполняемый файл, у которого установлен один из этих битов, то эффективными идентификаторами соз­даваемого процесса становятся идентификаторы владельца файла, а не идентификато­ры пользователя, запустившего программу. Смена полномочий действительна только на время работы программы.

Бит “ setuid ” позволяет рядовым пользователям запускать программы, выполняющие жестко регламентированные административные действия. Например, команда passwd, с помощью которой пользователь меняет свой пароль, обращается к файлу /etc/shadow (или /etc/passwd ), принадлежащему суперпользователю, вследствие чего у нее уста­новлен бит “setuid”. Она модифицирует файл строго определенным образом и заверша­ется. Конечно, даже столь простое действие может стать причиной злоупотреблений, поэтому, прежде чем внести запрашиваемые изменения, команда passwd проверяет, знает ли пользователь свой текущий пароль.

Читайте также: