Windows 8でCygwinを使用して、chmod 600は期待通りに動作しませんか?

chmod cygwin windows windows-8-preview

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


タイトルとURLをコピーしました