Невозможно сменить владельца целевого файла

Обновлено: 04.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

Ситуация такая - подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов и Midnight Commander выдает ошибки "Не возможно сменить владельца целевого файла. Ошибка удаленного ввода\вывода 121" и потом вторая "Невозможно сменить режим доступа целевого файла"

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

Ситуация такая - подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов

проблема в том, что какие-то атрибуты файлов в удалённой системе не поддерживаются.

это с FAT, да? Так там никакие атрибуты не поддерживаются, только временной штамп, и то 32х битный. Вот вы их все успешно потеряли.

Hint: что-бы не потерять атрибуты(основные, такие как права доступа и владельца), используйте tar-архив для передачи, ну или rsync over ssh тоже хорошо работает.

Скоро придёт
Осень

Ситуация такая - подключился со шлюза на котором стоит Debian к самбе с помощью Midnight Commander через Shell. Стал перекидывать архивы бекапов

проблема в том, что какие-то атрибуты файлов в удалённой системе не поддерживаются.

это с FAT, да? Так там никакие атрибуты не поддерживаются, только временной штамп, и то 32х битный. Вот вы их все успешно потеряли.

Hint: что-бы не потерять атрибуты(основные, такие как права доступа и владельца), используйте tar-архив для передачи, ну или rsync over ssh тоже хорошо работает.


Копировал с со шлюза (Debian) на Samba файлообменник (debian). Архив создал 1.tar.gz

Zloydog
очень плохая идея копировать файлы удалённо от/в root-доступ. Это РЕШЕТО.

Так никто не делает, потому и не тестирует никто. А если вы копируете обычным пользователем, то владелец автоматически меняется на получателя. Причём AFAIK в mc всё вроде-бы менялось без ошибок.

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

А зачем вы используете именно SMB соединение, ведь оно предназначено лишь для Windows™ систем? Нельзя-ли использовать OpenSSH?

Ещё вопрос: надеюсь вы применяете "SMB соединение", а не "FiSH"?

Скоро придёт
Осень

Zloydog
очень плохая идея копировать файлы удалённо от/в root-доступ. Это РЕШЕТО.

Так никто не делает, потому и не тестирует никто. А если вы копируете обычным пользователем, то владелец автоматически меняется на получателя. Причём AFAIK в mc всё вроде-бы менялось без ошибок.

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

А зачем вы используете именно SMB соединение, ведь оно предназначено лишь для Windows™ систем? Нельзя-ли использовать OpenSSH?

Ещё вопрос: надеюсь вы применяете "SMB соединение", а не "FiSH"?


Программа для управления файлами/папками. Использует библиотеку ncurses.

Meta — условное обозначение для набора мета-клавиш, обычно Esc или Alt

Работа с файлами

Insert Выделение текущего объекта
+ вызывает окно для выделения группы файлов (можно использовать регулярные выражения)
\ снимает отметку с группы файлов (действие, обратное тому, которое вызывается по клавише +)
Meta + ⏎ Вставить текущий объект в командную строку
Meta + . Показывать/не показать скрытые файлы или папки (начинаются на точку .)
Meta + , Переключить режим отображения панелей (вертикально/горизонтально)
Meta + A
Ctrl x p
Передать полный путь в текущей активной панели в командную строку
Meta cМеню быстрой смены текущей папки на активной панели
Meta gПерейти на первый файл или папку
Meta hМеню последних выполненных команд
Meta iСмена текущей папки на неактивной панели, на папку в которой вы находитесь в активной панели
Meta jПерейти на последний файл или папку
Meta nОтобразить следующую выполненную команду
Meta oНа неактивной панели отображается содержимое папки, выбранной в активной панели
Meta+pВернуть предыдущую выполненную командную строку
Meta+rОтмечает средний файл или папку в отображаемом списке на панели
Meta+tСмена режима работы панели (Стандартный, Укороченный, Расширенный)
Meta+Shift+?Вызывается меню расширенного поиска файлов
Meta+Shift+A
Ctrl+x
Ctrl+p
Посылает в командную строку полный путь в неактивной панели
Meta+Shift+HОтобразить историю папок
Ctrl+\Вызывается меню часто используемых папок
Ctrl+lПерерисовать экран
Ctrl+oСкрытие/показ панелей
Ctrl+rПеречитать содержимое папки
Ctrl+sБыстрый поиск файла или папки
Ctrl+SpaceПоказать размер текущей папки
Ctrl+x aОтображается список активных соединений виртуальных файловых систем
Ctrl+x cПросмотр/правка прав доступа текущего объекта
Ctrl+x iБыстрый просмотр информации о текущем объекте на второй панели
Ctrl+x jПоказ фоновых задач
Ctrl+x lСоздать жёсткую ссылку с текущего объекта
Ctrl+x oПросмотр/правка владельца/группы для текущего объекта
Ctrl+x qБыстрый просмотр содержимого файла на второй панели
Ctrl+x sСоздаёт символьную ссылку (symlink) для текущего объекта
Ctrl+x tВставка всех выделенных объектов в командную строку
Ctrl+x
Ctrl+s
Редактировать символическую ссылку
Shift+F1Вызывается меню быстрого перехода между точками монтирования на левой панели
Shift+F2Вызывается меню быстрого перехода между точками монтирования на правой панели
Shift+F3Просмотр файла raw без учёта расширения
Shift+F4Создать новый файл
Shift+F5скопировать файл в эту же папку
Shift+F6переместить файл в эту же папку

Редактор mcedit

Папка с файлами: /usr/share/mc/syntax/

Пример файла настройки подсветки синтаксиса с добавленным файлом cue.syntax :

Главный файл: /etc/mc/mc.ext

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

.bashrc нужный тип терминала:

Меню для настройки: Настройки\Оформление

Пример файла настройки:

Начало работ 2016-03-12

Представленный здесь вариант несколько отличается от официального.

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

Основной файл

Файл справки

При возникновении ошибки просмотра файла HTML :

Графические файлы

При возникновении ошибки просмотра графического файла:

Для включения поддержки Samba нужно собрать пакет с поддержкой vfs-smb.

в файле debian/rules убираем символ комментария с строки

Нужно установить пакет:

Невозможно сменить владельца целевого каталога

При копировании файлов, папок с файловых систем Ext на FAT , exFAT появляется предупреждение:

Для решения проблемы в диалоге копирования нужно выключить параметр Сохранять атрибуты .

Команда 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 свой терминал.

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