Поиск по сайту:

Учебное пособие по командам Linux Chown для начинающих (12 примеров)


На этой странице

  1. Объяснение команды chown Linux
  2. Q1. Как изменить владельца файла?
  3. Вопрос 2. Как изменить группу файла?
  4. Вопрос 3. Как изменить владельца и группу файла?
  5. Q4. Как изменить владельца или группу (или обоих) после проверки существующего владельца/группы?
  6. В5. Как выбрать информацию о владельце/группе из справочного файла?
  7. Q6. Как заставить chown работать с файлами и каталогами рекурсивно?
  8. Q7. Как заставить chown подавлять сообщения об ошибках?
  9. Q8. Как изменить принадлежность группы на группу входа указанного пользователя?
  10. Q9. Как chown работает с символическими ссылками?
  11. Q10. Как изменить владельца и группу для каталога?
  12. Q11. Можно ли использовать UID и GID вместо имен пользователей и групп?
  13. Q12. Как заставить chown отображать детали операции на выходе?
  14. Заключение

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

Прежде чем мы начнем с руководства по команде chown, стоит упомянуть, что все примеры и инструкции, упомянутые здесь, были протестированы на Ubuntu 22.04 LTS и Debian 11.

Объяснение команды chown в Linux

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

chown [OPTION]... [OWNER][:[GROUP]] FILE...

Вот что говорит об этом справочная страница инструментов:

If only  an  owner  (a user  name or numeric user ID) is given, that user is made the owner of each
given file, and the files' group is not changed.  If the owner  is followed  by  a  colon  and a
group name (or numeric group ID), with no spaces between them, the group ownership of the  files  is
changed  as well.  If a colon but no group name follows the user name, that user is made the owner
of the files and the group of the files  is  changed  to that  user's  login  group. If the colon
and group are given, but the owner is omitted, only the group of the files is changed; in this case,
chown  performs  the same function as chgrp.  If only a colon is given, or if the entire operand is
empty, neither the owner nor the  group  is changed.

Следующие примеры типа вопросов и ответов дадут вам хорошее представление о том, как работает команда chown:

Q1. Как изменить владельца файла?

Рассмотрим следующий пример:

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

chown root file1

Следующий снимок экрана подтверждает, что теперь владелец изменен на root.

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

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

chown :[group-name] [file-name]

Итак, предположим, что требуется изменить группу file1 на root. Тогда команда будет такой:

chown :root file1

На следующем снимке экрана показано, что группа была успешно изменена с himanshu на root.

Примечание. Если вам интересно, почему использовалась команда sudo, или если вы новичок в sudo, вам следует сначала изучить наш учебник по этому инструменту.

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

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

chown [new-owner]:[new-group] [file-name]

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

chown himanshu:himanshu file1

На следующем снимке экрана показана вышеуказанная команда в действии:

Q4. Как изменить владельца или группу (или обоих) после проверки существующего владельца/группы?

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

chown --from=[curr-own]:[curr-group] [new-owner]:[new-group] [filename]

Например:

chown --from=root:himanshu himanshu:root file1

Приведенная выше команда проверит, является ли существующий владелец root, а группа — himanshu. Если да, то владелец сменится на himanshu, а группа станет корневой.

Q5. Как выбрать информацию о владельце/группе из справочного файла?

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

chown --reference=[ref-file-name] [filename]

Например:

chown --reference=file2 file1

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

Q6. Как заставить chown работать с файлами и каталогами рекурсивно?

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

chown -R [new-owner]:[new-group] [directory-name-or-path]

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

Q7. Как заставить chown подавлять сообщения об ошибках?

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

chown --from=himanshu:himanshu himanshu:root file4

выдал следующую ошибку:

chown: cannot access 'file4': No such file or directory

Теперь предположим, что требуется, чтобы инструмент не отображал такие ошибки. Затем это можно сделать с помощью параметра командной строки -f.

Вышеупомянутый снимок экрана подтверждает, что параметр командной строки -f подавляет ошибки/предупреждения.

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

Это можно сделать с помощью синтаксиса [пользователь/владелец]:. Например, следующая команда:

chown himanshu: file1

Убедитесь, что право собственности передано himanshu, а группа будет изменена на группу входа в систему himanshu. Обратите внимание, что это отличается от случая, когда двоеточие (:) не используется, поскольку в этом случае (объяснено в вопросе 1 выше) группа остается неизменной.

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

chown : file1

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

Q9. Как chown работает с символическими ссылками?

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

Например, на снимке экрана ниже показано, что я создал символическую ссылку link1, права пользователя и группы которой установлены на himanshu. Затем я выполнил команду chown, чтобы изменить пользователя и группу на root. Но команда не повлияла на файл символической ссылки — вместо этого его файл1 (на который указывает символическая ссылка), права пользователя и группы которого были изменены.

Однако при желании вы можете переопределить это поведение по умолчанию с помощью параметра -h.

Q10. Как изменить владельца и группу для каталога?

Так же, как вы делаете это для файлов. Ниже приведен пример:

chown root:root ./test-dir/

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

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

  File: test-dir
  Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: 808h/2056d    Inode: 11928001    Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-08-07 10:31:04.867467573 +0530
Modify: 2018-08-07 10:30:53.651807123 +0530
Change: 2018-08-07 10:32:49.644427930 +0530
 Birth: -

Обратите внимание, что если вы вносите рекурсивные изменения (обратитесь к вопросам и ответам, где обсуждается параметр -R) и имеете дело с символическими ссылками, в вашем распоряжении есть следующие варианты:

       The following options modify how a hierarchy is traversed when  the  -R
       option  is  also  specified.   If  more than one is specified, only the
       final one takes effect.

       -H     if a command line argument is a symbolic link  to  a  directory,
              traverse it

       -L     traverse every symbolic link to a directory encountered

       -P     do not traverse any symbolic links (default)

Q11. Можно ли использовать UID и GID вместо имен пользователей и групп?

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

Например:

chown 1000:1000 file1

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

Q12. Как заставить chown отображать детали операции на выходе?

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

Например, эта команда:

sudo chown howtoforge:howtoforge link1 -v

производит следующий вывод:

changed ownership of 'link1' from root:root to howtoforge:howtoforge

Теперь есть еще одна опция -c, которая также действует как -v, только не отображает никаких подробностей, когда ничего не меняется.

Заключение

Команда chown, как, вероятно, согласится большинство из вас, не сложна в использовании. Что еще лучше, так это команда cd. В случае каких-либо сомнений или вопросов, оставьте комментарий ниже.