14449
シェルスクリプトの中にNodeJsをインストールするコマンドが書いてあり、  
Jenkinsのジョブを実行するとそのスクリプトが実行されます。

Jenkinsのジョブを使用して実行すると  
コンソール出力に下記のメッセージが出ていてNodeJsがインストールされません。

```

    sudo: no tty present and no askpass program specified
    
```

しかし、vncを使用して遠隔ログインしターミナルを立ち上げて  
シェルスクリプトを実行するとエラーが出ずインストールが完了します。

vncログインしたものと全く同じログインをしたユーザーの環境上で  
Jenkinsは起動しているのですが、Jenkins自体は別の権限？で動作しているのでしょうか？

■環境  
MacOSX:10.10.3

【追記】  
大事なことを書き忘れてました  
visudoで下記を追加はしたのですが失敗します。

```

    $ sudo /usr/sbin/visudo
    ------------------------
    # Defaults requiretty           # tty無しの場合sudoさせない
    Defaults:jenkins !requiretty   # ユーザjenkinsはtty無しでsudo可能
    jenkins ALL=(ALL) NOPASSWD:ALL # ユーザjenkinsはパスワード無しでsudo可能
    
```
CC BY-SA 3.0
2015-08-15T14:18:16.610
14446
2015-08-16T06:07:56.790
2015-08-16T06:07:56.790
5261
5261
question
macos jenkins shellscript
Jenkinsでジョブを実行した時、シェルを実行している権限は？
Jenkinsのジョブはデフォルトだとjenkinsというユーザで実行されているようなので、jenkinsというユーザの権限を確認してみてください（デフォルトだとルート権限は無いと思います）。また、Jenkinsのジョブの実行ユーザはシェルの中でwhoamiコマンドを叩くなどすれば確認出来ます。

なお、該当エラーメッセージへの対処方法は以下が参考になると思います。  
<http://qiita.com/ykirishima/items/2f32dae7fa28a2b45801>
CC BY-SA 3.0
2015-08-15T16:03:44.923
14449
2015-08-15T16:03:44.923
33
14446
answer