Thank you for reading this post, don't forget to subscribe!
Представим ситуацию, когда произошло что-то типа:
1 |
chmod -R 777 /etc |
Или того хуже:
1 |
chmod -R 777 / |
В CentOS есть решение которое поможет решить данную проблему, это решение называется rpm
… 🙂 Заглянем в man rpm
:
1 2 3 4 5 6 7 8 9 10 11 12 |
... rpm --setperms PACKAGE_NAME sets permissions of files <span class="hljs-keyword">in</span> the given package. Consider using --restore instead. rpm --setugids PACKAGE_NAME sets user/group ownership of files <span class="hljs-keyword">in</span> the given package. This <span class="hljs-built_in">command</span> can change permissions and capabilities of files <span class="hljs-keyword">in</span> that package. In most cases it is better to use --restore instead. Options --setperms, --setugids, --setcaps and --restore are mutually exclusive. ... |
То-же самое подтверждает RHEL:
Ок, восстановить разрешения можно так:
1 |
rpm <span class="hljs-_">-a</span> --setperms /etc |
Возвратить владельцев можно так:
1 |
rpm <span class="hljs-_">-a</span> --setugids /etc |
Детальный разбор на примере установленного пакета
Для примера можно взять openssh-server
, смотрим инфу по пакету:
1 2 3 4 5 |
rpm -ql openssh-server-7.4p1-16.el7.x86_64 ... /usr/sbin/sshd ... |
Проверим разрешения на sshd
:
1 2 |
ls <span class="hljs-_">-l</span> /usr/sbin/sshd -rwxr-xr-x. 1 root root 853040 Apr 11 04:21 /usr/sbin/sshd |
Т.е. видим разрешения вида 755
, меняем на 777
:
1 |
chmod 777 /usr/sbin/sshd |
Смотрим результат:
1 2 3 |
ls <span class="hljs-_">-l</span> /usr/sbin/sshd -rwxrwxrwx. 1 root root 853040 Apr 11 04:21 /usr/sbin/sshd |
Восстанавливаем правильные разрешения:
1 |
rpm --setperms openssh-server-7.4p1-16.el7.x86_64 |
Снова проверяем:
1 2 3 |
ls <span class="hljs-_">-l</span> /usr/sbin/sshd -rwxr-xr-x. 1 root root 853040 Apr 11 04:21 /usr/sbin/sshd |
Аналогично можно поступить для всех пакетов примерно так:
1 |
<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> $(rpm -qa); <span class="hljs-keyword">do</span> rpm --setperms <span class="hljs-variable">$i</span>; <span class="hljs-keyword">done</span> |
Done!