Когда SCP обращается к моему серверу Fedora, пользователь продолжает получать ошибки о невозможности изменить временные метки файла («установить время: операция не разрешена»). Пользователь не является владельцем файла, но мы не можем chown
файлы этому пользователю по соображениям безопасности. Пользователь может sudo
, но так как это происходит через SCP / FTP-клиент, это также невозможно сделать. И, наконец, мы не хотим предоставлять этому пользователю root-доступ, просто чтобы позволить ему использовать синхронизацию, такую как rsync или WinSCP, которая должна устанавливать временные метки.
Пользователь является частью группы с полными rw
разрешениями на все соответствующие файлы и каталоги. Любые мысли о том, как предоставить пользователю разрешение на touch -t
эти конкретные файлы, не chown
отправляя их ему?
Дополнительная информация Все это связано с включением разработки PHP в сценарии с одним разработчиком (т.е. без SCM). Я пытаюсь работать с Eclipse или NetBeans для работы с локальной копией сайта на основе PHP (WordPress), в то же время позволяя пользователю «мгновенно» просматривать свои изменения на сервере разработки. Пользователь будет работать удаленно. Пока что все попытки автоматической синхронизации потерпели неудачу - даже с использованием WinSCP в режиме «просмотра папки», где он отслеживает локальную папку и пытается выгрузить любые изменения до ошибки удаленного каталога, потому что он всегда пытается установить дату / время ,
У пользователя есть доступ к sudo, но мне сказали, что работать под root'ом не очень хорошая идея, поэтому я не хотел входить в систему как root, чтобы выполнить эту работу. Кроме того, это не должно быть необходимым. Я хотел бы, чтобы какой-то другой пользователь, не являющийся суперпользователем, мог делать то же самое - используя данные своей учетной записи, устанавливать FTP-соединение и иметь возможность работать удаленно через синхронизацию. Таким образом, решение должно работать для кого-то без root-доступа.
Меня поражает то, сколько у меня трудностей. Все эти программы (NetBeans, Eclipse, WinSCP) предназначены для синхронизации, и все они пытаются записать метку времени. Так что это должно быть возможно. WinSCP имеет возможность отключить «установить метку времени», но эта опция становится недоступной (всегда «включена»), когда вы выбираете папку мониторинга / синхронизации. Таким образом , это есть , чтобы быть что - то , что является довольно стандартным.
Учитывая, что я полный идиот, когда речь заходит о Linux, и я являюсь "администратором сервера", я могу только предполагать, что это что-то идиотское, что я делаю или что я (неправильно) настроен.
Резюме Вкратце, я хочу, чтобы все пользователи, которые имеют групповой доступ к каталогу, имели возможность изменять временную метку для файлов в этом каталоге через SCP.
источник
root
группы:root
группа не имеет специальных разрешений, толькоroot
пользователь.Ответы:
Почему это не работает
Когда вы пытаетесь изменить время изменения файла
touch
с помощью системного вызова или, в более общем смысле, с помощью основного системного вызоваutime
, есть два случая.Почему это обычно не имеет значения
--omit-dir-times
(-O
).Решения
Хорошо, остановись прямо здесь. Тот факт, что есть один разработчик, не означает, что вы не должны использовать SCM. Вы должны использовать SCM. Попросите разработчика проверить файл и дать ему возможность нажать кнопку «развернуть», чтобы извлечь файлы из SCM в оперативный каталог.
Нет абсолютно никакой технической причины, по которой вы не должны использовать SCM, но может быть и человеческая причина. Если человек, работающий с этими файлами, использует стиль «разработчик», он должен использовать SCM. Но если это не технический специалист, который загружает документы, SCM может быть слишком сложным. Так что продолжайте проталкивать файлы по FTP или SSH. Есть три способа, которыми это может работать.
rsync
есть возможность не синхронизировать время. Scp не, если вы не скажете это. Я не знаю WinSCP, но, вероятно, тоже могу.apache
пользователю, тогда обычным подходом будет предоставить пользователю доступ по SSH какapache
. Легкий подход чтобы пользователь создать закрытый ключ SSH и добавить соответствующий открытый ключ~apache/.ssh/authorized_keys
. Это означает, что пользователь сможет запускать произвольные команды от имениapache
пользователя. Так как вы все равно можете предоставить пользователю права sudo, в вашем случае это не имеет значения. Можно, но не так просто, установить больше ограничений (вам нужна отдельная запись в базе данных пользователей с другим именем, тем же идентификатором пользователя, ограниченной оболочкой и тюрьмой chroot; подробности в отдельном вопросе, хотя это уже может быть рассмотрено на этом сайте или на сервере неисправности ).¹ Или для пустого файла запишите байт, а затем обрежьте.
² За исключением дополнительных осложнений, но ни одно из известных мне случаев не применимо.
источник
apache
- тогда они смогут установить время. Смотрите мой исправленный ответ для правильного решения и нескольких неоптимальных.Вы можете настроить rsync для использования sudo на удаленном конце следующим образом:
источник
sudo rsync
очень сложно ограничить. Я только предложил это, потому что OP сказал, что у пользователя уже был доступ sudo.