Почему файлы в смонтированном общем ресурсе smbfs создаются с установленным исполняемым битом?

14

Я смонтировал общий ресурс samba с помощью команды smbmount:

$ sudo smbmount \\\\foo\\bar /mnt/bar -o user=tom

Когда я создаю новые файлы, они создаются с исполняемым битом, установленным для владельца, группы и мира. Например,

$ touch hello.txt 
$ ls -la hello.txt
-rwxr-xr-x 1 root root 0 Dec  2 12:28 hello.txt

Этот же файл при создании на смонтированном общем ресурсе NFS устанавливает правильные разрешения без установки исполняемого бита.

Почему это происходит? Как это можно исправить?

vivekian2
источник

Ответы:

11

NFS была изобретена в мире Unix и поэтому понимает традиционные разрешения Unix из коробки. (ACL современных Unix-систем - это другой вопрос, но последние реализации NFS должны справиться с ними.)

Samba была изобретена в мире компьютеров IBM / Microsoft для обмена файлами с системами, у которых не было разрешений, кроме чтения и записи. Теперь это родной для Windows. По умолчанию Samba не передает разрешения Unix. В зависимости от конфигурации все файлы помечаются как исполняемые (что раздражает) или все файлы (кроме каталогов) помечаются как неисполняемые (что раздражает).

Существуют различные расширения протокола Samba / CIFS, которые делают его более подходящим для использования в Unix. Попробуйте включить расширения Unix в конфигурации сервера:

[global]
unix extensions = yes
Жиль "ТАК - перестань быть злым"
источник
К сожалению, в интрасети моей компании у меня нет доступа для настройки сервера. Возможно, было бы лучше монтировать, просто используя NFS на клиенте Linux. Большая проблема на клиенте Windows, где настройка NFS - боль в шее.
vivekian2
@ vivekian2 Действительно, если у вас есть выбор, я определенно рекомендую использовать NFS на клиенте Linux и SMB на клиенте Windows.
Жиль "ТАК - перестань быть злым"
10

Это звучит как ваша проблема под названием: Скопированные файлы получают бит выполнения на Samba / CIFS .

выдержка

После копирования файла с помощью rw-r ----- на том, смонтированный на CIFS, копия получает rwxr -----. Таким образом, он получает бит выполнения:

Далее вниз по странице, установив map archive = noв /etc/samba/smb.conf:

выдержка

  [Global]
  <snip>
  map archive = no
  <snip>
SLM
источник
Это определенно решает проблему файлов, сохраненных из Windows, получающих флаг выполнения. Благодарность! Еще один безумный дефолт, кто-нибудь использовал архивные флаги за последние 2 десятилетия? :)
Rennex
4

Вы можете попробовать: mount -t cifs

Google "смонтировать cifs" для использования, это не сложно понять, но вы захотите установить параметры, используя флаг -o:

UID =, = GID, RW, noperm, dir_mask = 0775, = 0664 маска_файлов

Пользователь и группа являются идентификаторами, как в числовом, а не текстовом псевдониме. Эти параметры гарантируют, что у вас есть права доступа, права доступа контролируются монтированием на сервере и, в частности file_mask=0664, гарантируют, что ваши файлы не будут исполняемыми. Кроме того, вы сможете работать с общими папками samba в качестве локальных каталогов.

MAKR
источник
В последней версии самбы, возможно, придется использоватьfile_mode=0644,dir_mode=0755
Jokester
ВНИМАНИЕ: опция монтирования CIFS 'dmask' устарела. Вместо этого используйте «dir_mode». ВНИМАНИЕ: опция монтирования CIFS 'fmask' устарела. Вместо этого используйте «file_mode».
Hubbitus
4

Вы можете узнать, почему это происходит, из следующего объяснения на веб-сайте Samba в разделе « Разрешения и атрибуты файлов» в разделах MS-DOS и Unix :

https://www.samba.org/samba/docs/using_samba/ch08.html

Это связано с отображением битов System, Hidden и Archive для файловой системы MS-DOS.

Файловая система MS-DOS не использует исполняемые биты, поэтому три исполняемых бита в файловой системе Unix используются повторно для представления системных, скрытых и архивных битов для файловой системы MS-DOS.

Поэтому, когда вы просматриваете разрешения для файлов, используемые ls -lв Unix, вы просматриваете разрешения для файлов, подходящие для MS-DOS (или Windows), имея в виду, что три исполняемых бита в Unix представляют биты System, Hidden и Archive для MS-DOS.

В smb.conf, однако, вы можете превратить это отображение от за акцию с:

map archive = no
map system = no
map hidden = no

и включите режим создания файлов с:

force create mode = 0660
Стейси Ричардс
источник
Оказалось так просто ... Спасибо за объяснения!
anton_rh
1

Я использую QNAP TS439 - и эта проблема была с исполняемыми файлами.

Хотя я должен был использовать следующее в моем /etc/fstabфайле

//192.168.0.1/audio /media/audio cifs credentials=/home/cheese/.smbcredentials,uid=1000,file_mode=0664,iocharset=utf8  0  0 
layolayo
источник