2012-03-05 7 views
35

Nie mogę wykonać polecenia chmod group in cygwin na Windows 8, więc nie mogę połączyć się z serwerem za pomocą klucza SSH. Ostrzeżenie: "Uprawnienia 0660 dla" /home/KeepZero/.ssh/id_rsa "są zbyt otwarte.Dlaczego nie można chmod w cygwin na Windows 8 CP?

[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

Działa dla mnie. Jakiego rodzaju systemu plików używasz? – ak2

+0

Ach, przeoczyłem, że jest na Windows 8, więc zapomnij o moim komentarzu. Najlepiej zgłosić to na listę mailingową Cygwin. – ak2

Odpowiedz

69

Wykonaj ls -al, a zobaczysz, że Twoje pliki nie należą do żadnej grupy (brak). Po prostu wykonaj chgrp Users * na swoich plikach i wszystko będzie dobrze.

+0

Dzięki, to naprawiłem to dla mnie! –

+0

Naprawiono to również dla mnie! Dziękuję bardzo! –

+2

Tak i pamiętaj, aby zrobić "chmod 600 " później –

48

Powyższe rozwiązanie działa, ale nie rozwiązuje głównej przyczyny, a problem powtarza się z każdym plikiem utworzonym przez użytkownika, na którym chcesz zmienić uprawnienia. Aby rozwiązać ten problem na stałe:

  1. Spójrz ID grupy grupy "Użytkownicy" w/etc/group (lub równoważnej nazwy grupy dla danej lokalizacji).
    W mojej instalacji było to 545, YMMV cat /etc/group|egrep '^Users:' dostaniesz poprawną linię. trzecie pole na linii to identyfikator grupy. (cat /etc/group|egrep '^Users:'|cut -f3 -d':', aby uzyskać identyfikator).

  2. Edytuj swój plik/etc/passwd. Znajdź rekord dla swojego użytkownika. Czwarte pole jest "grupą podstawową" dla użytkownika. Jest niepoprawnie ustawiony na nieistniejącą grupę. Zmień tę liczbę na liczbę znalezioną w kroku 1 powyżej. Zapisz plik hasła etc.

  3. Zamknij wszystkie otwarte okna/terminale Cygwin, a następnie otwórz nowy. Utwórz nowy plik. Powinien mieć grupę "Użytkowników" i powinieneś mieć możliwość zmiany jej uprawnień zgodnie z potrzebami.

+5

Jesteś panu, zasłużyć na medal. I jeszcze więcej przebojów. Ta twoja odpowiedź uratowała mnie już kilka razy i dodałem do niej zakładkę, ponieważ jestem pewien, że będę musiał również wykonać te kroki w przyszłości. –

+3

Ta odpowiedź powinna zostać przyjęta, ponieważ rozwiązuje początkowy problem i nie jest to mała poprawka. Należy pamiętać, że nazwa grupy zależy od języka komputera użytkownika. W moim przypadku był to "Utilisateurs" (po francusku). – orion78fr

+2

$ cat/etc/group | egrep '^ Usuarios:' | cut -f3 -d ':' dla użytkowników hiszpańskich. – JorgeGT

1

Prawdopodobną przyczyną tego problemu jest skopiowanie folderu .ssh na rzeczywisty komputer. Utwórz własny folder, a następnie uzyskasz odpowiednią grupę użytkowników. Nie kopiuj folderów ... są przypisane do grup użytkowników, które nie pasują do siebie.

0

Miałem ten sam problem w systemie Windows Server 2012 R2. Po próbie zmiany właściciela lub grupy lub nawet uprawnień pliku nadal pokazywał oryginalne wartości i ignorował moje ustawienia. Po przeczytaniu https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-files

uprawnienia plików

Na NTFS i jeśli noacl zamontować opcja nie jest określona na górze momencie Cygwin ustawia uprawnienia do plików, jak w systemach POSIX.

Pomyślałem, że opcja noacl została ustalona na 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) 

Więc usunąłem noacl opcję z punktach montowania w/etc/fstab i zamknięte wszystkie Cygwin okna. Po ponownym otwarciu konsoli ustawienia uprawnień z chown, chgrp i chmod działały zgodnie z oczekiwaniami.

Powiązane problemy