- Команда Chown в Linux (владение файлом)
- Как использовать chown
- Как изменить владельца файла
- Как изменить владельца и группу файла
- Как изменить группу файла
- Как изменить право собственности на символические ссылки
- Как рекурсивно изменить право собственности на файл
- Использование справочного файла
- Выводы
- How to Use chown Command to Change Ownership in Linux
- Examples of chown command in Linux
- 1. Change or set the user ownership of a file
- 2. Change the user and group ownership
- 3. Change the group to default group of a user
- 4. Change the group only
- 5. Change user and group ownership of a directory recursively
- 6. Set the same user and group ownership as a reference file
Команда Chown в Linux (владение файлом)
Команда chown позволяет вам изменить пользователя и / или группу, владеющую данным файлом, каталогом или символической ссылкой.
В Linux все файлы связаны с владельцем и группой и им назначаются права доступа для владельца файла, членов группы и других.
В этом руководстве мы покажем вам, как использовать команду chown на практических примерах.
Как использовать chown
Прежде чем перейти к использованию команды chown , давайте начнем с обзора основного синтаксиса.
Выражения команды chown имеют следующую форму:
chown [OPTIONS] USER[:GROUP] FILE(s)
USER — это имя пользователя или идентификатор пользователя (UID) нового владельца. GROUP — это имя новой группы или идентификатор группы (GID). FILE(s) — это имя одного или нескольких файлов, каталогов или ссылок. Цифровые идентификаторы должны начинаться с символа + .
- USER — Если указан только пользователь, указанный пользователь станет владельцем данных файлов, принадлежность группы не изменится.
- USER: — Если после имени пользователя ставится двоеточие : и имя группы не указано, пользователь становится владельцем файлов, а права собственности группы файлов изменяются на группу входа пользователя.
- USER:GROUP — Если указаны и пользователь, и группа (без пробелов между ними), право собственности пользователя на файлы изменяется на данного пользователя, а право собственности на группу изменяется на данную группу.
- :GROUP — Если пользователь не указан, а группа имеет префикс двоеточия : то для данной группы изменяется только групповое владение файлами.
- : Если указано только двоеточие : без указания пользователя и группы, никаких изменений не производится.
По умолчанию в случае успеха chown не производит никакого вывода и возвращает ноль.
Используйте команду ls -l чтобы узнать, кому принадлежит файл или к какой группе принадлежит файл:
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |[-][-][-]- [------] [---] | | | +-----------> Group +-------------------> Owner
Обычные пользователи могут изменять группу файла только в том случае, если они владеют файлом, и только в группе, членом которой они являются. Пользователи с правами администратора могут изменять групповое владение всеми файлами.
Как изменить владельца файла
Чтобы изменить владельца файла, используйте команду chown за которой следует имя пользователя нового владельца и целевой файл в качестве аргумента:
Например, следующая команда изменит владельца файла с именем file1 на нового владельца с именем linuxize :
Чтобы изменить владельца нескольких файлов или каталогов, укажите их в виде списка, разделенного пробелами. Приведенная ниже команда меняет владельца файла с именем file1 и каталога dir1 на нового владельца с именем linuxize :
chown linuxize file1 dir1
Вместо имени пользователя можно использовать числовой идентификатор пользователя (UID). В следующем примере будет изменено право собственности на файл с именем file2 новому владельцу с UID 1000 :
Если числовой владелец существует как имя пользователя, то право собственности будет передано имени пользователя. Чтобы избежать этого префикса ID с + :
Как изменить владельца и группу файла
Для того, чтобы изменить владельца и группу с использованием файловом chown команды следуют новым владельцем и группой , разделенных двоеточием ( : ) без пробелов и целевого файла.
Следующая команда изменит владельца файла с именем file1 на нового владельца с именем linuxize и сгруппирует users :
chown linuxize:users file1
Если опустить имя группы после двоеточия ( : ) группа файла изменяется на указанного пользователя группы входа в систему :
Как изменить группу файла
Чтобы изменить только группу с использованием файловом chown команды , за которым следует двоеточие ( : ) и новое название группы (без пробела между ними) и целевого файла в качестве аргумента:
Следующая команда изменит группу владельцев файла с именем file1 на www-data :
Еще одна команда, которую вы можете использовать для изменения группового владения файлами, — это chgrp .
Как изменить право собственности на символические ссылки
Когда рекурсивная опция не используется, команда chown изменяет групповое владение файлами, на которые указывают символические ссылки , а не сами символические ссылки .
Например, если вы попытаетесь изменить владельца и группу символической ссылки symlink1 которая указывает на /var/www/file1 , chown изменит владельца файла или каталога, на который указывает символическая ссылка:
Скорее всего, вместо смены целевого владельца вы получите ошибку «невозможно разыменовать символическую ссылку1: разрешение отклонено».
Ошибка возникает из-за того, что по умолчанию в большинстве дистрибутивов Linux символические ссылки защищены, и вы не можете работать с целевыми файлами. Этот параметр указан в /proc/sys/fs/protected_symlinks . 1 означает включен, а 0 отключен. Мы рекомендуем не отключать защиту символических ссылок.
Чтобы изменить групповое владение самой символической ссылкой, используйте параметр -h :
Как рекурсивно изменить право собственности на файл
Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте параметр -R ( —recursive ):
chown -R USER:GROUP DIRECTORY
В следующем примере будет изменено владение всеми файлами и подкаталогами в каталоге /var/www новому владельцу и группе с именем www-data :
Если каталог содержит символические ссылки, передайте параметр -h :
Другие параметры, которые можно использовать при рекурсивном изменении владельца каталога, — это -H и -L .
Если аргумент, переданный команде chown является символической ссылкой, указывающей на каталог, опция -H заставит команду пройти по нему. -L указывает chown по каждой символической ссылке на обнаруженный каталог. Обычно вы не должны использовать эти параметры, потому что вы можете испортить свою систему или создать угрозу безопасности.
Использование справочного файла
Параметр —reference=ref_file позволяет вам изменить права собственности пользователя и группы на данные файлы, чтобы они были такими же, как у указанного справочного файла ( ref_file ). Если справочный файл является символической ссылкой, chown будет использовать пользователя и группу целевого файла.
chown --reference=REF_FILE FILE
Например, следующая команда назначит пользователю и группе владение file1 для file2
chown --reference=file1 file2
Выводы
chown — это утилита командной строки Linux / UNIX для изменения владельца файла и / или группы.
Чтобы узнать больше о команде chown посетите страницу руководства chown или введите man chown в своем терминале.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
How to Use chown Command to Change Ownership in Linux
The chown command in Linux enables you to change the user and group ownership of a file or directory. Learn to use chown with some practical examples.
The chown command in Linux allows you to change the ownership of files and directories. You can rightly guess that ‘chown’ is short for ‘change owner’.
If you are not aware of these terms, I highly recommend reading my explainer article about file permissions and ownership in Linux.
Here’s a picture to quickly recall it:
With the chown command, you can change both user and group ownership of a file or a directory.
Examples of chown command in Linux
Here’s what the syntax for chown command looks like:
chown [options] user_spec files
Do keep in mind that chown is an administrative command and so you need to be root or have sudo rights in order to make changes with chown command. I hope you know how to add sudo user.
Otherwise, you’ll see an error like this:
chown: changing ownership of 'agatha.txt': Operation not permitted
Now let’s see how to use the chown command with examples.
Here’s the example set I am going to use:
-rw-r--r-- 1 abhishek abhishek 456 Jan 24 09:30 agatha.txt drwxr-xr-x 2 abhishek abhishek 4096 Jan 24 09:31 mydir drwxr-xr-x 3 abhishek abhishek 4096 Jan 24 09:30 new -rw-r--r-- 1 abhishek abhishek 356 Jan 24 09:30 sherlock.txt
1. Change or set the user ownership of a file
To change the ownership of a file, use the command in this fashion:
sudo chown user_name file_name
You may also use UID (user ID) instead of the user name. Here’s an example of the changes it makes:
[email protected]:~/tutorial$ sudo chown prakash agatha.txt [email protected]:~/tutorial$ ls -l agatha.txt -rw-r--r-- 1 prakash abhishek 456 Jan 24 09:30 agatha.txt
As you can see the owner of the file has changed to ‘prakash’ from ‘abhishek’ but the group remains ‘abhishek’. Let me show you how to change both user ownership and group ownership.
2. Change the user and group ownership
To change the user and group ownership of a file, you can specify the group with the user name separated by a column like this:
sudo chown user_name:group_name file_name
Of course, you can use UID and GID instead of user name and group name respectively.
[email protected]:~/tutorial$ sudo chown prakash:adm sherlock.txt [email protected]:~/tutorial$ ls -l sherlock.txt -rw-r--r-- 1 prakash adm 356 Jan 24 09:30 sherlock.txt
As you can see in the example above, I changed the user of the file sherlock.txt to ‘prakash’ and the group to ‘adm’.
3. Change the group to default group of a user
Every user has a default or primary group. If the user creates a new file or directory, this primary group automatically becomes the group owner of the file. You can list the default group of a user with the id command.
Now if you want to change the group ownership of a file to the default group of a user, you should just leave the group name after colon.
sudo chown user_name: file_name
As you can see in the example below, sherlock.text file user owner ‘prakash‘ and group owner ‘adm‘. I changed the owner to ‘abhishek’ but didn’t provide the group name. And yet it changed the group from ‘adm’ to default ‘abhishek’ group.
[email protected]:~/tutorial$ ls -l sherlock.txt -rw-r--r-- 1 prakash adm 356 Jan 24 09:30 sherlock.txt [email protected]:~/tutorial$ sudo chown abhishek: sherlock.txt [email protected]:~/tutorial$ id abhishek uid=1000(abhishek) gid=1000(abhishek) groups=1000(abhishek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),999(docker) [email protected]:~/tutorial$ ls -l sherlock.txt -rw-r--r-- 1 abhishek abhishek 356 Jan 24 09:30 sherlock.txt
4. Change the group only
If you just want to change the group without being bothered by the user owner, you can use the chown command like this:
sudo chown :group_name file_name
In the example below, I set the group ownership to sudo without touching the user ownership:
[email protected]:~/tutorial$ ls -l agatha.txt -rw-r--r-- 1 prakash abhishek 456 Jan 24 09:30 agatha.txt [email protected]:~/tutorial$ sudo chown :sudo agatha.txt [email protected]:~/tutorial$ ls -l agatha.txt -rw-r--r-- 1 prakash sudo 456 Jan 24 09:30 agatha.txt
5. Change user and group ownership of a directory recursively
In all the above commands, you can replace file with directory and it will work the same for changing ownership of the directory.
The one problem here is that by default the ownership of the content inside the directory is not changed.
sudo chown -R user_name:group_name directory_name
6. Set the same user and group ownership as a reference file
You can use a file as reference and change the user and group ownership of a file based on the reference file in this manner:
sudo chown --reference=file1.txt file2.txt
In the example below, file agatha.txt has been used as a reference. And as you can see, the ownership of sherlock.txt has been changed on the basis of agatha.txt.
[email protected]:~/tutorial$ ls -l agatha.txt sherlock.txt -rw-r--r-- 1 prakash sudo 456 Jan 24 09:30 agatha.txt -rw-r--r-- 1 abhishek abhishek 356 Jan 24 09:30 sherlock.txt [email protected]:~/tutorial$ sudo chown --reference=agatha.txt sherlock.txt [email protected]:~/tutorial$ ls -l agatha.txt sherlock.txt -rw-r--r-- 1 prakash sudo 456 Jan 24 09:30 agatha.txt -rw-r--r-- 1 prakash sudo 356 Jan 24 09:30 sherlock.txt
I think you have enough examples of the chown command to understand it. You can always refer to chown man page for more details.
If you have questions or suggestions, do let me know.