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

Обновлено: 03.07.2024

Получите полный доступ к Running Linux, Third Edition и более чем 60 000 другим играм с бесплатной 10-дневной пробной версией O'Reilly.

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

Как мы уже говорили, большую часть времени вы можете обойтись системой безопасности по умолчанию. Но всегда есть исключения, особенно для системных администраторов. В качестве простого примера предположим, что вы создаете каталог в /home для нового пользователя. Вы должны создать все как root, но когда вы закончите, вы должны изменить права собственности на пользователя; в противном случае этот пользователь не сможет использовать файлы! (К счастью, если вы используете команду adduser, описанную в разделе 5.7.5 главы 5, она позаботится о владении за вас.)

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

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

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

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

Синтаксис для изменения разрешений более сложен. Разрешения также можно назвать «режимом» файла, а команда, которая изменяет разрешения, называется chmod. Давайте начнем изучение этой команды с простого примера; скажем, вы написали аккуратную программу на Perl или Tcl с именем header и хотите иметь возможность ее выполнить. Вы должны ввести следующую команду:

Знак "плюс" означает "добавить разрешение", а x указывает, какое разрешение добавить.

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

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

Все, что стоит перед знаком плюс, – это уровень разрешения, а все, что следует после – тип разрешения. Разрешение пользователя (для себя) — u, разрешение группы — g, а другое — o. Итак, чтобы назначить разрешение как себе, так и группе файла, введите:

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

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

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

Чтобы понять абсолютный режим, вы должны мыслить с точки зрения битов и восьмеричной системы счисления. Не волнуйтесь, это не слишком сложно. Типичный режим содержит три символа, соответствующие трем уровням разрешений (пользователь, группа и другие). Эти уровни показаны на рис. 4-3. На каждом уровне есть три бита, соответствующие разрешению на чтение, запись и выполнение.

Биты в абсолютном режиме

Рисунок 4-3. Биты в абсолютном режиме

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

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

Это похоже на использование режима +r , за исключением того, что одновременно удаляется любое разрешение на запись или выполнение. (Если быть точным, это похоже на режим =r , о котором мы не упоминали ранее. Знак равенства означает «назначить эти права и никаких других».)

Чтобы дать разрешение на чтение и выполнение всем, вы должны сложить биты чтения и выполнения. Например, 400 плюс 100 равно 500.

Таким образом, соответствующая команда:

то же самое, что =rx . Чтобы предоставить кому-либо полный доступ, вы должны указать эту цифру как 7 — сумму 4, 2 и 1.

И последний трюк: как установить режим по умолчанию, который назначается каждому файлу, который вы создаете (с помощью текстового редактора, оператора перенаправления > и т. д.). Вы делаете это, выполняя команду umask или помещая ее в файл запуска вашей оболочки. Этот файл может называться .bashrc , .cshrc или как-то еще в зависимости от используемой вами оболочки (мы обсудим файлы запуска в следующем разделе).

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

Например, вы хотите, чтобы у вас были все разрешения (7), у вашей группы были разрешения на чтение и выполнение (5), а у других не было разрешений (0). Вычтите каждый бит из 7, и вы получите 0 для себя, 2 для своей группы и 7 для других. Итак, команда для включения в ваш файл запуска:

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

Получите Running Linux, Third Edition прямо сейчас с онлайн-обучением O’Reilly.

Члены O’Reilly проходят онлайн-обучение в режиме реального времени, а также получают книги, видео и цифровой контент от более чем 200 издателей.

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

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

Команда chgrp имеет следующий вид:

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

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

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

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

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

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

Если вы запустите команду от имени непривилегированного пользователя, вы получите сообщение об ошибке «Операция не разрешена». Чтобы скрыть сообщение об ошибке, вызовите команду с параметром -f. По умолчанию в случае успеха chgrp ничего не выводит и возвращает ноль.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Синтаксис:

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

Пример 1. Чтобы изменить групповое владение файлом.


Здесь имя группы файла abc.txt было изменено с kcVirtual на geeksforgeeks. Обратите внимание, что при создании файлов групповое имя файла совпадает с именем владельца, под которым файл был создан.

Пример 2. Изменение группового владельца папки.


Пример 3. Рекурсивное изменение группового владельца папки и всего ее содержимого.


Как мы видим, группа папки GFG и ее содержимое F1, F2 изначально были kcvirtual и были изменены на < em>geeksforgeeks с помощью одной команды.

Пример 4. Использование имени группы исходного файла для изменения группы другого файла или папки.


имя_группы эталонного файла abc.txt использовалось для рекурсивного изменения группы папки GFG и всего ее содержимого с помощью –reference вариант.

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

Пример:

Пример:

Пример:

Пример:


Здесь файл symbolic_link является файлом_ссылки для файла f1. С опцией –разыменование имя группы фактического файла, на который указывает символическая_ссылка, изменяется.

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

На разных примерах мы попробуем рассмотреть различные варианты использования команды chown. Команда Chown использует довольно простой и понятный синтаксис.

$ chown ОПЦИИ ПОЛЬЗОВАТЕЛЬ: СГРУППИРОВАТЬ файлы

Давайте кратко остановимся на параметрах:

Атрибут USER относится к имени пользователя, которому будет принадлежать файл. Вы можете указать либо имя пользователя, либо UID (User ID). Между тем, опция GROUP указывает имя новой группы, которую файл получит после выполнения команды. Параметр file представляет собой обычный файл, каталог или даже символическую ссылку. Это три объекта, чьи разрешения можно изменить.

Несколько замечаний:

1) Когда указана только опция USER, право собственности на файл/каталог изменяется на право собственности указанного пользователя, в то время как право собственности группы остается неизменным. Вот пример:

В приведенной выше команде право собственности на файл file1.txt меняется с текущего пользователя на пользователя john.

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

В этом примере пользователь john становится владельцем файла file1.txt, но групповое владение файлом меняется на группу пользователя john.

3) Если параметры пользователя и группы указаны через двоеточие, например, ПОЛЬЗОВАТЕЛЬ:ГРУППА (без пробелов), файл становится владельцем нового пользователя и группы, как указано

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

4) Если параметр USER опущен, а вместо параметра group стоит полное двоеточие :GROUP, тогда изменяется только групповое владение файлом.

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

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

list- файловые разрешения-linux

Из вывода видно, что файл принадлежит пользователю linuxtechi, который принадлежит к группе linuxtechi в 3-м и 4-м столбцах соответственно.

Как изменить владельца файла с помощью команды chown

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

Чтобы изменить владельца файла, используйте следующий синтаксис:

$ sudo chown имя файла пользователя

Change-file-owner-linux-chown-command

Из вывода ясно видно, что право собственности на файл изменилось с linuxtechi на пользователя james .

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

Из приведенного ниже примера видно, что UID пользователя linuxtechi равен 1002

uid- команда-файл-linux

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

 chown-uid-linux-file-command

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

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

$ sudo chown :групповой файл

Например, чтобы изменить владельца группы file1.txt с linuxtechi на docker , мы выполнили команду:

Changing-group-owner-chown-linux-command

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

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

$ sudo chown пользователь:имя файла группы

Например, следующая команда изменяет владельца файла file1.txt на пользователя james и группу redis, что подтверждается с помощью команды ls.

change-file-group-owner-chown-command

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

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

$ sudo chown -R пользователь:каталог группы

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

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

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

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

Синтаксис показан ниже:

$ chown –reference=ref_file файл

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

 linux-chown-reference-command-example

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

Заключение

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

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