sudo時に環境変数PATHを引き継ぐためには?

CentOSCentOS 共通

大前提

 状態:-  閲覧数:929  投稿日:2014-10-28  更新日:2019-08-14
OSやバージョンに応じて対応が異なる
・ネットに掲載されている対処方法が色々あるのは、OSやバージョンに応じて対応方法が異なるため
・同じ「Cent OS」だから大丈夫だろうと安易に考え掲載内容を試しても、うまくいかないのは環境が相違しているから

以前のバージョンの対処方法
・sudoers に Defaults env_keep += "PATH" と記述
・Cent OS 6.4はこれだけでは通用しない


環境構成
・Cent OS 6.4


デフォルトのsudo設定


sudo した時の PATH は /etc/sudoers ファイルの secure_path の値で上書きされる
・/etc/sudoers に secure_path を指定し、sudo する時の PATH を secure_path で上書きする仕様
・そのため、sudo実行ユーザのPATHは引き継がれずに、ユーザ固有のPATHに指定したコマンドは失敗する


問題発生例


$ npm -v
1.4.14


$ sudo npm -v
sudo: npm: コマンドが見つかりません


対策

 閲覧数:314 投稿日:2014-10-28 更新日:2014-10-28 

解決方法案1


secure_pathをコメントアウト
・visudoコマンドでsecure_pathをコメントアウトして、env_keepにPATHを追加すれば、sudo実行ユーザが使っていたコマンドが使えるようになる
※PATHを引き継いでしまうとsecurity_pathで指定されていた/sbinなどの管理系のコマンドのPATHが設定されなくなってしまうので注意

1./etc/sudoersに「Default env_keep」というsudo実行ユーザから引き継ぐ環境変数を設定する項目がある。そこへPATHを追加
・ 下記1行を追加
Default env_keep+="PATH"

※sudoers ファイルを変更する場合はvisudo 使用

2.secure_pathをコメントアウト


解決方法案2


exempt_group使用
・Cent OS 6.4でも通用するか未確認

変更後確認

 閲覧数:296 投稿日:2014-10-28 更新日:2014-10-28 

反映は?


・visioコマンドで変更した内容は、ファイル書き込みと同時に反映される
・ファイル書き込みしたのに反映されない時は、変更が正しくないことを意味している


パスが変更されたか確認


$ sudo env | grep PATH
PATH=/home/★★/.rvm/gems/ruby-2.0.0-p247/bin:/home/★★/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/★★/.rvm/rubies/ruby-2.0.0-p247/bin:/home/★★/.nodebrew/current/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/★★/.rvm/bin:/home/★★/bin


$ sudo npm -v
1.4.14



bash アップデート

CentOSの日付や時刻が合っていない



週間人気ページランキング / 9-11 → 9-17
順位 ページタイトル抜粋 アクセス数
1 PHPのmb_send_mail関数でメール送信できない | メール処理システム 28
2 Nginx設定。エラーログレベル | Nginx(Webサーバ) 26
3 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 12
4 さくらVPS0 11
4 PHP Version 7.1.2 php-mecabエクステンション対応 / PHP 7.0.14 からのアップグレード  | MeCab(形態素解析) 11
4 ソースからビルドしたPython 2.7.3 アンインストール失敗 | Python(プログラミング言語) 11
5 touch コマンド / viコマンド。新規ファイル作成時の違い | Linuxコマンド 10
6 PHPファイルでchmodエラー | PHP(プログラミング言語) 7
7 php-mysql インストールできない 6
7 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 6
7 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 6
7 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 6
8 さくらVPSへは「http://localhost」でアクセス出来ない | さくらVPSにてWebサービス運営(さくらVPS) 5
8 CentOSでcpコマンド動作確認するためには、Control + T ではなく、 -v オプションを使用 | cp(Linuxコマンド) 5
8 HTTPレスポンスヘッダ | HTTP(通信プロトコル) 5
8 mailxとは? / インストール済か確認 / mailコマンドの実体はmailxコマンド 5
9 tar: これは tar アーカイブではないようです 4
9 Postfix | メール処理システム 4
9 499 (Request has been forbidden by antivirus) | HTTP(通信プロトコル) 4
9 imagick 3.1.2 を imagick 3.2.0RC1 へ pecl アップデート | ImageMagick(ソフトウェアスイート) 4
2021/9/18 1:01 更新