Linux изменить группу файла

Обновлено: 07.07.2024

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

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

Эти три свойства можно настроить отдельно для:

  • пользователя (владельца файла)
  • группы
  • всех остальных

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

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

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

Каждый пользователь может быть в одной или более группах.

Команда chown

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

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

Аргумент Результат
bob Меняет владельца файла с текущего на пользователя bob.
bob:users Меняет владельца файла с текущего владельца на пользователя bob и меняет группу владельцев на группу users.
:admins Меняет группу владельцев на группу admins. Владелец файла не меняется.
bob: Меняет владельца файла с текущего на владельца с именем пользователя bob и меняет группу владельцев на группу, с которой совершил вход пользователь bob — обычно это основная группа пользователя.

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


Здесь мы видим, что пользователь root копирует файл из своей домашней директории в директорию пользователя mial. Затем root меняет владельца файла с root (результат использования sudo) на mial. Использование двоеточия без указания имени группы также меняет группу владельцев на основную группу пользователя mial.

Как поменять владельца только для файлов, с определённым владельцем или группой владельцев

Возможно ситуация, когда в директорию, где уже находились файлы, скопировали несколько файлов и нужно изменить владельца и/или группу только для этих файлов, а остальные файлы оставить нетронутыми. В этом случае для фильтрации применяется опция --from=ТЕКУЩИЙ_ВЛАДЕЛЕЦ:ТЕКУЩАЯ_ГРУППА. Эта опция изменяет владельца и/или группу каждого файла только если текущий владелец и/или группа совпадают с указанными. Как группа, так и владелец могут быть опущены; в этом случае совпадение для данного атрибута не обязательно.

Как копировать значения владельцев и группы владельцев

Если вам нужно скопировать значения владельцев и группы владельцев одного файла на другой файл, то используйте опция --reference=ФАЙЛ_ОБРАЗЕЦ. В этом случае вместо указанных значений ВЛАДЕЛЕЦ:ГРУППА будут использоваться владелец и группа ФАЙЛА_ОБРАЗЦА.

Как рекурсивно поменять владельца и группу файлов

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

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

-H

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

-L

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

-P

не переходить по символьным ссылкам (по умолчанию)

Программа chgrp для смены группы владельцев

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

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

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

Синтаксис команды chgrp

Команда chgrp принимает следующую форму:

  • GROUP , имя новой группы или идентификатор группы (GID). Числовой GID должен начинаться с символа + .
  • FILE.. , имя одного или нескольких файлов.

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

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

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

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

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

Например, чтобы изменить группу имени файла filename на www-data вы должны запустить:

Вы также можете передать несколько файлов в качестве аргументов команде chgrp :

Используйте опцию -v чтобы получить информацию об обрабатываемых файлах:

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

Вместо имени пользователя можно использовать числовой идентификатор группы (GID). В следующем примере группа, принадлежащая файлу, изменяется на новую группу с GID 1000:

Как изменить принадлежность группы символических ссылок

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

Например, если вы попытаетесь изменить группу символической ссылки symlink1 которая указывает на /opt/file1 , chgrp изменит владельца файла или каталога, на который указывает символическая ссылка:

Скорее всего, вместо изменения целевой группы вы получите ошибку «невозможно разыменовать символическую ссылку1»: в разрешении отказано ».

Ошибка возникает из-за того, что по умолчанию в большинстве дистрибутивов Linux символические ссылки защищены, и вы не можете работать с целевыми файлами. Этот параметр указан в /proc/sys/fs/protected_symlinks . 1 означает включен, а 0 отключен. Мы рекомендуем не отключать защиту символических ссылок.

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

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

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

Например, следующая команда изменит владельца всех файлов и каталогов в каталоге /var/www на группу www-data :

Если указана рекурсивная опция, chgrp не будет проходить по символическим ссылкам и не будет вносить изменений в символические ссылки. Чтобы изменить групповое владение символическими ссылками, передайте параметр -h :

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

Выводы

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

Хотя вы можете использовать более популярную команду chown для изменения группы, chgrp имеет простой синтаксис, который легко запомнить.

Для получения дополнительной информации о команде chgrp посетите страницу руководства chgrp или введите man chgrp в своем терминале.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Основа философии 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 при копировании материала ссылка на источник обязательна.

Команда Chown в Linux

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

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

Как пользоваться chown

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

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

USER является именем пользователя или идентификатором пользователя (UID) нового владельца. GROUP это имя новой группы или идентификатор группы (GID). FILE(s) это имя одного или нескольких файлов, каталогов или ссылок. Числовые идентификаторы должны начинаться с + символа.
  • USER - Если указан только пользователь, указанный пользователь станет владельцем данных файлов, владение группой не изменится.
  • USER: - Когда за именем пользователя следует двоеточие : , а имя группы не указывается, пользователь становится владельцем файлов, а принадлежность группы файлов изменяется на группу входа пользователя.
  • USER:GROUP - Если указаны и пользователь, и группа (без пробелов между ними), пользовательское владение файлами изменяется на данного пользователя, а групповое владение изменяется на данную группу.
  • :GROUP - Если пользователь не указан, а перед группой стоит двоеточие : , то только группа, владеющая файлами, будет изменена на данную группу.
  • : Если задано только двоеточие : , без указания пользователя и группы, никаких изменений не производится.

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

Используйте ls -l команду, чтобы узнать, кому принадлежит файл или к какой группе принадлежит файл:

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

Как сменить владельца файла

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

Например, следующая команда изменит владельца файла с именем file1 на нового владельца с именем linuxize :


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


Числовой идентификатор пользователя (UID) можно использовать вместо имени пользователя. Следующий пример изменит владельца файла с именем file2 на нового владельца с UID 1000 :


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

Как изменить владельца и группу файла

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

Следующая команда изменит владельца файла с именем file1 на нового владельца с именем linuxize и группой users :

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

Как изменить группу файла

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

Следующая команда изменит группу-владельца файла с именем file1 на www-data :

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

Как изменить владельца символических ссылок

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

Например, если вы попытаетесь изменить владельца и группу символической ссылки, на symlink1 которую указывает ссылка /var/www/file1 , chown изменит владельца файла или каталога, на который указывает символическая ссылка:

Скорее всего, вместо смены целевого владельца вы получите ошибку «невозможно разыменовать symlink1: Permission denied».

Ошибка возникает из-за того, что по умолчанию в большинстве дистрибутивов Linux символические ссылки защищены, и вы не можете работать с целевыми файлами. Эта опция указана в /proc/sys/fs/protected_symlinks . 1 значит включен и 0 отключен. Мы рекомендуем не отключать защиту символических ссылок.

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

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

Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте параметр -R ( --recursive ):

Следующий пример изменит владельца всех файлов и подкаталогов в /var/www каталоге на нового владельца и группу с именем www-data :

Если каталог содержит символические ссылки, передайте -h опцию:

Другими параметрами, которые можно использовать при рекурсивном изменении владельца каталога, являются -H и -L .

Если аргумент, переданный chown команде, является символической ссылкой, указывающей на каталог, эта -H опция заставит команду пройти по ней. -L указывает chown на прохождение каждой символической ссылки в каталог, который встречается. Обычно вы не должны использовать эти параметры, потому что вы можете испортить вашу систему или создать угрозу безопасности.

Использование справочного файла

--reference=ref_file Опция позволяет изменить пользователя и группы владельца указанные файлы , чтобы быть такими же , как в указанном отпечатком ( ref_file ). Если ссылочный файл является символической ссылкой, chown будут использоваться пользователь и группа целевого файла.

Например, следующая команда назначит пользователя и владельца группы file1 для file2

Вывод

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

Чтобы узнать больше о chown команде, посетите страницу руководства chown или введите man chown свой терминал.


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

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

Синтаксис команды chgrp

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

Атрибут group_name представляет собой имя группы, которая станет владельцем файла или каталога (/path). Кроме того, можно указать GID (идентификатор группы) вместо имени группы. В этом случае вам нужно добавить GID со знаком плюс (+).

Изменение группы-владельца файла с помощью команды chgrp

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

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

При изменении группы, которая владеет файлом или каталогом Вы можете столкнуться с ошибкой chgrp operation not permitted. Эта ошибка указывает на то, что пользователь, от которого Вы выполняете команду, не имеет достаточных прав для изменения владельца файла.


Решенением этой проблемы будет запуск команды с sudo (конечно, Ваш пользователь должен обладать такими привелегиями):

Введите пароль пользователя, когда у Вас его спросит система, и в итоге права применятся.

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

Как рекурсивно изменить группу-владельца на файл или директорию в Linux

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

Изменение группы-владельца у символических ссылок

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

Заключение

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

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

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