誤って、次のコマンドで「/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/overrides
setxidバイナリを宣言するファイルと共に提供する必要があります(このページの「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