Я монтирую сетевой диск, используя следующее в /etc/fstab:
$ sudo nano /etc/fstab
//XXX.XXX.XXX.XXX /mnt/bilder cifs auto,username=XXXX,password=XXXX,vers=3.0,uid=1000,gid=1000,file_mode=0777,dir_mode=0777 0 0
Который работает отлично. Когда я теперь проверяю разрешения на /mnt
$ ls -la /mnt
total 8
drwxr-xr-x 3 root root 4096 Jun 23 13:37 .
drwxr-xr-x 22 root root 4096 Jul 12 14:16 ..
drwxrwxrwx 2 pi pi 0 Aug 1 15:04 bilder
то похоже, что пользователь pi (под которым я вошел) имеет права rwx как владелец. На самом деле rwx должен быть у всех.
Но когда я сейчас пытаюсь нажать на /mnt/bilder, мне отказывают.
$ touch /mnt/bilder/test
touch: cannot touch '/mnt/bilder/test': Permission denied
Как и почему это происходит?
решение1
Реальные разрешения файлов Windows не отображаются при монтировании общего ресурса SMB. То, что вы видите, это просто то, что ваши file/dir_mode
параметры fstab говорят клиенту CIFSпоказывать, но эти варианты не позволяют обойти защиту.
(Разрешения на доступ к файлам Windows/SMB немного шире, чем просто rwx
, и для их правильного отображения потребуются другие инструменты, такие как «getcifsacl».)
Однако фактическая проверка доступа по-прежнему выполняется сервером в соответствии с разрешениями на доступ к файлам, установленными в Windows, и сверяется с учетной записью пользователя ( username=
), которую вы использовали для монтирования общего ресурса.
Даже если сервер работает под управлением Samba на Linux, применяется то же самое: все проверки доступа основаны на учетных записях, и хотя клиентмогпоказать реальные права доступа к файлам Linux (если у него достаточно новое ядро, которое поддерживает это расширение SMBv3), он не может их переопределить.