背景:Ubuntu 14.04 VMで新人ミスを犯し、/etc
フォルダのアクセス権を再帰的に変更しました。新しいVMをモデルとして使用し、ファイルがモデルに存在しない場合にapt-browse.orgで適切な権限を検索して、一度にデフォルトの1つのディレクトリに復元しました'VM。 /etc/skel
ディレクトリにアクセスしたとき、パーミッションは.bash_logout
、.bashrc
、および.profile
で660でしたが、model&apt-browse.orgによると、 644。/etc/skel
を参照した後、Sudo chmod 644 .*
を実行し、ls -la
を実行しました。
その時点から、Sudoを呼び出すことも、ブラウズ、ファイルの一覧表示などを含むシェルコマンドを実行することもできなくなりました。
x@Y:/etc/sgml$ cd /etc/skel/ && ls -la
total 28
drwxr-xr-x 2 root root 4096 Oct 10 2014 .
drwxr-xr-x 129 root root 12288 Sep 12 15:39 ..
-rw-rw---- 1 root root 220 Mar 18 2013 .bash_logout
-rw-rw---- 1 root root 3637 Apr 23 2014 .bashrc
-rw-rw---- 1 root root 675 Mar 28 2013 .profile
x@Y:/etc/skel$ Sudo chmod 644 *
chmod: cannot access '*': No such file or directory
x@Y:/etc/skel$ Sudo chmod 644 .*
x@Y:/etc/skel$ ls -la
ls: cannot open directory .: Permission denied
x@Y:/etc/skel$ Sudo ls -la
Sudo: unable to stat /etc/sudoers: Permission denied
Sudo: no valid sudoers sources found, quitting
Sudo: unable to initialize policy plugin
x@Y:/etc/skel$ Sudo su
Sudo: unable to stat /etc/sudoers: Permission denied
Sudo: no valid sudoers sources found, quitting
Sudo: unable to initialize policy plugin
さらに、サーバー上のWebサイトは403エラーをスローするようになりました:You don't have permission to access / on this server. Server unable to read htaccess file, denying access to be safe
サーバーに物理的にアクセスできないため、リカバリモードの起動に問題があります。また、なぜこの許可の変更が問題を引き起こしたのですか?ドキュメントによると、それは正しいことでした。
あなたが走った
cd /etc/skel
Sudo chmod 644 .*
.*
は、現在の作業ディレクトリ内のすべての.files
(ディレクトリを含む)を検索しますおよび現在の作業ディレクトリ自体、および親ディレクトリ。モード644
をこれらに適用しました:
. <-- problem here as it's the working directory
.. <-- big problem here as it's the /etc directory
.bash_logout
.bashrc
.config <-- problem here as it's a directory
.profile
何も機能しなかった理由は、現在の作業ディレクトリの実行権限を削除したためです。それはあなたがそこにいる許可を持っていなかったことを意味します!
入力または検索するには、ディレクトリに実行権限が必要です。実行権限が削除されたときにディレクトリ内にいるのは一種のEdgeケースですが、その状況では、ほとんどすべてのコマンドに対してpermission denied
を取得します。
ディレクトリからcd
できますが、sudoersファイル(/etc
内)を読み取ることができないため、物理アクセスなしではアクセス許可を修正できません。
あなたはどちらか
リカバリモードで起動し、ルートシェルを起動し、mount -o remount,rw /
を実行してファイルシステムを読み書きします。
ライブセッションで起動し、ルートパーティションをマウントします。Sudo mount /dev/sdxY /mnt
(/dev/sdxY
をルートパーティションの正しい名前に置き換えます)、cd /mnt
chmod -R
を実行しなかったため(ありがたいことに!)、3つの修正しかありません。リカバリを行います(同じですが、Sudoを使用し、ライブセッションの/
からのパスに最初の/mnt
を使用しません)
chmod 755 /etc
chmod 755 /etc/skel
chmod 755 /etc/skel/.config
正しい権限を復元します。