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

В этом руководстве мы покажем вам, как использовать chown команду на практических примерах.

- BAKS.dev

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

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

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

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

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

chown [OPTIONS] USER[:GROUP] FILE(s)
 

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

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

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

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

ls -l filename.txt 
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
                |       |
                |       +-----------> Group
                +-------------------> Owner
 

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

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

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

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

chown linuxize file1 


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

chown linuxize file1 dir1 


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

chown 1000 file2 


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

chown 1000 file2 

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

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

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

chown linuxize:users file1 

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

chown linuxize: file1 

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

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

chown :GROUP FILE
 

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

chown :www-data file1 

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

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

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

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

chown www-data: symlink1 

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

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

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

chown -h www-data symlink1 

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

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

chown -R USER:GROUP DIRECTORY
 

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

chown -R www-data: /var/www 

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

chown -hR www-data: /var/www 

Другими параметрами, которые можно использовать при рекурсивном изменении владельца каталога, являются -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 свой терминал.

  • Печать

Страницы: [1]   Вниз

Тема: как сменить владельца символьной ссылки  (Прочитано 5510 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
Tony-M

Всем привет.
Собственно проблема такая.
Есть сайт например kw.my (пользователь-владелец kw) (квота на каталог 20 Мб)
Есть мой (пользователь chi) каталог (/home/chi) и в нём папка (distrib) с дистрибутивом на 7Гб
Мне надо сделать возможность чтоб, люди могли на сайте kw.my зайти в папку мою и скачать нужное им. Нужно на 2-3 дня, потом я эту возможность уберу.

Сразу говорю, что квоту менять — не выход.

Я думал что сделаю ln -s /home/chi/distrib /home/kw/kw.my/distrib и всё будет путём
но всё время в браузере вижу 403 You don’t have permission to access

Вроде уже сделал и chown -R kw:kw /home/chi/distrib  и chmod -R 777 /home/chi/distrib 
всеравно всё тоже самое вижу.

если делаю ls -la в /home/kw/kw.my то у ссылки distrib владелец — root

Вопросы:
1) как поменять владельца ссылки? делал chown kw:kw /home/kw/kw.my/distrib  — нифига.
2) Пральноли я вообще делаю?
3) поскольку с ссылками не часто работал, то при rm /home/kw/kw.my/distrib удалится ссылка или каталог /home/chi/distrib ?


Оффлайн
Sam Stone

кажется в апаче надо разрешить переходить по ссылкам. Либо в не пускает именно в /home
Попробуй также стопнуть apparmor для теста.

16.04.1 4.4.0-59-generic x86_64 GNU/Linux


Оффлайн
Frank

Ссылка не является файлом, сменить права/хозяина невозможно, права эти неприменимы к ссылке. Права на /home/chi смотри, если на эту папку стоит 700, то апач в пролёте. Нужно 701 на хомяк. Но этого мало. Обычно, по соображениям безопасности, хождение по симлинкам для апача отключено:

The <Directory> directive will follow the symbolic link without resetting the pathname. Therefore, for the highest level of security, symbolic links should be disabled with the appropriate Options directive.

FollowSymLinks
    The server will follow symbolic links in this directory.

    Even though the server follows the symlink it does not change the pathname used to match against <Directory> sections.

    Note also, that this option gets ignored if set inside a <Location> section.

Читать http://httpd.apache.org/docs/2.0/mod/core.html#options


Оффлайн
Дмитрий Бо

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

Добрый день!
Статья https://forum.ubuntu.ru/index.php?topic=68013.0 заканчивается высказывание «Ссылка не является файлом, сменить права/хозяина невозможно», что не соответствует действительности, а с топик вроде закрыт для редактирования.

Автору ошибся в одной букве chown -R. Смена владельца ссылки chown -h. Правда, смена пользователя может не помочь. Например в Samba надо будет подправить  /etc/samba/smb.conf

    unix extensions = no
    wide links = yes

P.S. Подкорректируйте плиз.


  • Печать

Страницы: [1]   Вверх

Команда 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 чтобы узнать, кому принадлежит файл или к какой группе принадлежит файл:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
                |       |
                |       +-----------> Group
                +-------------------> Owner

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

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

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

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

chown linuxize file1

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

chown linuxize file1 dir1

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

chown 1000 file2

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

chown 1000 file2

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

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

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

chown linuxize:users file1

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

chown linuxize: file1

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

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

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

chown :www-data file1

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

Как изменить право собственности на символические ссылки

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

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

chown www-data: symlink1

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

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

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

chown -h www-data symlink1

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

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

chown -R USER:GROUP DIRECTORY

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

chown -R www-data: /var/www

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

chown -hR www-data: /var/www

Другие параметры, которые можно использовать при рекурсивном изменении владельца каталога, — это -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 в своем терминале.

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

Other Alias

chown, fchown, fchownat

ОБЗОР

#include <unistd.h>


int chown(const char *pathname, uid_t owner, gid_t group);
int fchown(int fd, uid_t owner, gid_t group);
int lchown(const char *pathname, uid_t owner, gid_t group);


#include <fcntl.h> /* определения констант of AT_* */
#include <unistd.h>


int fchownat(int dirfd, const char *pathname,
uid_t owner, gid_t group, int flags);

Требования макроса тестирования свойств для glibc
(см. feature_test_macros(7)):

fchown(), lchown():

_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

|| /* начиная с glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

fchownat():

Начиная с glibc 2.10:
_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
До glibc 2.10:
_ATFILE_SOURCE

ОПИСАНИЕ

Данные системные вызовы изменяют владельца и группу для файла. Системные
вызовы chown(), fchown() и lchown() отличаются только в том, каким
образом задается файл:

*
chown() изменяет владельца для файла, задаваемого параметром pathname,
который разыменовывается, если является символьной ссылкой.
*
fchown() изменяет владельца для файла, задаваемого открытым файловым
дескриптором fd.
*
lchown() похож на chown() за исключением того, что он не
разыменовывает символьные ссылки.

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

Если параметр owner или group равен -1, то соответствующий
идентификатор не изменяется.

Когда владелец или группа исполняемого файла изменяется непривилегированным
пользователем, то биты режима S_ISUID и S_ISGID сбрасываются. В POSIX
не указано, должно ли это происходить если chown() выполняется
суперпользователем; поведение в Linux зависит от версии ядра. В случае
исполняемого файла вне группы (т.е., у которого не установлен бит
S_IXGRP) бит S_ISGID указывает на обязательную блокировку, и не
сбрасывается при выполнении chown().

fchownat()

Системный вызов fchownat() работает также как системный вызов chown(),
за исключением случаев, описанных здесь.

Если в pathname задан относительный путь, то он считается относительно
каталога, на который ссылается файловый дескриптор dirfd (а не
относительно текущего рабочего каталога вызывающего процесса, как это
делается в chown()).

Если в pathname задан относительный путь и dirfd равно специальному
значению AT_FDCWD, то pathname рассматривается относительно текущего
рабочего каталога вызывающего процесса (как chown()).

Если в pathname задан абсолютный путь, то dirfd игнорируется.

Аргумент flags представляет собой битовую маску, создаваемую побитовым
сложением (OR) следующих значений;

AT_EMPTY_PATH (начиная с Linux 2.6.39)
Если значение pathname равно пустой строке, то выполнять действие над
файлом, на который указывает dirfd (который может быть получен с помощью
open(2) с флагом O_PATH). В этом случае, dirfd может указывать на
файл любого типа, а не только на каталог. Если dirfd равно AT_FDCWD,
то вызов выполняет действие над текущим рабочим каталогом. Этот флаг есть
только в Linux; для получения его определения определите _GNU_SOURCE.
AT_SYMLINK_NOFOLLOW
Если значение pathname является символьной ссылкой, не разыменовывать её,
а изменить владельца самой ссылки, как это делается в lchown() (по
умолчанию, fchownat() разыменовывает символьные ссылки как и chown()).

Смотрите в openat(2) объяснение необходимости fchownat().

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а
errno устанавливается в соответствующее значение.

ОШИБКИ

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

Наиболее распространённые ошибки chown() перечислены далее.

EACCES
Поиск запрещён из-за одного из частей префикса пути (См. также
path_resolution(7).)
EFAULT
Аргумент pathname указывает за пределы доступного адресного пространства.
ELOOP
Во время определения pathname встретилось слишком много символьных
ссылок.
ENAMETOOLONG
Слишком длинное значение аргумента pathname.
ENOENT
Файл не существует.
ENOMEM
Недостаточное количество памяти ядра.
ENOTDIR
Компонент в префиксе пути не является каталогом.
EPERM
Вызывающий процесс не имеет требуемых прав (см. выше), чтобы изменять
владельца и/или группу.
EROFS
Указанный файл находится на файловой системе, смонтированной только для
чтения.

Общие ошибки fchown() таковы:

EBADF
Значение fd не является правильным открытым файловым дескриптором.
EIO
Во время изменения индексного дескриптора (inode) возникла низкоуровневая
ошибка ввода/вывода.
ENOENT
См. выше.
EPERM
См. выше.
EROFS
См. выше.

В fchownat() могут возникнуть те же ошибки, что и в chown(). Также, в
fchownat() могут возникнуть следующие ошибки:

EBADF
Значение dirfd не является правильным файловым дескриптором.
EINVAL
Указано неверное значение в flags.
ENOTDIR
Значение pathname содержит относительный путь и dirfd содержит
файловый дескриптор, указывающий на файл, а не на каталог.

ВЕРСИИ

Вызов fchownat() был добавлен в ядро Linux версии 2.6.16; поддержка в
glibc доступна с версии 2.4.

СООТВЕТСТВИЕ СТАНДАРТАМ

chown(), fchown(), lchown(): 4.4BSD, SVr4, POSIX.1-2001,
POSIX.1-2008.

Версия из 4.4BSD может использоваться только суперпользователем (то есть,
обычные пользователи не могут менять владельцев).

fchownat(): POSIX.1-2008.

ЗАМЕЧАНИЯ

Назначение владельца новых файлов

При создании нового файла (например с помощью open(2) или mkdir(2)),
его владельцем будет установлен ID пользователя из файловой системы
создающего процесса. Группа файла зависит от нескольких факторов, включая
тип файловой системы, параметры монтирования и установлен ли бит режима
set-group-ID на родительском каталоге. Если файловая система поддерживает
параметры mount(8) -o grpid (тоже что и -o bsdgroups) и -o nogrpid (тоже что и -o sysvgroups), то правила следующие:

*
Если файловая система смонтирована с параметром -o grpid, то группой
нового файла будет группа родительского каталога.
*
Если файловая система смонтирована с параметром -o nogrpid и на
родительском каталоге сброшен бит set-group-ID, то группой нового файла
будет GID файловой системы того же процесса.
*
Если файловая система смонтирована с параметром -o nogrpid и на
родительском каталоге установлен бит set-group-ID, то группой нового файла
будет группа родительского каталога.

Начиная с Linux 2.6.25, параметры монтирования -o grpid и -o nogrpid
поддерживаются для ext2, ext3, ext4 и XFS. Для файловых систем, не
поддерживающих эти параметры монтирования, используются правила как для
-o nogrpid.

Замечания по glibc

В старых ядрах, где fchownat() отсутствует, обёрточная функция glibc
использует chown() или lchown(). Если pathname является
относительным путём, то glibc собирает путь относительно символической
ссылки в /proc/self/fd, которая соответствует аргументу dirfd.

NFS

Семантика chown() сознательно нарушается в файловых системах NFS, в
которых включено отображение UID. Также, нарушается семантика всех системных
вызовов, которые обеспечивают доступ к содержимому файлов, так как
chown() может привести к немедленному отзыву доступа к уже открытым
файлам. Кэширование на клиентской стороне может привести к задержке между
сменой доступа пользователю и временем, когда файл действительно станет
доступным.

Историческая справка

Первоначальные версии системных вызовов chown(), fchown() и
lchown() в Linux поддерживали только 16-битные идентификаторы
пользователей и групп. Позднее в Linux 2.4 были добавлены вызовы
chown32(), fchown32() и lchown32(), поддерживающие 32-битные
идентификаторы. В glibc обёрточные функции chown(), fchown() и
lchown() работают одинаково вне зависимости от версий ядра.

В версиях Linux до 2.1.81 (кроме 2.1.46) chown() не следовал по
символьным ссылкам. Начиная с версии Linux 2.1.81 chown() следует по
символьным ссылкам, и существует новый системный вызов lchown(), который
не следует по символьным ссылкам. Начиная с Linux 2.1.86 этот новый вызов
(имеющий тот же смысл, что и старый chown()) имеет тот же самый номер
системного вызова, а chown() получил новый номер.

ПРИМЕР

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

Исходный код программы

#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
    uid_t uid;
    struct passwd *pwd;
    char *endptr;
    if (argc != 3 || argv[1][0] == '') {
        fprintf(stderr, "%s <owner> <file>n", argv[0]);
        exit(EXIT_FAILURE);
    }
    uid = strtol(argv[1], &endptr, 10);  /* Allow a numeric string */
    if (*endptr != '') {         /* Was not pure numeric string */
        pwd = getpwnam(argv[1]);   /* Try getting UID for username */
        if (pwd == NULL) {
            perror("getpwnam");
            exit(EXIT_FAILURE);
        }
        uid = pwd->pw_uid;
    }
    if (chown(argv[2], uid, -1) == -1) {
        perror("chown");
        exit(EXIT_FAILURE);
    }
    exit(EXIT_SUCCESS);
}

Содержание

  1. Команда Chown в Linux (владение файлом)
  2. Как использовать chown
  3. Как изменить владельца файла
  4. Как изменить владельца и группу файла
  5. Как изменить группу файла
  6. Как изменить право собственности на символические ссылки
  7. Как рекурсивно изменить право собственности на файл
  8. Использование справочного файла
  9. Выводы
  10. Команда chown в linux
  11. Примеры использования
  12. Смена владельца файла
  13. Рекурсивная смена владельцев файлов
  14. Команда chown Linux
  15. Команда chown Linux
  16. 1. Синтаксис и опции
  17. 2. Использование chown
  18. Выводы
  19. Команда chown в Linux
  20. Синтаксис
  21. Примеры
  22. Рекурсивно массово меняем права на папки и файлы
  23. Команда Chown в Linux
  24. Chown Command in Linux (File Ownership)
  25. В этом руководстве мы покажем вам, как использовать chown команду на практических примерах.
  26. Как пользоваться chown
  27. Как сменить владельца файла
  28. Как изменить владельца и группу файла
  29. Как изменить группу файла
  30. Как изменить владельца символических ссылок
  31. Как рекурсивно изменить владельца файла
  32. Использование справочного файла
  33. Вывод

Команда Chown в Linux (владение файлом)

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

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

В этом руководстве мы покажем вам, как использовать команду chown на практических примерах.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как изменить право собственности на символические ссылки

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

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

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

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

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

Выводы

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

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

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

Источник

Команда chown в linux

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

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

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

Базовый синтаксис команды выглядит следующим образом:

Примеры использования

Смена владельца файла

Например, если вы хотите предоставить пользователю с именем john возможность распоряжаться файлом picture.jpg по своему усмотрению, вы можете воспользоваться следующей командой:

$ chown john picture.jpg

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

$ chown john:family picture.jpg

В результате владельцем файла picture.jpg станет пользователь с именем john, а группой его владельцев — family.

Рекурсивная смена владельцев файлов

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

Вам наверняка захотелось использовать шаблон «*» для ссылки на все файлы. Однако, в этом случае не будет изменен владелец скрытых файлов (имена которых начинаются с символа точки). Также вы можете предположить, что следовало бы использовать шаблон «.*», однако, он будет соответствовать также директории с именем «..», в результате чего будет изменен владелец всех файлов также и в родительской директории! Следует помнить о том, что при использовании параметра -R утилите должно передаваться имя директории, а не имена отдельных файлов.

Источник

Команда chown Linux

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

Команда chown Linux

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

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

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

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

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

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

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

Snimok ekrana ot 2019 08 06 22 37 18

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

Snimok ekrana ot 2019 08 06 22 41 55

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

Snimok ekrana ot 2019 08 06 22 42 15

Snimok ekrana ot 2019 08 06 22 43 12

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

Snimok ekrana ot 2019 08 06 22 45 50

Выводы

Источник

Команда chown в Linux

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

Утилита сhown (ее название произошло от сочетания слов «change» и «mode») позволяет изменять владельца или группу у папок и файлов.

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

Синтаксис

Рассмотрим синтаксис команды.

Примеры

Для первого примера изменим владельца «root» папки «katalog» на «ya». Для этого запустим команду без опций, укажем имя пользователя и путь к каталогу.

chown ya /root/katalog

chown bez argumentov

Меняем владельца и группу одновременно.

Чтобы изменить сразу владельца и группу необходимо применить двоеточие без промежуточных пробелов. Синтаксис данной процедуры такой: USER:GROUP KATALOG.

Для примера изменим владельца и group для каталога «katalog» на «ya» и «nogroup».

chown ya:nogroup /root/katalog

chown bez argumentov 1

Тоже самое сделаем для документа «dokument».

chown ya:nogroup dokument
chmod prava na file

Бывают ситуации, когда нужно поменять только группу. Для этого, впереди нужно добавить «:». Поменяем группу документа «dokument» на «nogroup».

chown :nogroup dokument

chmod group only

Рекурсивно массово меняем права на папки и файлы

Массово поменяем владельца и группу директории «primercataloga» включая вложенные папки и файлы.

Источник

Команда Chown в Linux

Chown Command in Linux (File Ownership)

В этом руководстве мы покажем вам, как использовать chown команду на практических примерах.

bb086812a9b7ad9ead4ca0c581260e8f

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вывод

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

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

Источник

Понравилась статья? Поделить с друзьями:
  • Как изменить владельца папки на яндекс диске
  • Как изменить владельца папки на гугл диске
  • Как изменить владельца папки windows 10 через командную строку
  • Как изменить владельца папки ubuntu
  • Как изменить владельца папки freebsd