Как предоставить права пользователя на изменение прав собственности на файлы / каталоги в каталоге

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

Я выполнил поиск Google и увидел, что есть такая вещь, как setfacl , которая позволяет предоставлять пользователям определенные права на изменение прав доступа к файлам и каталогам . Однако из того, что я читал, эта команда не разрешает предоставление разрешений chown.

Итак, скажем, файл имеет

 user1 user1 theFile1 user1 user1 theDirectory1 

Вызов следующей команды завершится неудачей.

 [user1@THEcomputer]$ chown user2 theFile 

У меня есть root-доступ на компьютере. Есть ли способ предоставить пользователю возможность выдавать команды chown внутри каталога?

UPDATE: как добавить пользователя в группу.

Вот статья, которую я использовал для добавления datamover в группу hts .

 [root@Venus ~]# usermod -a -G datamover hts [root@Venus ~]# exit logout [hts@Venus Receive]$ groups hts wireshark datamover [hts@Venus Receive]$ 

ОБНОВЛЕНИЕ (комментарий по адресу RuiFRibeiro):

Изменение права собственности на каталог в каталоге не работает, см. Снимок экрана.

 [datamover@Venus root]$ ls -la total 311514624 drwxrwxrwx. 6 datamover datamover 4096 Oct 14 14:05 . drwxr-xr-x 4 root root 4096 Aug 20 16:52 .. -rwxrwxrwx. 1 datamover datamover 674 Aug 31 16:47 create_files.zip drwxrwxrwx 2 datamover datamover 4096 Oct 17 17:07 dudi -rwxrwxrwx. 1 datamover datamover 318724299315 Oct 13 15:47 Jmr400.mov -rwxrwxrwx. 1 datamover datamover 182693854 Aug 31 16:47 Jmr_Commercial_WithSubtitles.mov -rwxrwxrwx. 1 datamover datamover 80607864 Aug 31 16:47 Jmr_DataMover_Final.mov drwxrwxrwx. 2 datamover datamover 122880 Aug 23 11:54 ManyFiles drwxrwxrwx. 3 datamover datamover 4096 Oct 25 07:18 Receive drwxrwxrwx 2 datamover datamover 4096 Oct 14 13:40 sarah -rwxrwxrwx 1 datamover datamover 3184449 Oct 14 14:05 SourceGrid_4_40_bin.zip [datamover@Venus root]$ cd ./Receive/ [datamover@Venus Receive]$ ls -la total 178540 drwxrwxrwx. 3 datamover datamover 4096 Oct 25 07:18 . drwxrwxrwx. 6 datamover datamover 4096 Oct 14 14:05 .. -rwxrwxrwx 1 hts hts 182693854 Oct 25 07:18 Jmr_Commercial_WithSubtitles.mov drwxrwxrwx 2 datamover datamover 122880 Oct 23 13:33 ManyFiles [datamover@Venus Receive]$ chown datamover:datamover ./Jmr_Commercial_WithSubtitles.mov chown: changing ownership of './Jmr_Commercial_WithSubtitles.mov': Operation not permitted 

Вот попытка владельца файла:

 [hts@Venus Receive]$ chown datamover:datamover Jmr_Commercial_WithSubtitles.mov chown: changing ownership of 'Jmr_Commercial_WithSubtitles.mov': Operation not permitted 

Итак, как вы можете видеть, ни одна из возможностей не работает.

UPDATE (ответ счетчика адресов)

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

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

 [hts@Venus ~]$ groups hts hts : hts wireshark datamover [hts@Venus ~]$ cd /mnt/DataMover/root/Receive/ [hts@Venus Receive]$ ls -la total 178540 drwxrwxrwx. 3 datamover datamover 4096 Oct 25 07:18 . drwxrwxrwx. 6 datamover datamover 4096 Oct 14 14:05 .. -rwxrwxrwx 1 hts hts 182693854 Oct 25 07:18 Jmr_Commercial_WithSubtitles.mov drwxrwxrwx 2 datamover datamover 122880 Oct 23 13:33 ManyFiles [hts@Venus Receive]$ chown hts:datamover ./Jmr_Commercial_WithSubtitles.mov [hts@Venus Receive]$ ls -la total 178540 drwxrwxrwx. 3 datamover datamover 4096 Oct 25 07:18 . drwxrwxrwx. 6 datamover datamover 4096 Oct 14 14:05 .. -rwxrwxrwx 1 hts datamover 182693854 Oct 25 07:18 Jmr_Commercial_WithSubtitles.mov drwxrwxrwx 2 datamover datamover 122880 Oct 23 13:33 ManyFiles [hts@Venus Receive]$ chown datamover:datamover ./Jmr_Commercial_WithSubtitles.mov chown: changing ownership of './Jmr_Commercial_WithSubtitles.mov': Operation not permitted [hts@Venus Receive]$ 

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

  • Не удается загрузить файл в контейнере lxc
  • Не удается получить доступ к папке через групповые разрешения
  • Возможность удалять файл без разрешения
  • Дайте мне права на все файлы в / без моего компьютера?
  • Не удается получить доступ к установленному объему в контейнере докеров
  • Sed с редактированием inplace изменяет групповое владение файлом
  • Самый простой способ использовать содержимое каталога?
  • Отображение UID с помощью rsync
  • 2 Solutions collect form web for “Как предоставить права пользователя на изменение прав собственности на файлы / каталоги в каталоге”

    Только root имеет разрешение на изменение прав собственности на файлы. Разумно современные версии Linux предоставляют возможности CAP_CHOWN ; пользователь, обладающий этой способностью, также может изменять права собственности на произвольные файлы. CAP_CHOWN является глобальным, после его предоставления он применяется к любому файлу в локальной файловой системе.

    Владение группой может быть изменено владельцем файла (и root). Однако это ограничивается группами, к которым принадлежит владелец. Поэтому, если пользователь U принадлежит к группам A, B и C, но не к D, тогда U может изменить группу любого файла, который U принадлежит A, B или C, но не D. Если вы ищете произвольные изменения, то CAP_CHOWN – это путь.

    ВНИМАНИЕ CAP_CHOWN имеет серьезные последствия для безопасности, пользователь с оболочкой, которая имеет возможность CAP_CHOWN может получить привилегии root. (Например, chown libc для себя, патч в ваших троянских конях, chown его и дождитесь, когда корневой процесс заберет его.)

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

     setcap cap_chown+ep /usr/local/bin/my_chown 

    ПРЕДОСТЕРЕЖЕНИЕ Ваша программа, вероятно, будет имитировать подлинный chown , например my_chown user:group filename(s) . Очень тщательно выполняйте проверку ввода. Убедитесь, что каждый файл удовлетворяет установленным ограничениям, в частности, следите за тем, чтобы ссылки были свободными от ссылок.

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

    Я столкнулся с этой проблемой, и я уже использую ACL. Это может не относиться к вашей ситуации, но в моем случае, у конкретного пользователя есть доступ на запись к дереву каталогов, и все остальные читают доступ, поэтому моя тактика заключается в том, чтобы написать небольшую программу setuid, чтобы проверить доступ к записи вызывающего пользователя и разрешить изменяя доступ для чтения к другим.

    Здесь обсуждается вопрос:

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

    Linux и Unix - лучшая ОС в мире.