Назад | Перейти на главную страницу

Как отменить массовую смену собственников?

Возможный дубликат:
вернуть chmod 777 / -R

Я случайно выполнил chown someuser * -R пока я был в / на моем сервере.
Думал, может, выдав chown root * -R как-нибудь поправил бы. Но вроде бы есть проблемы.
Например, теперь DirectAdmin ведет себя странно, когда я пытаюсь войти в систему. Он говорит:

Невозможно определить тип пользователя
user.conf нуждается в ремонте

Как я могу исправить ситуацию?

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

Это прискорбно!

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

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

  • Пользователь должен владеть всеми файлами в своем домашнем каталоге. Для каждого пользователя chown -R username ~username.
  • Служба, изменяющая собственные файлы, обычно должна принадлежать пользователю, от имени которого запускается веб-приложение. Хотя вы можете это настроить, если вы используете apache, этого пользователя обычно называют apache. Для каждого корневого каталога такого приложения chown -R apache /path/to/webroot.
  • Точно так же файлы и каталоги, которые будут изменены службой (например, каталоги загрузки), должны принадлежать пользователю, от имени которого запущена служба. Для каждого из них chmod -R username /path/to/filesystem/object.
  • Закрытые ключи SSL, принадлежащие системным службам, обычно должны принадлежать пользователю root (и доступны для чтения только владельцу). Где они хранятся, сильно различается, но во всех случаях вы или ваш предшественник помещаете их туда. Найдите их и chown root somefile.key для каждого.
  • Приложения, у которых есть файлы конфигурации, для которых разрешение на чтение ограничено владельцем, но которые читают эти файлы после удаления root, должны владеть этими файлами (возможно, это похоже на ваш DirectAdmin user.conf, если так звучит). chown username /path/to/file.

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

Вы не можете вывести владельца из группы. Например, файлы в домашнем каталоге пользователя часто принадлежат username:users. Кроме того, у многих файлов есть конкретный владелец, который может их редактировать, и определенная группа, которая может читать и выполнять их, и нет разрешений для других пользователей. Это также может вызвать странное поведение или просто сбой (группы не обязательно должны соответствовать пользователям).

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