
Я новичок в Cygwin, ssh и возне с правами доступа к файлам, и у меня возникла проблема. На компьютере WORKER1 я пытаюсь подключиться по ssh к компьютеру WORKER2, а затем запустить оттуда файл .sh на WORKER1. Насколько я могу судить по приведенному ниже выводу, ls -l показывает, что должно быть разрешение на все (я знаю, что это плохие разрешения, но я сходил с ума, пытаясь понять, почему я получаю эту ошибку разрешения).
root@Worker1 ~
$ ssh WORKER2
Last login: Tue Jan 31 10:51:54 2012 from worker1
root@Worker2 ~
$ cd //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI
root@Worker2 //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI
$ sh Dos_Commands.WORKER2.1.sh
sh: Dos_Commands.WORKER2.1.sh: Permission denied
root@Worker2 //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI
$ ls -l
total 28
-rwxrwxrwx+ 1 Administrators None 2 Jan 31 11:01 Dos_Commands.WORKER1.0
-rwxrwxrwx+ 1 Administrators None 127 Jan 31 11:01 Dos_Commands.WORKER2.1
-rwxrwxrwx+ 1 Administrators None 250 Jan 31 11:01 Dos_Commands.bat
-rwxrwxrwx+ 1 Administrators None 636 Jan 31 11:01 MPI_COMM_WORLD.mat
-rwxrwxrwx+ 1 Administrators None 97 Jan 31 11:01 MatMPIdefs1.m
-rwxrwxrwx+ 1 Administrators None 199 Jan 31 11:01 p0_p0_t10000_buffer.ma
-rwxrwxrwx+ 1 Administrators None 199 Jan 31 11:01 p0_p1_t10000_buffer.ma
-rwxrwxrwx+ 1 Administrators None 0 Jan 31 11:01 p0_p1_t10000_lock.mat
Оба компьютера работают под управлением Windows 7 64 бит, и на каждом из них я использую последнюю версию Cygwin и OpenSSH. Sshd, работающий на WORKER2, также является sshd от Cygwin. При установке sshd единственным способом, которым я смог заставить его нормально работать, было ответить «нет» на разделение привилегий и «да» на установку в качестве службы при запуске ssh-host-config. Я использую аутентификацию RSA с открытым ключом. Я пробовал монтировать //WORKER1/Users/Public/pMatlab/ как сетевой диск и получать к нему доступ таким образом, но это тоже не помогло. Есть идеи, что может идти не так? Спасибо!
EDIT: Я забыл упомянуть, что мои настройки общего доступа к сети в Windows настроены на разрешение всего, что я вижу. Кроме того, моя папка Public и папки внутри нее, похоже, установлены на доступ только для чтения (в меню правой кнопки мыши -> Свойства), хотя файлы внутри нее — нет. Попытка изменить это в меню Свойства ничего не дает — когда я отключаю режим только для чтения, он просто снова включается, когда я снова открываю меню Свойства. Я попытался изменить это, запустив attrib -r C:\Users\Public в cmd.exe, но это тоже ничего не дало.
Наконец, я не получаю ошибку об отказе в доступе при локальном запуске файла .sh, когда я пытаюсь получить к нему доступ из графического интерфейса Windows на компьютере WORKER2 или когда я подключаюсь по ssh из WORKER2 к нему самому и затем пытаюсь получить к нему доступ. Ошибка доступа появляется только тогда, когда я подключаюсь по ssh из WORKER1 к WORKER2 и затем пытаюсь получить доступ к файлу на WORKER1 оттуда.
Последняя редакция: Проблема решена. Оказалось, что папка была зашифрована! Не знаю почему. Вот как она вышла из zip-файла по какой-то причине.
решение1
Добро пожаловать в чудесный новый мир Unix 1989 года!
Эти славные ребята из TRUSIX — только в этом году — определили расширение для ls
команды, чтобы визуально указать, когда rwxrwxrwx
информация о разрешениях на самом деле не является всей историей. Это расширение — +
символ, следующий за флагами разрешений. Как вы видите, ls
в вашем выводе +
символы повсюду. Это означает, что в ваших файлах есть эти новомодныесписок дискреционного контроля доступаштучки, которые так волнуют людей из TRUSIX. Таким образом, ваш доступ к файламнетобязательно то, что вы можете вывести только из девяти флагов разрешений.
Чтобы компенсировать эти ограничения инструментов Unix старого стиля перед лицом ACL нового стиля, люди из TRUSIX также придумали пару новых команд, getacl
и setacl
. Первая используется для просмотра этих ACL. Я слышу ропот, что люди могли бы предпочестьgetfacl
иsetfacl
как имена. И ходят слухи, что OS/2 версии 3 от Microsoft и IBM, которая находится на чертежной доске, в конечном итоге может закончиться с командами, названными cacls
и xcacls
для просмотра ACL, которые будутдаже лучшечем getfacl
на их операционной системе "Новая технология", потому что они не будут представлять их через призму 3-битного Unix, а скорее такими, какие они есть на самом деле во всех своихстандартные и специфические права drctpoxfew
оба-счета-и-машинное имя слава.
Эта идея обязательно распространится как лесной пожар в мире Unix, частью которого, несомненно, станет каждый в 1990-х. Весьма вероятно, что через 20 лет девять бит разрешений покажутся устаревшими и устаревшими, ACL станут нормой, идаже ворчуны, которые все еще смотрят на девять флагов разрешений, будут знать о них. ☺
дальнейшее чтение
- Крейг Рубин (18 августа 1989 г.). Обоснование выбора функций списка контроля доступа для системы Unix. NCSC-TG-020-A. DIANE Publishing. ISBN 9780788105548.
- Корпорация Microsoft (08.05.2008).Пользователь не может получить доступ к файлу или папке, но должен иметь разрешение. ТехНет.