web-dev-qa-db-ja.com

/ etc / skel隠しファイルの権限を変更し、bash / sudoからロックアウト

背景: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

サーバーに物理的にアクセスできないため、リカバリモードの起動に問題があります。また、なぜこの許可の変更が問題を引き起こしたのですか?ドキュメントによると、それは正しいことでした。

4
user315000

あなたが走った

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

正しい権限を復元します。

2
Zanna