eureka

Macでsudoが効かないのはMojaveのせいかもしれない

0
no image

Laravelハンズオンイベントに参加したときのこと、composerのパスが通せなくてハンズオンイベント中下手したらずっと環境構築で終わるとこだったかもしれないしょうみゆです。こんばんは(今は23時)。

パスを通すことでコマンドとして使うことができるようになるのだが、システムのコアファイルをいじるので高権限が必要なことがある。

Linuxでいうところのスーパーユーザとかroot権限とか。

Linuxは結構簡単にrootになれるけど、MacとかWindowsではrootになる必要がないからいらないんだと思うんだけど、もし必要になったらこれをつかう!

sudo

この文字をコマンドの先頭につければ、そのコマンドを使うときだけ一時的に最高権限を与えられるスーパーなコマンド。

私はスドー派だけどスードゥーって読んでる人もいた。どっちだろ?笑
意味的にはたぶん推測だけど、スーパーユーザ ドゥー!(最高権限者だぞ!強制実行するぞ!)みたいな略なんじゃないかと思っている。

前置きが結構長くなってごめんなさいw
本題に入ると、Laravelのインストールでcomposerが必要なのだが、パスが通らなくて困った。

最終的にはMacOSのMojaveのせいだった

システムのコアな部分をいじるのってやはり権限が必要。
sudoで実行してパスワードも聞かれるけど無反応。lsで確認しても何も変わっていない。

そして調べたら出てきました。

macOS Mojave(OSX 10.14)以降でセキュリティ設定が厳しくなったため、sudo 付きやユーザーのホームディレクトリ下でも「Operation not permitted」が出るようになりました。これは、 du ls mv cp といった基本コマンドでも同じです。

macOS Mojave の “Operation not permitted” を回避する(du/ls/mv/cp 実行時)

Mojave以降はセキュリティが厳しくなったので、ターミナルに権限を付与してあげないといけないみたいです。

では早速リンク内の画像の通り、『システム環境設定』→『セキュリティとプライバシー』→『フルディスクアクセス』内にターミナル.appを追加する。
追加するには南京錠マークをクリックしてパスワードを入力する必要がある。

また、ターミナル.appは何もいじってなければ、パスで探すなら『/Applications/Utilities/』配下にあるはず。

うまく追加できればターミナルの再起動を求められるので素直に再起動する。

そして再びsudoコマンドを実行するとちゃんとパスが通せた〜!
よかったよかった。

ちなみにcomposerのインストールでやったこと

// composerのダウンロード
$ curl -sS https://getcomposer.org/installer | php

// パスを通す
$ sudo mv composer.phar /usr/local/bin/composer

// インストール完了の確認
$ composer -V

締めのひとこと

MacがMojave以上だったら一度確認してみるといいかも。

0