AWS で sudo の設定を間違えると管理者になれなくなる

AWS 自体のことはあまりわからないのですが、デフォルトで ec2-user というのがあるようです。このアカウントは sudo でパスワードを入力しなくても実行出来るようになっています。

今回行ったのは apache グループに全てのコマンドで sudo 出来るようにする設定です。

sudo visudo

でファイルの一番下に以下を追加しました。

%apache ALL=(ALL) ALL
%apache
設定するユーザー名(% を初めにつけるとグループ名)
ALL
ホストの設定(通常ALL)
=(ALL)
使用できるユーザー権限(ALLなら全て)
ALL
使用可能なコマンド(複数指定は,(カンマ)を使用する)

上記の行を追加した状態で保存しました。

そして改めて sudo を実行すると


[[email protected] ~]$ sudo ls
[sudo] password for ec2-user: 

とパスワードを求められるようになりました…
ec2-user のパスワードは設定していないのでわかりません。

なので、管理者権限での操作が一切出来なくなりました…

apache グループに設定したはずなのになぜ ec2-user の設定が変更されたのかわけがわかりませんでした。
ふとグループを確認してみると、


[[email protected] ~]$ groups
ec2-user wheel apache

………apache…

ec2-user は apache グループに所属していました…
恐らく、ファイルの一番下に上記の一行を追加したために、NOPASSWORD が設定されている項目を上書きしてしまいパスワードを求められる用になったようです…

色々調べましたが…解決方法は見当たりませんでしたww

削除しかなくなりました。 sudo の設定をする前はユーザーのグループも確認するようにします。。。

AWS 上で PHP のエラー

AWS 上にて動かしていた Apache にブラウザでアクセス出来ない状態になっていました
アクセスログは空。エラーログにいくつか下記のエラーが発生していました。

PHP Fatal error: PHP Startup: apc_mmap: mmap failed: in Unknown on line 0
Segmentation fault

APC のエラーが発生していたので php.ini で APC を無効にしてみました。

apc.enabled = 1

ここの行を

apc.enabled = 0

に変更します。

その後に、Apache を再起動しました。

service httpd restart

すると問題なく接続出来るようになりました。

考えられる原因としては、恐らくAWS で割り当てられているメモリの量がAPCで設定されている値より低いということだと思われます。

子プロセスだけが生成されていく状態になるという情報もありました。(確認はしていません)

サーバーの状態を使いまわすときには注意が必要になるかもしれません。