Bir smbfs mount paylaşımındaki dosyalar yürütülebilir bit kümesi ile neden oluşturulur?


14

Smbmount komutunu kullanarak bir samba paylaşımı ekledim:

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

Yeni dosyalar oluşturduğumda, bunlar sahip, grup ve dünya için çalıştırılabilir bit setiyle oluşturulur. Örneğin;

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

NFS bağlantılı bir paylaşımda oluşturulduğunda aynı dosya, yürütülebilir bir bit kümesi olmadan doğru izinleri ayarlar.

Bu neden oluyor? Nasıl düzeltilebilir?

Yanıtlar:


11

NFS, Unix dünyasında icat edildi ve bu nedenle kutudan çıkan geleneksel Unix izinlerini anlıyor. (Modern unix sistemlerinin ACL'si başka bir konudur, ancak son NFS uygulamaları bunlarla başa çıkmalıdır.)

Samba, IBM / Microsoft PC dünyasında, salt okunur / okuma-yazma ötesinde izni olmayan sistemlerle dosya alışverişi yapmak için icat edildi. Artık Windows'a özgüdür. Samba varsayılan olarak Unix izinlerini iletmez. Yapılandırmaya bağlı olarak, tüm dosyalar yürütülebilir (sinir bozucu) olarak işaretlenir veya tüm dosyalar (dizinler hariç) yürütülebilir olmayan (sinir bozucu) olarak işaretlenir.

Samba / CIFS protokolünün Unix kullanımı için daha uygun olmasını sağlayan çeşitli uzantılar vardır. Sunucu yapılandırmasında Unix uzantılarını etkinleştirmeyi deneyin :

[global]
unix extensions = yes

Maalesef şirket intranetimde sunucuyu yapılandırma erişimim yok. Belki de sadece bir Linux istemcisinde NFS kullanarak monte etmek en iyisidir. Daha büyük sorun, NFS'yi yapılandırmanın boyunda bir acı olduğu bir Windows istemcisinde.
vivekian2

@ vivekian2 Gerçekten, eğer seçiminiz varsa, kesinlikle bir Linux istemcisinde NFS ve bir Windows istemcisinde SMB kullanmanızı öneririm.
Gilles 'SO- kötü olmayı bırak'

10

Bu sizin sorununuz gibi görünüyor, başlıklı: Kopyalanan dosyalar Samba / CIFS'de yürütme biti kazanır .

alıntı

CIFS'ye monte edilmiş birime rw-r ----- içeren bir dosyayı kopyaladıktan sonra, kopya rwxr ----- alır. Yani yürütme biti kazanıyor:

Ayarlayarak, Sayfanın altındaki map archive = noiçinde /etc/samba/smb.conf:

alıntı

  [Global]
  <snip>
  map archive = no
  <snip>

Bu kesinlikle yürütme bayrağı kazanmak Windows'dan kaydedilen dosyaları sorunu çözer. Teşekkürler! Başka bir deli varsayılan, son yirmi yılda kimse arşiv bayrakları kullandı mı? :)
Rennex

4

Deneyebilirsiniz: mount -t cifs

Google, kullanım için "montaj ciflerini" anlaması zor değildir, ancak -o bayrağını kullanarak seçenekleri ayarlamak istersiniz:

uid = gid = RW, noperm, dir_mask = 0775, dosya maskesidir = 0664

Kullanıcı ve grup kimliğidir, sayısal olarak metin takma adı değil. Bu seçenekler, r / w erişiminizin olmasını sağlar, izinler sunucuya file_mask=0664bağlı değil tarafından denetlenir ve özellikle dosyalarınızın yürütülebilir olmadığından emin olur. Bunun da ötesinde, yerel dizinler olarak samba paylaşımlarınızla çalışabilirsiniz.


Samba son sürümünde kullanmak gerekebilirfile_mode=0644,dir_mode=0755
Jokester

UYARI: CIFS montaj seçeneği 'dmask' kullanımdan kaldırılmıştır. Bunun yerine 'dir_mode' kullanın. UYARI: CIFS takma seçeneği 'fmask' kullanımdan kaldırıldı. Bunun yerine 'file_mode' kullanın.
Hubbitus

4

Bunun neden olduğunu Samba web sitesinde MS-DOS ve Unix Dosya İzinleri ve Öznitelikleri bölümünde aşağıdaki açıklamadan öğrenebilirsiniz :

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

Bir MS-DOS dosya sistemi için sistemi, gizli ve arşiv bit eşleme ile ilgilidir.

MS-DOS dosya sistemi yürütülebilir bitleri kullanmaz, bu nedenle Unix dosya sistemindeki üç yürütülebilir bit, MS-DOS dosya sistemi için Sistem, Gizli ve Arşiv bitlerini temsil etmek üzere yeniden kullanılır.

ls -lUnix'te kullanarak dosya izinlerini görüntülediğinizde, Unix'teki üç yürütülebilir bitin MS-DOS için Sistem, Gizli ve Arşiv bitlerini temsil ettiğini göz önünde bulundurarak MS-DOS (veya Windows) için uygun dosya izinlerini görüntülersiniz.

In smb.confAncak, bir payla yapılabilmesi için bu eşleştirmeyi kapatabilirsiniz:

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

ve modu aşağıdakilerle dosya oluşturmaya zorlayın:

force create mode = 0660

Çok basit olduğu ortaya çıktı ... Açıklamalar için teşekkürler!
anton_rh

1

Bir QNAP TS439 kullanıyorum - ve dosyaların yürütülebilir olmasıyla ilgili bu sorun vardı.

Benim de aşağıdaki kullanmak zorunda olsa da /etc/fstabdosyanın

//192.168.0.1/audio /media/audio cifs credentials=/home/cheese/.smbcredentials,uid=1000,file_mode=0664,iocharset=utf8  0  0 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.