ディレクトリ権限を以前の状態に変更できますか?

ディレクトリ権限を以前の状態に変更できますか?

誤って、次のコマンドで「/usr/bin」ディレクトリとそのファイルの権限を変更しました。

$chmod 775 /usr/bin -R

まず、sudoに問題がありましたが、修正しました。これで、権限の変更によって一部のプログラムが実行されない可能性があると疑われます。

以前の許可を取り消すことができるかどうかを知りたいです。

私はDebian / Testを使っています。

答え1

幸いなことに、これらの権限は完全に破壊的ではありませんが、「元に戻す」は不可能です。

バックアップから復元できず、ソースから何もインストールしていない場合は、/usr/binパッケージマネージャを使用して正しい権限を復元できます。

RPMベースのディストリビューション(Red Hat Enterprise Linux、Fedora、CentOSなど)の場合、これは非常に簡単です。

rpm -a --setperms

dpkgベースのディストリビューション(DebianやUbuntuなど)の場合やや少ない...

答え2

ほとんどのプログラムには、/usr/bin誰でも読んで実行でき、所有者(たとえばルート)のみを書き込む権限755が必要です。いくつかのプログラムはsetuid または setgid:権限のsetuidまたはsetgidビットによって付与された追加権限があります。/usr/bin/sudoその一つです。chmod 4755 /usr/bin/sudoこれを復元するには setuid ルートが必要です。

Debianの公式パッケージのみがある場合(Debianまたは他のソースから派生したディストリビューションのパッケージとは対照的に)、setuid / setgidバイナリを含むパッケージを確認して確認できます。リンティアンレポート:ユーザーIDの設定設定両方。原則として、これらのパッケージはすべて/usr/share/lintian/overridessetxidバイナリを宣言するファイルと共に提供する必要があります(このページの「overridden」タグはその宣言があることを示します)、一部のパッケージはそれに準拠していません(atなどのユビキタスパッケージを含むxserver-xorg)。

次のスクリプトは、chmodファイルを/usr/binデフォルト権限に復元するコマンドを実行するシェルスクリプトを出力します(ファイルのデフォルト権限にsetuidまたは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 /\1 ] \&\& chmod \2 /\1~p'

また、一部の権限はローカルで構成できます。この権限が登録されました`dpkg-stat オーバーライド。あなたはそれらをリストすることができます

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

次のコマンドを使用して、これらの権限を再適用できます。

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

パッケージがDebianのパッケージではない場合、正しい権限があることを確認する唯一の方法は 。apt-get --reinstall install PACKAGE-NAME

関連情報