É possível alterar a permissão do diretório para seu estado anterior?

2

Alterei acidentalmente a permissão do diretório "/ usr / bin" e seus arquivos pelo comando:

$chmod 775 /usr/bin -R

Primeiro, houve um problema com o sudo, mas consertei. Agora eu suspeito que alguns programas podem não ser executados por causa da mudança de permissão.

Eu me pergunto se é possível voltar a permissão anterior?

Estou usando o Debian / testing.

    
por ofenerci 01.08.2015 / 11:23

2 respostas

1

A maioria dos programas em /usr/bin deve ter permissões 755 - legível e executável por todos, gravável apenas pelo seu proprietário, que é root. Alguns programas são setuid ou setgid : eles têm privilégios extras, que são concedidos pelo bit setuid ou setgid nas permissões. /usr/bin/sudo é um deles; ele precisa ser root setuid: chmod 4755 /usr/bin/sudo restaura.

Se você só tem pacotes oficiais do Debian (ao invés de pacotes em distribuições derivadas do Debian ou de outras fontes), então você pode descobrir quais contêm binários setuid / setgid passando pelo Lintian relatórios: setuid , setgid , ambos . Em princípio, todos esses pacotes devem vir com um arquivo em /usr/share/lintian/overrides que declara o binário setxid (a tag “sobrescrita” nessas páginas indica a presença de tal declaração), mas alguns pacotes não estão em conformidade (incluindo os onipresentes). como at e xserver-xorg ).

O script a seguir imprime um script de shell que executa o comando chmod para restaurar arquivos em /usr/bin para suas permissões padrão, se as permissões padrão incluírem o bit setuid ou setgid.

wget -q -O - https://lintian.debian.org/tags/set{uid,gid,uid-gid}-binary.html |
sed -n 's~^.*> *\(usr/bin/[^ ]*\) \([0-7][0-7][0-7][0-7]\).*~[ -e / ] \&\& chmod  /~p'

Além disso, algumas permissões podem ser configuradas localmente. Essas permissões são registradas com 'dpkg-statoverride . Você pode listá-los com

dpkg-statoverride --list '/usr/bin/*'

e você pode reaplicar essas permissões com

dpkg-statoverride --list '/usr/bin/*' |
awk 'system("chmod " $3 " " $4)'

Se você tem pacotes que não são do Debian, a única maneira de ter certeza de obter permissões corretas é reinstalá-los com apt-get --reinstall install PACKAGE-NAME .

    
por 01.08.2015 / 22:44
3

Felizmente, essas permissões não são totalmente destrutivas, mas não há "desfazer".

Se você não puder restaurar a partir do backup e não tiver instalado nada do código-fonte em /usr/bin , poderá usar o gerenciador de pacotes para recuperar as permissões corretas:

Para distribuições baseadas em RPM (Red Hat Enterprise Linux, Fedora, CentOS etc.), fazer isso é bastante fácil:

rpm -a --setperms

Para distribuições baseadas em dpkg (como Debian e Ubuntu) ele parece ligeiramente menos trivial ...

    
por 01.08.2015 / 20:53