web-dev-qa-db-ja.com

Ubuntuでフォルダーのアクセス許可をデフォルトにリセットするにはどうすればよいですか?

最近コマンドを入力しました

Sudo chmod 777 -R /

その後、いくつかのような

Sudo -i

正常に動作していません。それで、フォルダのアクセス許可を元の状態にリセットできる方法があるかどうか疑問に思っていますか?

19
ashenafis

この乱雑な状況から戻るのは可能です。

私は同じ種類の問題(私が書いていたスクリプトのいくつかのバグ)をもう一度実行して解決しましたが、専門家の助けを求める必要があります。非常に注意してください!

最初に、デュアルブートシステム(Ubuntuと古いFedoraのインストール)を使用したため、状況は簡単に解決できましたが、CD/DVDまたはUSBキーからOSを実行すると、同じことが実行されます。

_MPOINT=/mount/ubuntu
_

まず、このようにファイルシステムをマウントしました(マウントポイントを作成することを忘れないでください)。

_mount /dev/ubuntu/root $MPOINT
mount /dev/ubuntu/home $MPOINT/home
_

次に、次のコマンドを実行して(私の問題はいくつかの-クリティカル-ディレクトリにのみありました)、実行中のシステムから乱雑なシステムにアクセス許可をコピーしました(実際、私の場合、Fedoraの下の仮想ボックスにUbuntuシステムをインストールしました)そしてそこに許可を得た):

_find /etc /usr /bin /sbin -exec stat --format "chmod %a \"${MPOINT}%n\"" {} \; > /tmp/restoreperms.sh
_

次に、restoreperms.shスクリプトを実行しました。

Ubuntuで再び起動することができました。

Restoreperms.shの内容は次のようになります。

_(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)
_

私はそれをテストしませんでしたが、それは所有者と所有者グループのためにもうまくいくはずです。何かのようなもの:

_find /etc /usr /bin -exec stat --format 'chown %U:%G ${MPOINT}%n' {} \; > /tmp/restoreperms.sh^

(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)
_

もちろん、ここで注意する必要があります。UIDとGIDは両方のシステムで同じですが、システム関連のユーザーとグループの場合、これは問題になりません。

編集:

また、owner SGIDおよびSUIDフラグを無効にするを設定すると、奇妙な問題が発生します(たとえば、権限が4755でないと、Sudoを実行できません)。権限を設定する必要があり、設定する必要があります[〜#〜] after [〜#〜]所有者を設定します。所有者情報とともに完全なファイル許可情報を保存してください。

Rk:

  1. このための重要なことは、インストールディスクを使用しているバージョンと同期させるか、少なくとも現在のubuntuバージョンで動作するようにすることです。
  2. 今、私はこのコマンドをcronjobに入れて、その情報を保持するために毎日(場合によっては数週間)実行しています。次回は解決策が簡単になりますが、もちろん、これが今あるので、二度と起こりません。 ;-) このようなもの:

    0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2

    0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2

正しい(組み合わせた)コマンドは次のようなものです。

_`/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2`
_

(ロケールなどで)ファイル名の括弧を考慮するために追加の注意が必要な場合があり、chownがchmodによって設定されたsetuidビットとsetgidビットを暗黙的に設定解除する場合があることに注意してください。後者の場合、たとえば/ bin/suと/ usr/bin/Sudoが壊れる場合、上記のexec句の順序を入れ替える必要があるかもしれません。

17
jlovi

リカバリ後Sudoまたはブート時にリカバリモードを選択

debsumsを使用してシステム全体を回復することは、ファイルの整合性と権限を確認することです。

マニュアルページから:

apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)

ファイルが変更されたパッケージを再インストールします

または特定のパスに限定:/usr

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)

またはパスの複数のセットに限定:/sbin /etc /var

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var  ) | cut -d : -f 1 | sort -u)
3
Ivan Buttinoni

chmod操作を元に戻すことはできません。少なくとも、以前の設定にロールバックするという意味ではありません。これは、この状況が必要とするものです。間違いなくcan各ファイルとディレクトリをchmodingして元のモードに戻すことでchmod操作を元に戻します-しかし、それらはすべて同じではありません。他の回答で説明したように、元のモードを判別するのは難しいです。

0
Svisstack

Sudoとして実行するものを常に監視します。

このスレッド は、いくつかの権限を手動で戻すことができることを説明しており、そこにあるスクリプトがこれに役立ちますが、それでも大きな仕事です。むしろ、トレッドのヒントに従って、インストール済みのパッケージ(マーキング)を保存し、OSを再インストールし、保存したパッケージのマーキングを適用して、アプリケーションを元に戻します。

0
invert

うわー、あなたはそれを殺した。死んだ!ログインしてマシンをrootとして使用し(有効にしたため)、rootのグループメンバーシップをユーザーに変更します。これは試したことがあるかもしれないし、うまくいかないかもしれませんが、試してみる価値はあります。

0
Joseph M

私の知る限り、System VパッケージとRPMだけがファイルのアクセス許可を修復するコマンドを提供しています。 System V(Solaris)ではpkgchk、RPMではrpm --setpermsです。

残念ながら、そのようなコマンドはDebian/Ubuntuパッケージには存在しないようですが、ここでは間違っている可能性があります。

ただし、これらのコマンドを使用しても、システムを正常な状態に戻すことは簡単な作業ではありません。システムを修復することで、システムに新たな害を及ぼす可能性があります(注意しないと)。

ジョセフが言った以外に、あなたは最初のものではありません、そしてあなたはそのようなコマンドを入力する最後のものではありません。しかし、Unixシステムでファイルのアクセス許可を777に変更するという考えだけでも、この種のシステムについてはあまり経験がないことを強く示しています。この状況で実行できる最善の方法は、再び必要なもの(ホームディレクトリ、構成ファイル、メールファイル?)をバックアップし、新規インストールを試すことです。

また、破損したバックアップファイルを復元するときは、非常に注意が必要です。

幸運を!

PS:どんな問題を解決したいと思っているのですか?

0
kdo