2

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

alias chmod='sudo chmod'

в .bashrc, .profile или .bash_profile, чтобы пользователю больше не приходилось каждый раз вводить sudo chmod . Этот подход нарушается, если chmod выполняется не из командной строки в оболочке bash, а из программы. Как я мог заставить это все еще работать?

Фон в создании Syncthing, которую я хочу использовать для синхронизации файлов от разных пользователей. Кроме того, syncthing должна выполняться не как root а как пользовательский syncuser . Пользователь syncuser не имеет разрешений на выполнение chmod для файлов, которыми он не владеет, но которые он синхронизировал (разрешения на чтение / запись, управляемые группами), и именно здесь происходит сбой.

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

3 ответа3

0

Когда у меня возникла похожая проблема с совершенно другим фоном, я обнаружил, что chmod был ограничен root. Это по замыслу. Моим решением было задание incron (inotify) [1] в папке, где хранились файлы. Incron (запускается с правами root) изменяет все новые файлы на «user:user», позволяя обрабатывать их дальше.

[1] http://inotify.aiken.cz/?section=inotify&page=about&lang=en

0

Если у вас достаточно свежая версия Linux, вы можете использовать систему возможностей, чтобы дать возможность синхронизировать chmod любой файл. Это также даст ему некоторые дополнительные возможности, такие как изменение расширенных атрибутов для файлов или изменение времени доступа к любому файлу. Смотрите man 7 capabilities для полного списка.

Для этого просто используйте setcap "CAP_FOWNER=EP" syncthing . Замените syncthing полным путем к исполняемому файлу, если вы находитесь не в нужной папке.

0

Я столкнулся с той же проблемой:

[YNQCP] 12:42:21 INFO: Puller: shortcut: chmod /some/file.name: operation not permitted

См. Также этот другой более ранний вопрос о более общей проблеме разрешения не владельцам использовать chmod и chown .

В моем случае у нас есть один компьютер с несколькими пользователями, каждый из которых имеет права sudo. Они совместно используют одну папку с несколькими подпапками, которые должны автоматически синхронизироваться и быть доступными для всех. Я chmod 777 основной папки и подпапки, но syncthing прежнему жалуется и пытается chmod файлы по некоторым причинам (почему?).

Я использовал взломанное решение запуска syncthing от имени root. Это работает нормально, но производит:

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

Альтернативное решение состоит в том, чтобы сделать синхронизирующего пользователя и предоставить ему право собственности на файлы, и заставить других использовать их через chmod 777 .

Проблема также сообщается в другом месте:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .