[Megoldva] SAMBA "Public Folder" gondok

Sziasztok!

Rendesen sikerült megszivatnom magam, remélem tudtok segíteni :-).

Az itthoni hálózatom minden megosztása eddig NFS-sel működött. Nem is volt semmi gond, amíg el nem jutottam addig a ponti, amikor is több tényező miatt át kellett állnom SAMBA-ra.Gondoltam... nem gáz, nem olyan nagy dolog. Utánaolvastam a dolgoknak, csináltam egy pöpec kis smb.conf-ot. Minden nagyszerűen müxik. Olyanok is amiket NFS mellett el sem tudtam képzelni.... (és most jön a "kivéve"), kivéve a "Public Folder"-t. Talán nem kell magyaráznom, hogy mi is akar lenni ez a Public Folder. Minden gépről el lehessen érni, file jogok legyenek 0666, folder jogok 0777, user és group pedig legyen share.
Az user-t és group-ot be tudom állítani a force user/group opcióval, a jogokat pedig elméletileg a "create mask" és társaival tudnám állítani, de az istenért sem müxik.

kivonat a smb.conf-ból:


[SHARED]
        path = /mnt/250GB/exports/shared_folder
        read only = No
        guest only = Yes
        guest ok = Yes
        create mask = 0666
        directory mask = 0777

Lehet hogy rosszul értelmezem a doksikat, de szerintem ennek azt kellene csinálni amit én szeretnék nem? A mai délutánt guglival és man oldalakkal töltöttem, de nem jutok tovább.

Több helyen (pl itt) találkoztam ezzel a problémával a neten (itt a hup-on is), de megoldást sehol sem találtam. Van valami ötletetek?

Ja és mielőtt elfelejtem, a gépen egy frissen telepített debian testing van.

Hozzászólások

Mindenesetre én is tudok ám... a pontos hibát le sem írtam :-)

Akár melyik gépről felcsatolom a megosztást, és létrehozok egy fájlt (

touch valami.fajl

), akkor az nem 666-os, hanem 644-es jogokkal jön létre.

És lassan kifogyok az ötletekből.

Hát akkor valamit nagyon félreérthettem. Én ebből a sorból indultam ki:

Részlet a man smb.conf/create mask pontból:

"...Following this Samba will bit-wise ’OR’ the UNIX mode created from
this parameter with the value of the force create mode parameter
which is set to 000 by default..."

Ezt én úgy értelmeztem, hogy a "force create mode"-ra (ami alapban 000) és a "create mode"-ra VAGY műveletet hajt végre, vagyis effektíve 000 | 666 => 666

Ha rosszul értelmezem, akkor már valszeg az angol tudásom a kevés. Tudnál légyszives segíteni?

Ez azt jelenti, hogy (klienskeres & create mask) | force create mode lesz beallitva.
Azaz a create mask arra szolgal, hogy a kliens legfeljebb azokat a biteket billentheti be, ami a create mask-ban meg vannak adva. A force create mode pedig azt, ami feltetlenul be lesz allitva, fuggetlenul attol, mit kert a kliens, es hogy modositotta azt a create mask.

Aham. Vagyis akkor amit a force-szal beállítok, az feltétlenül be lesz billentve? Erre gondoltam én is, de sajnos akkor sem működik, ha a force-ot beállítom.

Ja és időközben próbálkoztam. Az eredmény? Bármilyen kombinációban, akármilyen maszkot állítok be, force vagy force nélkül, nagy ívben tesz rá... A kliens gépről egy "touch valami" létrehozza a valami fájlt a megosztáson, de 644-es jogokkal.

Most tartunk ott, hogy nem igazan hiszem el, amit irsz...

force create mode = 777 mellett feltoltott file jogai:

getfacl log.nmbd-1
# file: log.nmbd-1
# owner: wildy
# group: wildy
user::rwx
user:wildy:rwx
group::rwx
mask::rwx
other::rwx

Enelkul viszont:

getfacl log.nmbd
# file: log.nmbd
# owner: wildy
# group: wildy
user::rwx
user:wildy:rwx
group::r--
mask::rwx
other::r--

Eleg szembetuno a kulonbseg. Mind CIFS-en keresztul, mind smbclient hasznalataval ugy mukodik, ahogy kell. Mindez egy 3.0.28-as samba, debian SID, ACL-es XFS filerendszerrel.

Ok, gondoltam nagyon elb*** valamit, úgyhogy nekiálltam előlról. Csont nulláról írtam egy új smb.conf-t. Először nézzük force create nélkül:


lac@laptop[~]$> cd /mnt/fileserver/teszt_mappa/
lac@laptop[teszt_mappa]$> ls -l
total 0
lac@laptop[teszt_mappa]$> touch teszt
lac@laptop[teszt_mappa]$> ls -l
total 0
-rw-r--r-- 1 shared shared 0 2007-12-23 18:48 teszt
lac@laptop[teszt_mappa]$> 

Utána umount, smb.conf szerkesztés, /etc/init.s/samba restart (biztos ami biztos) és megint tesztelünk:


lac@laptop[fileserver]$> mkdir /mnt/fileserver/ujteszt
lac@laptop[fileserver]$> cd ujteszt/
lac@laptop[ujteszt]$> ls -l
total 0
lac@laptop[ujteszt]$> touch ujvalami
lac@laptop[ujteszt]$> ls -l
total 0
-rw-r--r-- 1 shared shared 0 2007-12-23 18:50 ujvalami
lac@laptop[ujteszt]$> 

Lehet, hogy hihetetlen, de így van. Ha azt a linket megnézed amit belinkeltem, ott a srácnak is ugyanez volt a problémája (igen, tudom hogy az egy régi post), és nem tudták megoldani.

Ééééés ott a pont. Köszönöm szépen. De tényleg... ezt így privát abszolút nem ismertem. Az smb.conf-ba egy "unix extensions = no" meg is oldotta problémát.

Szerk: Asszem túl gyorsan örültem. Minden OK, amíg a terminálon kiadom az umask 000 parancsot.
Sajnos véletlenül másodszorra ugyanabban a konzolban próbáltam ki, ezért lett fals siker... :-)

Szóval ez az umask dolog müxik rendesen, de hogyan tudom én azt megcsinálni hogy a szerver ezzel ne foglalkozzon? Egyenlőre nem sokmindent talátam a neten.

Nem ez a gondod... A problema az, hogy a szerver arra allitja, ami az smb.conf-ban van, a kliens viszont lokalisan mast mutat (amig valid a cache, lasd pl. umount/mount utan latszolag valtoznak a jogok), egy ideje mar a cifs forrasat turom, hogy ezt felul lehet-e biralni, egyelore ugy tunik, hogy nem :(

Sajnos a szerveren sem jó. Csináltam egy képet. Ezen rajtva 2 kliens, meg a szerver terminál ablaka (SSH Rulez). GEP_1-en létrehozok egy fájlt, majd megnézem a jogokat GEP_2-n és SERVER-en.

Ha GEP_1-en kiadom az "umask 000" parancsot, utána már a másik gépen, és a szerveren is rendben vannak a jogok. Erről is csináltam képet.

Kipróbáltam unix extensions = no -val:

kliens:
touch aaa
ls -l
-rw-r--r-- 1 xxx xxx 0 2007-12-24 17:30 aaa

szerver:
ls -l
-rw-rw-rw- 1 xxx xxx 0 Dec 24 17:30 aaa

Szóval így azt hozza, amit kell...De ha a unix extensions ki van kapcsolva, akkor az umask nem is tudná befolyásolni a jogot.

Most nem tudom kipróbálni, de a
"guest only = Yes"-re semmi szükség

Van hasonló megosztásom a hálón, átírtam kb a tiédre. Próbáld meg így, nekem megy szépen.

[SHARED]
comment = Shared dir
path = /mnt/250GB/exports/shared_folder
browsable = yes
writable = yes
hosts allow = (engedélyezett hostok)
hosts deny = any
force user = share
force group = share
create mask = 0666
directory mask = 0777

-- pgergely --

Csak egy ötlet a jogosultságokat simán 777 vagy 666 ként add meg. Figyelj arra, hogy a samba ban létrehozott csoportok és felhasználók nem egyeznek meg a linux felhasználókkal csoportokkal. Ha nem haladsz tedd fel a webmint ott simán összekattogtathatod a beállításokat html felületen. Jobb tletem nincs most. :)

Na... végre sikerült időt szakítanom erre a dögre, és úgy néz ki végre úgy működik ahogy kell. Szerver oldalon szükség volt a 'unix extensions = no'-ra, valamint minden kliens fstab-jába a 'noperm'-re, a 'file_mask=0666'-ra valamint a 'dir_mask=0777'-re. Ezek nélkül nem megy.
Eddig úgy tűnik jó, habár most épp nincs lehetőségem kipróbálni windows klienssel. Remélem nem kell tovább görcsölni vele.

Mindenkinek köszönöm a segítséget!