4.66666666666671111111111Rating 4.67 (3 Votes)

Представим ситуацию, когда произошло что-то типа:

chmod -R 777 /etc

Или того хуже:

chmod -R 777 /

В CentOS есть решение которое поможет решить данную проблему, это решение называется rpm... :) Заглянем в man rpm:

...

   rpm --setperms PACKAGE_NAME
          sets permissions of files in the given package. Consider using --restore instead.

   rpm --setugids PACKAGE_NAME
          sets user/group ownership of files in the given package. This command can change permissions and capabilities of files in that package. In most cases it is better to use --restore instead.

   Options --setperms, --setugids, --setcaps and
          --restore are mutually exclusive.
...

То-же самое подтверждает RHEL:

Ок, восстановить разрешения можно так:

rpm -a --setperms /etc

Возвратить владельцев можно так:

rpm -a --setugids /etc

Детальный разбор на примере установленного пакета

Для примера можно взять openssh-server, смотрим инфу по пакету:

rpm -ql openssh-server-7.4p1-16.el7.x86_64
...
/usr/sbin/sshd
...

Проверим разрешения на sshd:

ls -l /usr/sbin/sshd
-rwxr-xr-x. 1 root root 853040 Apr 11 04:21 /usr/sbin/sshd

Т.е. видим разрешения вида 755, меняем на 777:

chmod 777 /usr/sbin/sshd

Смотрим результат:

ls -l /usr/sbin/sshd
-rwxrwxrwx. 1 root root 853040 Apr 11 04:21 /usr/sbin/sshd

Восстанавливаем правильные разрешения:

rpm --setperms openssh-server-7.4p1-16.el7.x86_64

Снова проверяем:

ls -l /usr/sbin/sshd
-rwxr-xr-x. 1 root root 853040 Apr 11 04:21 /usr/sbin/sshd

Аналогично можно поступить для всех пакетов  примерно так:

for i in $(rpm -qa); do rpm --setperms $i; done

Done!

Добавить комментарий


Защитный код
Обновить

Сейчас 582 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз