を/
実行してルートディレクトリのファイルのアクセス許可を再帰的に変更するsudo chmod -R / 777
と、システムが起動しなくなります(多くの "許可拒否"エラーが発生します)。
助けてください。
を/
実行してルートディレクトリのファイルのアクセス許可を再帰的に変更するsudo chmod -R / 777
と、システムが起動しなくなります(多くの "許可拒否"エラーが発生します)。
助けてください。
回答:
あなたは失われた原因を見ています。必要なデータを保存し、オペレーティングシステムを再インストールします。
/etc
、/var/www
Webサーバーのコンテンツおよびデータベースです。別のハードドライブをつかみ、プライマリとして有効にしてインストールします。それはあなたがそれを転送できるまでバックアップとしてあなたの他のドライブを保存します。
私はdpkgがデータベースにパーミッションを保存しているのを知っており、役立つかもしれない次のスクリプトgoogleを見つけました。
編集:実際にスクリプトを簡単に見て、PERMSからMODEに移行する少しの魔法が欠けているように見えます。たとえば、dpkg -cは「-rw-r--r--」を与えますが、 0644、私は今働いているので、この瞬間に変換を行う時間があるかどうかはわかりませんが、そのビットを追加するために誰も飛び込んでいない場合、後で戻ってくるかもしれません。
ここには面白いスクリプトがあります
#!/bin/bash
# Restores file permissions for all files on a debian system for which .deb
# packages exist.
#
# Author: Larry Kagan <me at larrykagan dot com>
# Since 2007-02-20
ARCHIVE_DIR=/var/cache/apt/archives/
PACKAGES=`ls $ARCHIVE_DIR`
cd /
function changePerms()
{
CHOWN="/bin/chown"
CHMOD="/bin/chmod"
PERMS=$1
OWN=`echo $2 | /usr/bin/tr '/' ':'`
PATHNAME=$3
echo -e "$CHOWN $OWN $PATHNAME"
#`$CHOWN $OWN $PATHNAME`
#`$CHMOD $MODE $PATHNAME`
}
for PACKAGE in $PACKAGES;
do
echo -e "Getting information for $PACKAGE\n"
FILES=`/usr/bin/dpkg -c "${ARCHIVE_DIR}${PACKAGE}"`
for FILE in "$FILES";
do
FILE_DETAILS=`echo "$FILE" | awk '{print $1"\t"$2"\t"$6}'`
changePerms $FILE_DETAILS
done
done
システムを再インストールせずに、このような厄介な状況から戻ることができます。デュアルブートシステムを使用している場合は、USBキーまたはVirutal Box(など)から新しいシステムをより正確に実行します。
私は再び同じ種類の問題(私が書いていたスクリプトのバグ)を実行して解決しましたが、専門家の助けを求める必要があります。非常に用心してください!
まず、デュアルブートシステム(ubuntuと以前のfedoraインストール)があったため、私の状況は簡単に解決できましたが、USBキー(またはCD / DVD)でシステムを実行しても同じことができるはずです。
MPOINT = / mount / ubuntu
まず、次のようにファイルシステムをマウントしました(マウントポイントの作成を忘れないでください):mount / dev / ubuntu / root $ MPOINT mount / dev / ubuntu / home $ MPOINT / home
次に、実行中のシステムから乱雑なシステムにアクセス許可をコピーするために、次のコマンドを実行しました(私の問題はいくつかの重要なディレクトリにのみありました)そしてそこに許可を得ました):
find / etc / usr / bin -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は両方のシステムで同じであることに注意する必要がありますが、システム関連のユーザーとグループの場合、これは問題になりません。
Rk:
このための重要なことは、使用しているバージョンとインストールディスクの同期を保つか、少なくとも現在のubuntuバージョンで動作することです。現在、このコマンドを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" {}
上記からスクリプトを変更しましたが、次のようになります。
#!/bin/bash
# Restores file permissions for all files on a debian system for which .deb
# packages exist.
#
# Author: Larry Kagan <me at larrykagan dot com>
# Since 2007-02-20
ARCHIVE_DIR=/var/cache/apt/archives/
PACKAGES=`ls $ARCHIVE_DIR`
cd /
function changePerms() {
CHOWN="/bin/chown"
CHMOD="/bin/chmod"
PERMS=`echo $1 | sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g' -e 's/r-x/5/g' -e 's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g'`
PERMS=`echo ${PERMS:1}`
OWN=`echo $2 | /usr/bin/tr '/' '.'`
PATHNAME=$3
PATHNAME=`echo ${PATHNAME:1}`
# echo -e "CHMOD: $CHMOD $PERMS $PATHNAME"
# result=`$CHOWN $OWN $PATHNAME`
# if [ $? -ne 0 ]; then
# echo -e $result
# exit 123;
# fi
echo -e "CHOWN: $CHMOD $PERMS $PATHNAME"
result=`$CHMOD $PERMS $PATHNAME`
if [ $? -ne 0 ]; then
echo -e $result
fi
}
for PACKAGE in $PACKAGES;
do
if [ -d $PACKAGE ]; then
continue;
fi
echo -e "Getting information for $PACKAGE\n"
FILES=`/usr/bin/dpkg -c "${ARCHIVE_DIR}${PACKAGE}"`
for FILE in "$FILES";
do
#FILE_DETAILS=`echo "$FILE" | awk '{print $1"\t"$2"\t"$6}'`
echo "$FILE" | awk '{print $1"\t"$2"\t"$6}' | while read line;
do
changePerms $line
done
#changePerms $FILE_DETAILS
done
done
bluebenに同意します。再インストールするだけで、どのファイル/ディレクトリにどの許可が必要かを分析するよりも速くなる場合があります。しかし、再インストールがオプションではない場合、ここにアイデアがあります:
find / | xargs stat -c 'chmod %a "'%n'"' > /tmp/chmod.sh
chmod.sh
間違ったアクセス許可でファイルをコンピューターにコピーしますchmod +x /tmp/chmod.sh && /bin/bash /tmp/chmod.sh
それでも起動できる場合/usr/sbin/synaptic
は、多くの場合修正可能です。
パッケージをステータスでソートし(上部にインストール済みパッケージ)、インストール済みパッケージをすべて選択し、右クリックして再インストールを選択します。次に適用すると、dpkg
それらのパッケージのすべてのファイルを再抽出するように求められます。(ローカルの変更は失われます(構成ファイルの変更は失われません)。)
ただし、すべてが修正されるわけではありません。
もう1つは、に移動すると/var/cache
、dpkg -x <package name> /
インストールされているすべてのパッケージを呼び出してから、を呼び出すことができますdpkg --reconfigure -a
。また、Ubuntuを使用している場合は、多くのエラーを修正するdistアップグレードを実行できます(最新リリースをまだ使用していない場合)。一般に、このようなエラーを修正しようとするとき、これらの簡単な修正を試みます。それらが再び機能しない場合は、再インストールします。
ライブCDから起動します。次にシェルを起動し、sudo -sを実行します。次に、chmod 777 / *、次にchmod 600 / etc / passwd。/ lib / initスクリプトが実行可能でない場合に発生するinitが失敗すると、カーネルはパニックします。Lilo Linux 1のシングルユーザーモードで起動し、上記のuser102453のスクリプトを実行します。これにより、システムのブートが要求されます。Xを実行する必要があります。
/の許可を755に設定すると、うまくいきました。
だから最初に確認してください
root@ubuntu:/# cd /
root@ubuntu:/# ls -ld
権限は「drwxr-xr-x」(755)にする必要があります。