Почему я могу перейти в неисполняемые каталоги, смонтированные с помощью sshfs?
391
iFreilicht
Я заметил, что могу переходить в неисполняемые каталоги, которые монтируются с помощью sshfs
.
Сначала я создал каталоги со всеми восемью возможными режимами:
$ pwd /mnt/remote $ for i in ; do mkdir test_$i; chmod $i$i$i test_$i; done $ ll total 32K d--------- 2 <user> <user> 4,0K Okt 19 12:39 test_0 d--x--x--x 2 <user> <user> 4,0K Okt 19 12:39 test_1 d-w--w--w- 2 <user> <user> 4,0K Okt 19 12:39 test_2 d-wx-wx-wx 2 <user> <user> 4,0K Okt 19 12:39 test_3 dr--r--r-- 2 <user> <user> 4,0K Okt 19 12:39 test_4 dr-xr-xr-x 2 <user> <user> 4,0K Okt 19 12:39 test_5 drw-rw-rw- 2 <user> <user> 4,0K Okt 19 12:39 test_6 drwxrwxrwx 2 <user> <user> 4,0K Okt 19 12:39 test_7
Затем я просто проверил, смогу ли я cd
в каждом из них.
$ for i in ; do cd test_$i; echo $?; cd /mnt/remote; done 0 0 0 0 0 0 0 0
Так cd
получается даже для неисполняемых каталогов, что должно быть невозможно. *
Согласно предложению в комментариях, я также попытался перечислить каталог после открытия его:
$ for i in ; do cd test_$i && ls >/dev/null; echo $?; cd /mnt/remote; done ls: reading directory .: Permission denied 2 ls: reading directory .: Permission denied 2 ls: reading directory .: Permission denied 2 ls: reading directory .: Permission denied 2 0 0 0 0
Интересные каталоги здесь не test_4
и test_6
как они разрешение на чтение, но не выполнение. Тем не менее, ls
удается для них обоих. Это терпит неудачу для test_0
сквозного test_3
, которые пропускают разрешение на чтение.
Почему это происходит?
*: Чтобы подтвердить это, я провел такой же эксперимент на моей локальной машине:
$ for i in ; do cd test_$i; echo $?; cd ~/work/permission_tests; done cd: permission denied: test_0 1 0 cd: permission denied: test_2 1 0 cd: permission denied: test_4 1 0 cd: permission denied: test_6 1 0
Так что это дает ожидаемые результаты там.
Предполагая, что вы не входили в систему с правами суперпользователя как root, я предполагаю, что sshfs не проверяет разрешения до тех пор, пока ему не придется что-то делать в каталоге. Попробуйте добавить ls после компакт-диска и посмотреть, если это удастся - я думаю, что не будет.
Michael Kohne 6 лет назад
0
Да, я захожу как обычный пользователь. Я добавил этот эксперимент к вопросу. TL: DR; `ls` не заботится о разрешении на выполнение, только о чтении. Таким образом, поведение такое же, как и при листинге вне каталога.
iFreilicht 6 лет назад
0
Технически вы можете ls ... Быть неисполняемым действительно мешает вам получить доступ к инодам файлов под ним. Таким образом, `ls / path / to / nonexec` даст вам имена файлов, но не более того, поскольку для этого ему необходим доступ к индексам файлов, а это невозможно, поскольку каталог находится в не-exec. `ls` и` ls .` не работают, потому что использование `.` требует обхода каталога.
xenoid 6 лет назад
0
@iFreilicht разрешения на чтение и исполнение для каталога - две разные вещи. Non-read запрещает вам перечислять содержимое, а non-exec не позволяет использовать этот каталог в пути для доступа к его дочерним элементам. С + x / -r вы можете использовать детей, если знаете их имена.
xenoid 6 лет назад
1
@xenoid А, так что при дальнейшем исследовании `ls` делает мягкий провал. Он ничего не перечисляет, даже если в каталоге есть файлы, но завершится с кодом 0. Очень интересно.
iFreilicht 6 лет назад
0
Действительно, на странице man для sshfs сказано, что чтение по умолчанию асинхронно, поэтому я думаю, что на самом деле чтение не выполняется до тех пор, пока в этом нет необходимости, и поэтому не перестает работать с 'ls'.
djsmiley2k 6 лет назад
0
`-o async_read выполнить чтение асинхронно (по умолчанию) -o sync_read выполнить чтение синхронно`
djsmiley2k 6 лет назад
0
В дополнение к тому, что было сказано, `sshfs` является файловой системой FUSE, и, как таковая, она по своей природе« принадлежит »пользователю, который ее запустил, независимо от того, что говорят разрешения для файла. Есть такие опции, как `-o allow_root` и` -o allow_others`, но у них есть интересные ошибки, и другие интересные вещи случаются, если root запускает `sshfs`. Поэтому я не удивлен, что разрешения не совсем соответствуют ожиданиям, хотя я не могу точно указать детали и причины.
dirkt 6 лет назад
2
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4