AnsibleをCygWinで使っていた特に、何故かsudoが無いぞ。と怒られました。
そんな馬鹿なとリモートサーバを覗いてみるも、そもそもVagrant使っている段階でsudoないと使えないし。
っと小一時間プレイブックをこねくり回していたのですが、結果から言うとCygWinにsudoがないのが原因でした。
そもそもCygWinにパーミッションの概念がどこまであるのか疑問ですが、ググるとみんな苦労しているようで、解決法も様々あるようです。
自分が試したのは以下のサイトにあるやり方です。
Cygwin で sudo 的コマンドを使うための設定
/bin/sudoというファイルを作成し、以下の内容を張り付け、実行権限を付与します。
#!/bin/sh
function usage_exit() {
cat << EOF >&2
Usage: $(basename $0) command
$(basename $0) -e file
$(basename $0) -v
EOF
exit 1
}
edit_flg=0
while getopts :veh opt
do
case $opt in
v)
exit 0
;;
e)
edit_flg=1
;;
h)
usage_exit
;;
\?)
usage_exit
;;
esac
done
shift $(($OPTIND - 1))
if [ $edit_flg -eq 1 ]; then
if [ $# -ne 1 ]; then
usage_exit
fi
sudoedit "$1"
else
if [ $# -eq 0 ]; then
usage_exit
fi
quote_args=''
for arg in "$@"
do
arg=$(printf '%q' "$arg")
quote_args="$quote_args $arg"
done
quote_args=$(echo "$quote_args" | sed -e "s/\\\\'/'\"&\"'/g" -e 's/\\\\/&&/g')
quote_pwd=$(printf '%q' "$PWD" | sed "s/\\\\'/'\"&\"'/g")
cygstart --hide -w -a runas sh -l -c "'exec < /proc/$$/fd/0 > /proc/$$/fd/1 2> /proc/$$/fd/2; cd $quote_pwd; $quote_args'" &
trap 'trap "" 1 2 3 15; sudo c:/Windows/system32/taskkill /pid $(ps -p $! | awk "NR==2 {print \$4}") /t > /dev/null 2>&1' 1 2 3 15
wait $!
fi
Wikiページ公開しているものです。
返信削除このblogを書かれた時に公開していたスクリプトはWindows10で
動きませんでした。Wikiページの方は対策版を公開しております
ので、そちらをご利用いただければと思います。
よろしくお願いします。