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: