質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

1回答

558閲覧

ディレクトリの権限を変更したらゲストOSにアクセスできなくなった

alberorana

総合スコア52

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2017/07/26 11:09

編集2017/07/26 13:37

いつもお世話になっています。
vagrantとvirtualboxを用いたCentOSローカル開発環境でWebアプリを開発しています。
phpでアップロードされたファイルの権限を変更しようと思い、以下のコードを実行したところCentOSにログインできなくなってしまいました。

ファイルの権限を変えたつもりがなぜか、OS自体にアクセスできなくなってしまい、困っています。よろしくお願いします。
###該当のソースコード($fileはアップロードファイルのパス)

php

1$file = /home/***/***/file.pdf; 2exec("sudo chmod 0500 $file");

###発生している問題・エラーメッセージ

/.bin/ permission denied

実はエラーメッセージを保存する事なく消してしまいまして、うろ覚えのエラーメッセージになります。記憶ではパーミッションエラーでした。

*追記
アップロード直後に所有者、権限の変更とAClへの追加シェルも打っていました。

php

1 while (false !== ($entry = readdir($handle))) { 2 if ($entry != "." && $entry != "..") { 3 //tmpディレクトリにファイルがある限りユーザーディレクトリへ移動する 4 rename($tmppass . '/' . $entry, $uploaddir . '/' . $entry); 5 exec("sudo setfacl -m g:apache:rw,g:apache:rw $uploaddir . '/' . $entry"); 6 exec("sudo setfacl -m g:vagrant:rw,g:vagrant:rw $uploaddir . '/' . $entry"); 7 exec("sudo chmod 0600 $uploaddir . '/' . $entry"); 8 } 9 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mit0223

2017/07/26 12:53

どうやってログインしようとしたかを追記いただけますか。 vagrant ssh でしょうか? VirtualBox のコンソールでしょうか? 普通のssh でしょうか?
mit0223

2017/07/26 13:06

vagrant ユーザでもroot ユーザでもログインできないのでしょうか?
alberorana

2017/07/26 13:09

vagrantユーザーはログインできませんでした。rootユーザーでもログインしようとしたのですが、パスワードがわからず試せていないです。
guest

回答1

0

ベストアンサー

rootユーザーでもログインしようとしたのですが、パスワードがわからず試せていないです。

vagrant up でマシンを作成したのであれば、 root ユーザのパスワードは "vagrant" ではないでしょうか? root でログインできれば、 vagrant ユーザでログインできない理由を調査できますし、修正もできるかもしれません。

投稿2017/07/26 13:13

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

alberorana

2017/07/26 13:35

ご回答ありがとうございます。 rootではログイン可能でした。そこで、プログラムによって変更したディレクトリの権限を戻しましたが、やはりvagrantではアクセスできませんでした。 それと、後出しで申し訳ないのですが、質問に記載した以外にもシェルでコマンドを打っているのですが、これは関係ありそうでしょうか? while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { //tmpディレクトリにファイルがある限りユーザーディレクトリへ移動する rename($tmppass . '/' . $entry, $uploaddir . '/' . $entry); exec("sudo setfacl -m g:apache:rw,g:apache:rw $uploaddir . '/' . $entry"); exec("sudo setfacl -m g:vagrant:rw,g:vagrant:rw $uploaddir . '/' . $entry"); exec("sudo chmod 0600 $uploaddir . '/' . $entry"); } } アップロード直後に権限を所有者とACLを追加するプログラムになります。 お手数かけてしまいますが、よろしくお願いいたします。
mit0223

2017/07/26 15:33

ログインできないとすると、vagrant のホームディレクトリのアクセス権がおかしい可能性が高いです。 ls -la ~vagrant getfcal ~vagrant/* とかでホームディレクトリにアクセス権があるかどうかを確認されてはいかがでしょうか。
alberorana

2017/07/26 23:09

またしてもご回答ありがとうございます。 教えていただいたコマンドで調べてみましたが、アクセス権は問題なさそうなので、新しく環境を作り、クローンしておいた方がよさそうな気がしています。 [root@localhost home]# ls -la ~vagrant 合計 80 drwxr-xr-x. 9 vagrant vagrant 4096 7月 14 00:37 2017 . drwxr-xr-x+ 6 root root 4096 6月 25 01:36 2017 .. drwx------. 3 vagrant vagrant 4096 6月 3 21:07 2017 .ansible -rw-------. 1 vagrant vagrant 15987 7月 14 04:48 2017 .bash_history -rw-r--r--. 1 vagrant vagrant 18 5月 11 08:21 2016 .bash_logout -rw-r--r--. 1 vagrant vagrant 369 6月 3 21:20 2017 .bash_profile -rw-r--r--. 1 vagrant vagrant 176 5月 11 08:21 2016 .bash_profile.17352.2017-06-03@21:20:51~ -rw-r--r--. 1 vagrant vagrant 124 5月 11 08:21 2016 .bashrc -rw-------. 1 vagrant vagrant 2638 7月 14 00:37 2017 .mysql_history drwxrw----. 3 vagrant vagrant 4096 6月 3 21:05 2017 .pki drwxr-xr-x. 12 vagrant vagrant 4096 6月 3 21:31 2017 .pyenv drwxr-xr-x. 12 vagrant vagrant 4096 6月 3 21:27 2017 .rbenv drwx------. 2 vagrant root 4096 6月 18 07:52 2017 .ssh -rw-r--r--. 1 vagrant vagrant 6 3月 21 08:02 2017 .vbox_version drwxr-xr-x. 4 vagrant vagrant 4096 6月 3 22:02 2017 centos6 [root@localhost home]# getfacl ~vagrant/* getfacl: Removing leading '/' from absolute path names # file: home/vagrant/centos6 # owner: vagrant # group: vagrant user::rwx group::r-x other::r-x # file: home/vagrant/finder # owner: vagrant # group: vagrant user::rwx group::rwx other::rwx
mit0223

2017/07/26 23:36

情報がとれるうちにバックアップをとられたほうが良いとは思います。VMのクローンですと、クローンしたマシンでも結局 vagrant では入れないので、zip などで必要なファイルをバックアップしたマシンに移行されるほうが良いかもしれません。スクリプトは見ましたが、$handle や $uploaddir がどういう値で動作したかがわからないのでなんとも言えません。 今、再現できるのであれば、エラーメッセージを正確に記載してもらえませんか。 また、root ユーザで sudo su - vagrant を実行するとどうなりますか?
alberorana

2017/07/27 07:32

何度もご回答ありがとうございます。 バックアップは今取りました。 再現ですが、sudoコマンドが打てずに再現箇所まで行くことができませんでした。 [root@localhost ~]# sudo su - vagrant sudo: unable to stat /etc/sudoers: Permission denied sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin を打つと以下のエラーになり、パーミッションの関係かと考え、etcとsudoersの権限を775にしましたが、エラー内容は変わりませんでした。 今からさらにエラー内容を調べてみます。 $handleはtempディレクトリの中にあるjpg,pdfなどのファイルパス $uploaddirは後で追加したユーザーディレクトリになります。
mit0223

2017/07/27 17:04

/etc のパーミッションは通常 755です。/etc にアクセス権があるのにアクセス出来ないということは / のパーミッションがおかしいのではないでしょうか。/のパーミッションは 755 でなければなりません。確認してください。
alberorana

2017/07/28 02:42

解決いたしました! phpでシェルスクリプトを実行した際にルートディレクトリが0500に指定されてしまったためでした。 mit0223様この度は誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問