Назад | Перейти на главную страницу

Cygwin не видит общий ресурс Windows как папку - нет атрибута «d»?

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

Я установил Cygwin 1.7 на Windows Server 2008/64 для поддержки автоматической настройки передачи файлов. Хотя базовая установка в целом работает должным образом, у меня есть одна любопытная проблема, которую необходимо решить.

После входа на сервер из командной строки Windows через ssh я выполняю "ls -l" для UNC-пути сервера, например:

$ ls //servername

Это возвращает список общих ресурсов на этом сервере; однако некоторые из общих ресурсов указаны без установленного атрибута «d» (каталог) - Cygwin видит их только как обычные файлы. В результате попытки cd к пути к общему ресурсу завершаются ошибкой «Not a directory». Однако ls против этого имени общего ресурса работает.

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

Вот типичный, хотя и сокращенный, список команды ls, в котором фактические имена общих ресурсов / серверов / владельцев заменены на ShareNameN, servername или UserName в зависимости от ситуации. UserName - это имя сеанса пользователя ssh.

$ ls -l //servername
total 33636078380235
drwxrwxrwx+ 1 Administrators Domain Users                 0 Nov 26 10:35 ShareName1
-rw-r--r--  1 UserName       Domain Users 18193726281664696 Apr 22  2009 ShareName2
-rw-r--r--  1 UserName       Domain users 18189229448232975 Aug  4  1909 Share Name3

$ ls -l //servername/ShareName2
//servername/ShareName2

$ cd //servername/ShareName2
-bash: cd: //servername/ShareName2: Not a directory

$ ls //servername/"Share Name3"
//servername/Share Name3

$ cd //servername/"Share Name3"
-bash: cd: //servername/Share Name3: Not a directory

Я пробовал другие перестановки указанного пути UNC, проверял разрешения для общего ресурса и базовой папки, но пока безуспешно. Пользователь аутентифицируется с помощью фактического пароля, а не сертификатов.

Скорее всего, я упускаю что-то очевидное, поэтому, если кто-то увидит ошибку в моем пути, я буду очень признателен!

РЕДАКТИРОВАТЬ: я только что заметил интересную закономерность, которая может быть фактором этой проблемы.

Я только что заметил, что те общие ресурсы, указывающие дату создания, отличную от нескольких последних месяцев - те, в которых указано время дня, а не год - также не имеют атрибута каталога, установленного с помощью команды «ls». Для всех общих ресурсов, в которых указано время суток, установлен атрибут каталога, и они нормально работают с помощью команды cd ...

Я определил причину этой проблемы, благодаря старому доброму ProcMon. Во время перечисления общих ресурсов ProcMon выдавал сообщение «ДОСТУП ОТКЛОНЕН» при попытке открыть / запросить общие ресурсы, которые не удавались, но «УСПЕШНО» на тех, которые работали.

Учетная запись, используемая для ssh на рассматриваемом сервере, не имела разрешений на чтение для рассматриваемых общих ресурсов. Предоставление учетной записи разрешений на чтение для общего ресурса (-ов) разрешило поведение субъекта.