cygwin устанавливает разрешение на доступ к файлу 000 - PullRequest
56 голосов
/ 29 апреля 2011

У меня есть папка / cygwin / d / myfolder / И каждый раз, когда я сохраняю файлы там, из cygwin, если я делаю ls -la, я вижу, что файлам дано разрешение 000. Это на самом деле вызывает у меня немало проблем, так как я пересылаю эту папку на свой сервер, и ни один из файлов не доступен , Как я могу получить файлы для автоматического получения разумного разрешения?

Ответы [ 4 ]

116 голосов
/ 16 августа 2011

Прочитайте ответы по этой ссылке: http://cygwin.1069669.n5.nabble.com/vim-and-file-permissions-on-Windows-7-td61390.html

Решение там у меня тоже сработало:

Редактировать / etc / fstab и добавить эту строку в конец файла:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

Затем закройте все процессы Cygwin, откройте новый терминал и снова ls -l для ваших файлов.

Пояснение: По умолчанию Cygwin использует списки управления доступом (ACL) файловой системы для реализации реальных разрешений POSIX. Некоторые собственные программы или процессы Windows могут создавать или изменять ACL-списки, так что Cygwin вычисляет разрешения POSIX как 000. С опцией монтирования noacl Cygwin игнорирует ACL файловой системы и подделывает только подмножество битов разрешений на основе Атрибут DOS только для чтения.

6 голосов
/ 10 августа 2011

Убедитесь, что ваш umask установлен правильно с помощью команды umask. Если ваш umask, скажем, 0777, это вычитает из разрешений новых файлов и в итоге получит 000 разрешений. Вероятно, есть несколько других возможностей для рассмотрения помимо этого.

Если ваш идентификатор установлен неправильно в / etc / passwd и / etc / group, это также может привести к тому, что ls покажет неожиданные результаты. Проверьте права доступа к папке. Также проверьте разрешения Windows с помощью команды getfacl. Может также проверить команду монтирования.

3 голосов
/ 23 января 2018

В приведенном выше ответе было предложено решение:

Отредактируйте / etc / fstab и добавьте эту строку в конец файла:

none / cygdrive cygdrive binary, noacl,posix = 0, пользователь 0 0

И в этом ответе был этот комментарий:

Когда я пытаюсь это сделать, все мои файлы -rw-r - r- независимо от того, что chmod () я делаю.Я не могу пометить файлы как исполняемые;он просто возвращается к 0644. (umask == 0022)

У меня была такая же проблема, но она проявлялась в невозможности выполнения пакетных файлов DOS (* .bat) при запуске Cygwin ksh или mksh.Я наткнулся на этот сайт: http://pipeline.lbl.gov/code/3rd_party/licenses.win/cygwin-doc-1.4/html/faq/, который содержит этот полезный совет:

Обратите внимание, что вы можете использовать mount -x, чтобы заставить Cygwin рассматривать все файлы в точке монтирования как исполняемые.Это может быть использовано как для отдельных файлов, так и для каталогов.Тогда Cygwin не будет читать файлы, чтобы определить, являются ли они исполняемыми.

Итак, сделайте перекрестную ссылку на эту страницу - https://cygwin.com/cygwin-ug-net/using.html#mount-table - с ее советом:

cygexec - Обрабатывать все файлы ниже точки монтирования как исполняемые файлы cygwin.

Я добавил cygexec в четвертое поле моего fstab.Это сделал это.Мой .bat теперь исполняемый внутри ksh / mksh, что необходимо, так как я выполняю задание Jenkins, которое вызывает стек оболочки Korn глубиной 3 файла, над которым я не могу изменять.Мне просто нужно было запустить .bat!

Обновление: приведенное выше решение не совсем то, что мне было нужно, при дальнейшем тестировании.Это привело к тому, что некоторые исполняемые файлы, такие как javac и cl, вели себя странно (утилиты распечатывали их использование и выходили).Я думаю, что вместо «cygexec» мне нужно было просто «exec».Как отмечает та же страница:

exec - Обрабатывать все файлы ниже точки монтирования как исполняемые.

2 голосов
/ 17 июня 2014

На моем ПК с Win7 файлы обычно были ---------- + 1 David None 69120 17 июня, 13:17 mydoc.txt

Я перепробовал все вышеперечисленное, не повезлоу меня в .zshrc были старые записи о монтировании, я удалил их, и проблема Боба с твоим дядей исчезла!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...