概要
- SCP (Secure Copy) コマンドを使用して、ローカルマシンの指定したディレクトリをEC2インスタンスにコピーするコマンドを実行したら
"Permission denied"
と返ってきてしまったので、その解決方法を記します。- 前提:OSはUbuntu 18.04.3 LTSです。
解決手順
- 以下のコマンドを実行することで、ローカルマシンの
/Users/hogehoge/foofoo/wpsample_homepage
ディレクトリを、EC2インスタンスの/var/www/html
ディレクトリにコピーすることができます。
$ scp -i /path/to/sample_homepage_key.pem -r /Users/hogehoge/foofoo/wpsample_homepage ubuntu@11.222.333.444:/var/www/html/
- これでいけるはず...と思ったら、以下のように出てきた。
scp: /var/www/html//wpsample_homepage: Permission denied
- エラーメッセージ
"Permission denied"
は、EC2インスタンスに対してコピー先のディレクトリに書き込み権限がないことを示しているよう。これは、コピー先のディレクトリに対するアクセス権が不足していることが原因と思われますので、以下のコマンドを使用して、コピー先のディレクトリに対して適切な権限を付与してみます(755=EC2インスタンス上でのファイルの書き込みが可能になる)。
$ sudo chmod -R 755 /var/www/html
- 権限を変更して、再度scpコマンドを実行したら...また以下のように表示された。
scp: /var/www/html//wpsample_homepage: Permission denied
-
sudo su
を実行して、rootユーザーに切り替え、777にしてみる。- 777=全てのユーザーに書き込み権限を付与
$ sudo su
$ chmod 777 /var/www/html
- 再度、scpコマンドを実行して、ファイルをコピーします。
$ scp -i sample_homepage_key.pem -r /Users/hogehoge/foofoo/wpsample_homepage ubuntu@11.222.333.444:/var/www/html/
- これでファイルがコピーされました。
- ただし、セキュリティ上の理由から、全てのユーザーに書き込み権限を与えることは推奨されないとのこと。ファイルのパーミッションを適切に設定するこが推奨されています。
各オプションの説明
-
-i sample_homepage_key.pem
: リモートホストにログインするために使用する秘密鍵ファイルを指定します。-i オプションは、identity file の略称で、秘密鍵を指定するために使用されます。 -
-r
: ディレクトリを再帰的にコピーするためのオプションです。このオプションを使用しない場合、ファイルのみがコピーされます。 -
/Users/hogehoge/foofoo/wpsample_homepage
: コピーするローカルマシンのディレクトリパスを指定します。 -
ubuntu@11.222.333.444:/var/www/html/
: リモートマシンにコピー先のパスを指定します。ubuntu は、リモートマシンにログインするためのユーザ名で、11.222.333.444は、リモートマシンのIPアドレスです。:/var/www/html/
は、リモートマシンにコピー先のディレクトリパスを指定します。