Cygwin 1.7.11 のキーファイル key.pem
のパーミッションを変更しようとしています。パーミッションフラグを持っています。-rw-rw----
chmod -c 600 key.pem
Reports:
key.pemのモードが0660 (rw-rw—-)から0600 (rw——-)に変更された
However:
ls -l key.pem
still reports
key.pemのパーミッションフラグは、-rw-rw—-のままです
この理由は、sshが文句を言っているからです
key.pem’ のパーミッション 0660 が開きすぎています
Amazon EC2インスタンスにsshしようとするとこれは Cygwin & Windows 8 NTFS の問題なのでしょうか?
79 None 2012-03-05
Win8CPでCygwinを使っていますが、同じ問題が発生しました。これは間違いなくCygwinのバグですが、回避策があります: 実行してみてください
chgrp -R Users ~/.ssh
もっと長い説明をすると、なぜかCygwinの/etc/passwd
と/etc/group
の生成では、ユーザーのデフォルト/メイングループをNone
としている。そして、None
のパーミッションを変更することはできないので、グループに対するchmod
は何の効果もありません
私自身はpasswd
/group
ファイルの修復は試していませんが、chgrp -R Users ~/.ssh
(Windows 8プレリリースの場合はグループ名HomeUsers
)を行いました。その後、chmod 0600
をやれば、期待通りに動作します
chgrp
からUsers
グループへの変更は、他にも似たようなケースを見つけることができます。Cygwinはユーザーを(プライマリではなく)セカンダリグループとしてUsers
グループに入れるので、期待通りに動作します
99 Jessidhia 2012-04-03
Cygwin 1.7.34 (2015-02-04) から、グループを Users
に変更する方法が機能しなくなりました。代わりにCygwinのsetfacl
ユーティリティを使う必要があります
例えば、ファイルモードを
644 (rw-r--r--)
にしたい場合は、次のようにしますsetfacl -s u::rw-,g::r--,o:r-- foo.bar
または、より長いフォーマットを使用します
setfacl -s user::rw-,group::r--,other::r-- foo.bar
または、
getfacl
を使ってファイルfoo
からbar
にそのモードをコピーするgetfacl foo | setfacl -f - bar
完全なマニュアルは、Cygwinユーザーガイドの“setfacl “セクションにあります。Cygwinはなぜchmod
ユーティリティも同様に変更していないのでしょうか
28 Luke Lee 2015-02-12
Luke Lee の提案を使用したスクリプトですが、chmod のような八進数をサポートしています。これは拡張可能なフレームワークを提供しています。現在は key.pem および/または ~/.ssh ディレクトリとファイルのパーミッションを修正するために必要な 8 進数引数のみをサポートしていますが
#!/bin/bash
# convert chmod octal permission args to equivalent setfacl args
ARGS=() ; FILES=()
while [ $# -gt 0 ]; do
A=$1 ; shift
case "$A" in
600|0600) ARGS+=("u::rw-,g::---,o::---") ;;
640|0640) ARGS+=("u::rw-,g::r--,o::---") ;;
644|0644) ARGS+=("u::rw-,g::r--,o::r--") ;;
700|0700) ARGS+=("u::rwx,g::---,o::---") ;;
*) if [ -e "$A" ]; then FILES+=( "$A" ) ; else
echo "unrecognized arg [$A]" 1>&2
exit 1
fi
;;
esac
done
for F in "${FILES[@]}" ; do
setfacl -s "${ARGS[@]}" "$F"
done
このように使って、.sshディレクトリとファイルを修正しました
chmodfacl 700 ~/.ssh
chmodfacl 600 ~/.ssh/*
chmodfacl 640 ~/.ssh/*.pub
11 philwalk 2015-02-14
chgrp -R Users ~/.ssh
chmod 0600 ~/.ssh/config
chmod 0700 ~/.ssh
4 xtrimsky 2014-05-26
git bash がインストールされている場合は、git bash で同じコマンド (chmod -c 600 key.pem
) を実行し、Cygwin を避けます
1 TheodorosPloumis 2014-04-26
この問題は、cygwin 端末から ssh-keygen コマンドを実行することで解決できます (通常の Windows のコマンドプロンプトではありません)。私のwindows8マシンでこれを実行しました
1 Ravindra Jain 2014-08-08
Cygwinのインストーラーを実行してアップデートしてください。バグが修正されているはずです
-2 Duncan Calvert 2015-06-15