sudo sessionが有効なときにmakepkgすると内部でもsudo sessionが使える
先日sudoで遊んでたらきづきました。 既知かもしれませんがblogに書いておきます。
実験
まず、 sudoを叩く PKGBUILDを作る。
sudoが使える場合、このスクリプトは以下のことをする
- "with sudo: root"と表示
/tmp/youjoをroot権限で作成
pkgname=youjo pkgver=1 pkgrel=1 arch=('i686' 'x86_64') prepare() { echo youjo.prepare } build() { echo "without sudo:$(whoami)" echo " with sudo:$(sudo whoami)" sudo touch /tmp/youjo echo youjo.build } package() { echo youjo.package } # vim:set ts=2 sw=2 et:
sudo sessionが有効でないとき
pass promptがでてsudoまで行ってることがわかります。

sudo sessionが有効なとき
pass promptがでず、sudoが実行されていることがわかります。
fakerootでもなく、 /tmp/youjoがrootにより作られたことがわかります。

結論
makepkg するときや、yaourt hogehoge するときは sudo sessionを無効化(sudo -k)したほうがいいかも。
こわいのは、AURでなにか入れようとして依存ライブラリが入ってないときで、
依存ライブラリのinstallでsudo timestampが作られて、sessionが有効な状態でAURをビルドし始めそう。
ちなみに
package()だけfakeroot使ってるっぽいです。なんでじゃろか。rootじゃないとエラーだすMakefileでもあったのかな

pkgname=youjo pkgver=1 pkgrel=1 arch=('i686' 'x86_64') prepare() { echo $(whoami) echo youjo.prepare } build() { echo $(whoami) echo youjo.build } package() { echo $(whoami) echo youjo.package } # vim:set ts=2 sw=2 et: