Windows 8のCygwinでグループ権限をchmodできないため、sshキーを使用してサーバーにssh接続できません。
Bashプロンプトの警告:「 '/home/KeepZero/.ssh/id_rsa'のパーミッション0660がオープンしすぎています。他人がプライベートキーファイルにアクセスできないようにする必要があります。」
KeepZero@t400win8 ~
$ ls
test
KeepZero@t400win8 ~
$ ls -l
total 0
-rwxrwx--- 1 KeepZero KeepZero 0 Mar 4 15:07 test
KeepZero@t400win8 ~
$ chmod 700 test
KeepZero@t400win8 ~
$ ls -l test
-rwxrwx--- 1 KeepZero KeepZero 0 Mar 4 15:07 test
KeepZero@t400win8 ~
$ chmod 777 test
KeepZero@t400win8 ~
$ ls -l test
-rwxrwxrwx 1 KeepZero KeepZero 0 Mar 4 15:07 test
ls -al
すると、ファイルがどのグループにも属していないことがわかります(なし)。
chgrp Users *
あなたのファイルで、あなたは再び元気です。
Roi Dantonのソリューション は機能しますが、根本的な原因は解決されず、権限を変更するユーザー作成のファイルで問題が再発します。
問題を永久に修正するには:
/etc/group
の「Users」グループのグループID(またはロケールに対応するグループ名)を検索します。
私のインストールではこれは545でした(走行距離は異なる場合があります)。 cat /etc/group|egrep '^Users:'
は正しい行を取得します。行の3番目のフィールドはグループIDです。 (cat /etc/group|egrep '^Users:'|cut -f3 -d':'
はIDを取得するだけです)。
/etc/passwd
ファイルを編集します。ユーザーのレコードを見つけます。 4番目のフィールドは、ユーザーの「プライマリグループ」です。存在しないグループに誤って設定されています。その番号を、上記のステップ1で見つけた番号に変更します。 etc
パスワードファイルを保存します。
開いているCygwinウィンドウ/ターミナルをすべて閉じてから、新しいウィンドウを開きます。新しいファイルを作成します。 「ユーザー」のグループがあり、必要に応じて権限を変更できる必要があります。
Windows Server 2012 R2でも同じ問題が発生しました。所有者またはグループ、またはファイルのアクセス許可を変更しようとした後も、元の値が表示され、設定が無視されました。
ファイル権限を読み取った後、
ファイル権限
NTFSで、マウントポイントにnoaclマウントオプションが指定されていない場合、CygwinはPOSIXシステムと同じようにファイルのアクセス権を設定します。
noaclオプションがマウントポイントに設定されていることがわかりました:
$ mount
C:/cygwin/bin on /usr/bin type ntfs (binary,noacl)
C:/cygwin/lib on /usr/lib type ntfs (binary,noacl)
C:/cygwin on / type ntfs (binary,noacl)
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,noacl,auto)
そのため、/etc/fstab
のマウントポイントからnoaclオプションを削除し、すべてのCygwinウィンドウを閉じました。コンソールを再度開いた後、chown、chgrp、およびchmodのアクセス許可設定は期待どおりに機能しました。
この問題の考えられる理由は、実際のPCに.sshフォルダーをコピーしたことです...
独自のフォルダを作成すると、適切なユーザーグループを取得できます。フォルダをコピーしないでください...それらは一致しないユーザーグループに割り当てられます。
CygwinコマンドプロンプトでWindows 10と同じ問題に直面しました。
Idファイルについては、rootユーザーのみが完全な権限を持ち、他のユーザーについては制限付き/権限なしで問題ありません。
以下のコマンドは問題を解決します、
chmod 700 <id-file>