Почему я не могу выполнить chmod в Cygwin на Windows 8 CP?

Я не могу разрешить группу chmod в Cygwin в Windows 8, поэтому я не могу подключиться по ssh к серверу с помощью ключа ssh.

Предупреждение Bash: «Разрешения 0660 для '/home/KeepZero/.ssh/id_rsa' слишком открыты. Требуется, чтобы ваши файлы закрытого ключа НЕ были доступны для других».

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

person KeepZero    schedule 05.03.2012    source источник
comment
Работает на меня. Какую файловую систему вы там используете?   -  person ak2    schedule 05.03.2012
comment
Ах, я не заметил, что это на Windows 8, так что забудьте мой комментарий. Я думаю, лучше всего сообщить об этом в список рассылки Cygwin.   -  person ak2    schedule 05.03.2012


Ответы (5)


Сделайте ls -al, и вы увидите, что ваши файлы не принадлежат ни к какой группе (ни одной).

Просто сделайте chgrp Users * со своими файлами, и все снова в порядке.

person Roi Danton    schedule 17.04.2012
comment
Спасибо, что исправили это для меня! - person Andy White; 20.07.2012
comment
Это исправило это и для меня! Большое спасибо! - person Marcus Johansson; 29.10.2012
comment
Да, и не забудьте сделать свою chmod 600 <file> после - person Peter Theill; 01.11.2013
comment
Я только что нашел это в поиске Google. Как это влияет на создание файлов вне Cygwin? Итак, если, например, я chgrp Users * ~, а затем хочу отредактировать файл, открыв его через проводник в Блокноте? Это все еще работает нормально? И если да, то есть ли документ, в котором говорится, почему они вообще не делают этого по умолчанию? - person Milo Gertjejansen; 21.11.2013
comment
Этот ответ не решает исходную проблему, и он будет делать эту ошибку каждый раз, когда вы создаете новый файл. Второй ответ решает проблему. - person orion78fr; 23.01.2014
comment
Кстати, вам может потребоваться перевести Users в команде. Например, моя французская Windows ожидает chgrp Utilisateurs *. - person philippe_b; 10.04.2014
comment
Список групп доступен в /etc/group. Выберите один из них. - person david; 28.05.2014

Решение Рой Дантон работает , однако это не решает основную причину, и проблема будет повторяться с любым созданным пользователем файлом, для которого вы хотите изменить разрешения.

Чтобы решить проблему навсегда:

  1. Найдите идентификатор группы «Пользователи» в /etc/group (или эквивалентное имя группы для вашего региона).

    В моей установке это было 545 (ваш пробег может отличаться). cat /etc/group|egrep '^Users:' предоставит вам правильную строку. Третье поле в строке - это идентификатор группы. (cat /etc/group|egrep '^Users:'|cut -f3 -d':', чтобы просто получить идентификатор).

  2. Отредактируйте свой /etc/passwd файл. Найдите запись для вашего пользователя. Четвертое поле - это «основная группа» для пользователя. Он неправильно настроен на несуществующую группу. Измените это число на число, которое вы нашли на шаге 1 выше. Сохраните etc файл паролей.

  3. Закройте все открытые окна / терминалы Cygwin, а затем откройте новый. Создайте новый файл. У него должна быть группа «Пользователи», и вы должны иметь возможность изменять ее разрешения по своему усмотрению.

person Robert    schedule 07.12.2012
comment
Этот ответ следует принять, поскольку он решает исходную проблему и не является небольшим исправлением. Обратите внимание, что имя группы зависит от языка пользовательской машины. В моем случае это были Utilisateurs (по-французски). - person orion78fr; 23.01.2014
comment
$ cat / etc / group | egrep '^ Usuarios:' | cut -f3 -d ':' для испанских пользователей. - person JorgeGT; 26.04.2014
comment
Это первое из найденных мной решений, позволяющее использовать -R myuser: myuser / usr / share / zsh - person zzapper; 15.09.2014

Возможная причина этой проблемы в том, что вы скопировали папку .ssh на настоящий компьютер ...

Создайте свою папку, и тогда вы получите нужную группу пользователей. Не копируйте папки ... они назначаются несоответствующим группам пользователей.

person ayko    schedule 07.03.2014

У меня была такая же проблема на 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)

Поэтому я удалил параметр noacl из точек монтирования в /etc/fstab и закрыл все окна Cygwin. После повторного открытия консоли настройка разрешений с помощью chown, chgrp и chmod работала должным образом.

person Evil.2000    schedule 24.01.2018
comment
Я вижу noacl в выводе mount, но не в /etc/fstab. Не могли бы вы показать, что у вас сейчас в /etc/fstab? - person Wildcard; 30.10.2018

Я столкнулся с той же проблемой в Windows 10 в командной строке Cygwin.

Для файла идентификатора только пользователь root должен иметь полное разрешение, а для других пользователей должно быть ограничение / отсутствие разрешений.

Следующая команда решает проблему,

 chmod 700 <id-file>
person PHP Dev    schedule 22.08.2019