2012-03-05 3 views
35

Windows 8のcygwinでグループ権限をchmodできないため、sshをsshキーでサーバに接続することはできません。
Bashプロンプトの警告: '/home/KeepZero/.ssh/id_rsa'の許可0660があまりにも開いています 秘密鍵ファイルには他人からアクセスできないことが必要です。Windows 8 CPでCygwinでchmodを使用できないのはなぜですか?

[email protected] ~ 
$ ls 
test 

[email protected] ~ 
$ ls -l 
total 0 
-rwxrwx--- 1 KeepZero KeepZero 0 Mar 4 15:07 test 

[email protected] ~ 
$ chmod 700 test 

[email protected] ~ 
$ ls -l test 
-rwxrwx--- 1 KeepZero KeepZero 0 Mar 4 15:07 test 

[email protected] ~ 
$ chmod 777 test 

[email protected] ~ 
$ ls -l test 
-rwxrwxrwx 1 KeepZero KeepZero 0 Mar 4 15:07 test 
+0

私のために働きます。どのような種類のファイルシステムを使用していますか? – ak2

+0

ああ、私はそれがWindows 8であることを見落としていたので、私のコメントを忘れてしまった。私が思うCygwinのメーリングリストにこれを報告することをお勧めします。 – ak2

答えて

69

ls -alを実行すると、ファイルがどのグループにも属していないことがわかります(なし)。 ファイル上でchgrp Users *を実行すると、もう一度正常に機能します。

+0

ありがとう、それは私のためにそれを修正! –

+0

これも私のためにそれを修正!どうもありがとうございます! –

+2

はい、忘れずに 'chmod 600 'を実行してください。 –

48

上記の解決策は機能しますが、根本的な原因は解決されず、権限を変更するユーザー作成ファイルで問題が再発します。恒久的に問題を解決するには、次の

  1. は、/ etc /グループ(またはロケールの同等のグループ名)に「ユーザー」グループのグループIDを検索します。
    私のインストールでこれは545、YMMV cat /etc/group|egrep '^Users:'あなたに正しい行が表示されます。行の3番目のフィールドはグループIDです。 (cat /etc/group|egrep '^Users:'|cut -f3 -d':'はIDを取得するだけです)。

  2. /etc/passwdファイルを編集します。ユーザーのレコードを探します。 4番目のフィールドは、ユーザーの「プライマリグループ」です。存在しないグループに誤って設定されています。その番号を上記の手順1で見つかった番号に変更します。 etcパスワードファイルを保存します。

  3. 開いているcygwinのウィンドウ/端末をすべて閉じてから新しいウィンドウを開きます。新しいファイルを作成します。それは "ユーザー"のグループを持っている必要がありますあなたはそれの権限を変更することができる必要があります。

+5

あなたは、メダルに値するでしょう。そしてもっと多くのアップフォース。この答えはあなたのもので、今は数回節約できました。私はこれを参考にしてブックマークしました。今後もこれらの手順を実行する必要があると確信しています。 –

+3

この回答は最初の問題を解決するものであり、少し修正されるものではありません。グループの名前は、ユーザーマシンの言語によって異なります。私の場合、それは "Utilisateurs"(フランス語で)でした。 – orion78fr

+2

$ cat/etc/group | egrep '^ Usuarios:' | cut -f3 -d ':'はスペイン語ユーザー向けです。 – JorgeGT

1

実際のPCに.sshフォルダをコピーしたことが原因です。自分のフォルダを作成して、適切なユーザーグループを取得します。フォルダをコピーしないでください。一致しないユーザグループに割り当てられます。

0

Windows Server 2012 R2にも同じ問題がありました。所有者やグループ、さらにはファイルのパーミッションを変更しようとしても、元の値が表示され、設定が無視されました。 NTFSでhttps://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-files

ファイルのパーミッション

を読んだ後とNOACLはオプションがマウント ポイントに指定されていないマウントする場合、CygwinはPOSIXシステムでは、ファイルのアクセス権を設定します。

私はNOACLオプションがmountpoinsに設定されたことを考え出し:

$ 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の権限設定が期待通りに機能しました。

関連する問題