AWSで開発用のユーザーをつくってCloud9でlaravelを立上げる(Permissionの備忘録)

#背景
[Cloud9でlaravel開発環境の構築](https://qiita.com/outase/items/09634f8d5c42a860b312)で開発用のuserをつくった方がいいと思ったので作成。

#手順
[参考：EC2にSSH接続用のユーザーを作](https://qiita.com/nekonoprotocol/items/e1fc5c212bf6a7365f8f)

ユーザー作成

~~~
$ sudo su -

# useradd test-usr
# passwd test-usr
~~~

sudoが実行できるように変更

~~~
# sudo visudo

#追記する
test-usr    ALL=(ALL)       ALL
~~~

test-usrで入り直す

~~~
# exit

$ sudo su - test-usr
~~~

sshキーの作成

~~~
$ cd /home/dev-usr

$ mkdir .ssh

$ cd .ssh
$ ssh-keygen -t rsa
#今回はパスフレーズなしで作成した
~~~

Amazon Linuxに合わせて名称変更とPermission設定

~~~
$ mv id_rsa.pub authorized_keys

$ chmod 600 authorized_keys
$ cd ..
$ chmod 700 .ssh
~~~

ローカル環境に鍵を保存する。catコマンドでコピペして作成。
ローカルではaws-test-usr.pemで保存。

~~~
$ cat id_rsa

#コピペ
-----BEGIN RSA PRIVATE KEY-----
・
・・・
-----END RSA PRIVATE KEY-----
~~~

sshd_configに追記

~~~
$ exit
$ sudo su -

# vi /etc/ssh/sshd_config

#なければ追記する
/etc/ssh/sshd_configAuthorizedKeysFile      .ssh/authorized_keys
~~~

ローカルからログインしてみる

~~~
$ ssh -i "aws-test-usr.pem" test-usr@xx.xx.xx.xx
~~~

ログインできない

~~~
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'aws-test-usr.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "aws-test-usr.pem": bad permissions
dev-usr@xx.xx.xx.xx: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
~~~

Permissionが0664ではエラーが出るためPermission変更

~~~
$ chmod 600 aws-test-usr.pem
~~~

ログイン

~~~
$ ssh -i "aws-test-usr.pem" test-usr@xx.xx.xx.xx

Last login: Fri Jan 25 20:45:51 2019

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
~~~

できました。

#Permissionについておさらい（備忘録）

~~~
$ll

-rw------- 1 dev-usr dev-usr  434  1月 25 20:47 authorized_keys
~~~

###分解する。
①- ②rw- ③r-- ④r-- ⑤test-usr ⑥test-usr ・・・・⑦authorized_keys

###1、3、3、3で分かれるイメージ。
①はファイルのタイプ 
②の「rw-」は⑤の「test-usr」という所有者のPermission 
③の「---」は⑥「test-usr」というグループのPermission 
④の「---」とその他(どのグループにも属さない）のユーザのPermission
⑦ディレクトリ名 

###Permissionの種類
'- Permissionなし
r 読み
w 書き
x 実行

###番号にすると
0---、1--x、2-w-、3-wx、4r--、5r-x、6rw-、7rwx 

例

~~~
$ chmod 600 authorized_keys

#authorized_keysの、所有者にのみ、読み書き権限を付与
~~~

[参考](https://www.mdn.co.jp/di/contents/2104/12696/)

#新しくつくったuserでCloud9接続

※新しくつくったuserのauthorized_keysに公開鍵をコピー
![Create a new environment 2019-01-26 10-38-56.png](https://qiita-image-store.s3.amazonaws.com/0/336536/21f4450e-5c4f-11a0-8ff8-a57c9e1e8b5c.png)
![Create a new environment 2019-01-26 10-40-53.png](https://qiita-image-store.s3.amazonaws.com/0/336536/f5a23ec6-3f16-6299-7e21-4da231f70581.png)

接続できた。
![test - AWS Cloud9 2019-01-26 10-42-07.png](https://qiita-image-store.s3.amazonaws.com/0/336536/ba93c2b0-1bd8-702d-1b6e-982cad3e43da.png)

#laravelプロジェクト作成
~~~
$ ~/composer.phar create-project --prefer-dist laravel/laravel test-laravel
~~~

###Permissionのエラー

~~~
Installing laravel/laravel (v5.7.19)


  [ErrorException]
  mkdir(): Permission denied
~~~

Permissionの設定変更で解決

~~~
$ cd /var/www/environment
$ sudo chmod 775 environment
~~~

###メモリ不足でエラー

~~~
The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details
~~~

下記を参照してスワップファイルを作成して解決
[Cloud9でlaravel開発環境の構築](https://qiita.com/outase/items/09634f8d5c42a860b312)

###cloud9を開いた時の**.c9のインストール**でエラー
[参考](https://qiita.com/RyodoTanaka/items/e9b15d579d17651650b7)

sudoをパスワードなしで使えるようにして解決

~~~
$ sudo visudo

#追記
test-usr ALL=NOPASSWD: ALL
~~~

###ブラウザでlaravelページを開いた時にエラー

~~~
The stream or file "/var/www/test-laravel/storage/logs/laravel-2019-01-26.log" could not be opened: failed to open stream: Permission denied
~~~

またParmissionでエラー
下記の対応で解決

~~~
#apacheに権限付与して見た
$ sudo usermod -a -G www apache
$ sudo usermod -a -G dev-usr apache

#再起動
$ sudo systemctl restart httpd

#問題のログファイルを削除
$ sudo rm laravel-2019-01-26.log
~~~

###起動しました
![Laravel 2019-01-26 13-12-17.png](https://qiita-image-store.s3.amazonaws.com/0/336536/6aeb6d83-8f6e-f53f-db39-77f394350f93.png)