Könyvtár, fájl megosztás: egy számítógép, több felhasználó, közös tárterület teljes hozzáféréssel (Debian, Linux Mint)

Fórumok

Sziasztok!

Segítséget szeretnék kérni abban, hogy egy több felhasználós számítógépen hogyan lehet könyvtárat, fájlt megosztani a legegyszerűbben, hogy a megosztott könyvtár alatti már létező és majd később létrejövő könyvtárak/fájlok minden helyi felhasználónak teljes eléréssel hozzáférhető legyen. Debian 10 és Linux Mint 19 rendszereken alkalmazható megoldások érdekelnének. Próbálkoztam SAMBA beállításával, de nem igazán akar működni. Fájlkezelőből a könyvtár és fájl megnyitása, módosítása Linux Mint alatt működik, Debian alatt viszont a csoport csak olvasható jogokkal rendelkezik.

Hozzászólások

groupadd shared

mkdir /data/shared

chgrp shared /data/shared

chmod 770 /data/shared

chmod g+s /data/shared

 

Aztán akit akarsz, azt belerakod a localusers csoportba, és tudja írni/olvasni a könyvtárat.

Végig csináltam a leírtak alapján, minden felhasználót hozzáadtam a csoporthoz és a gépet is újra indítottam. Ezután sima felhasználóval létrehoztam könyvtárat, fájlt, de a csoportnak csak olvasási joga van alapban. Rekurzívan is próbáltam  a jogokat állítani, de az csak a meglévő adatokra lesz érvényes, az új adatok csoport szinten csak olvasási jogokkal rendelkeznek.

Sajnos eddig minden leírás ezt az eredményt adta.

Az acl-t eszerint csináltam végig: https://www.server-world.info/en/note?os=Debian_10&p=acl

Sajnos csak a már létező adatokra lépett érvénybe, az újakra nem --> csoport továbbra is csak olvasni tudja az új fájlokat. Újraindítás sem segített.

A fájlmegosztás új terület Linux alatt nekem, inkább felhasználó vagyok, mint IT szakmabeli (más területen dolgozom). Sajnos ötletem sincs, hogy hol bénázhatok.

Lehet systemd szinten kellene valamit bekapcsolnom, hogy gép induláskor már minden működjön?

A Debian telepítésem 7-esként kezdte (dist-upgrade jelenleg 10-esig), netinstallból, mindent apránként telepítettem, állítottam be. Nagyon minimálon tartva a rendszert. Lehet ez sem jó. Standalone gépeket "jól" tudok "adminisztrálni", de a hálózat/megosztás egy új terület, eddig nem volt rá igény. Mivel idő közben több pc lett, ami azonos fájlokat használna, így lett egy új megoldandó dolog. Ez van most :)

Köszönök minden segítséget, igyekszem nem értetlenkedni.

En egy kicsit maskent csinaltam volna, mintha a cikk egy kicsit tul lenne bonyolitvaes vsak atfutottam, de mintha pont a default hianyozna is. Eredendoen ennyire gondolok:
 

chmod g+s mappaamitakarsz
setfacl -d -m g::rwx /mappaamitakarsz
setfacl -d -m o::rx /mappaamitakarsz

Bevallom most csak próbáltam összegezni az eddigieket, gépen nem volt most időm kipróbálni a következőket:

# Helyi gépen közös felhasználású könyvtár, teljes eléréssel
1. Könyvtár létrehozása
sudo mkdir /home/share1
2. A közös "share1" csoport létrehozása
sudo groupadd share1
3. A "user1" felhasználó létrehozása és hozzáadása a "share1" másodlagos csoporthoz
sudo useradd -G share1 user1
4.  Csoport hozzárendelése a könyvtárhoz
sudo chgrp share1 /home/share1
5. Jogosultságok beállítása
sudo chmod 770 /home/share1
6. ACL telepítése
sudo apt install -y acl
7. Alapértelmezett csatolási opció megjelenítése, ha a /home partíció az sda3
sudo tune2fs -l /dev/sda3 | grep "Default mount options"
# Rendszer válaszként ezt kapjuk, ha az acl opció elérhető
Default mount options:    user_xattr acl
9. Csoport jog beállítsa a könyvtárra és az alkönyvtárakra
sudo chmod g+s /home/share1
10. ACL beállítása a csoportra
setfacl -d -m g::rwx /home/share1
11. ACL beállítása a csoporton kívüli személyekre
setfacl -d -m o::rx /home/share1
12. Gép újraindítása
sudo reboot

 

Ha a pontok összeszedésében elvi hiba van, kérlek egészítsd ki, javíts bele. Lehet valamelyik korábbi csomag telepítés befolyással volt az eredményre, de jelenleg erre a következtetésre jutottam.

Ez helyes így?

Igen, jonak tunik, kis kiegeszitessel, amik inkabb infok, nem hibak, nehogy annak vedd:

4. Ez a Linux szepsege, ezt tobb modon is meg lehet oldani, ez az egyik masik: chown :share1 /home/share1.

6. Meglep, hogy ezt telepiteni kell, az altalam hasznalt rendszereken alapertelmezetten fent van, de egyebkent igen, ha szukseges.

12. Szerintem nem csinalsz olyat, amihez reboot kene, feleslegesnek tunik.

Plusz kerdes, egy kvazi dedikalt lvm-en nem gondolkodtal el? Kicsit szebb megoldas, ha mas fileshare-megoldast valasztottal volna is adna magat, ugy nem kozvetlenul a gyokerbol venned el a teruletet, egyertelmu, kenyelmes, tisztabb, szarazabb erzes (ha boviteni/csokkenteni kell is, ez ma az egyik modern, bevett es elegans megoldas). De ez mar rad van bizva, csak gondoltam bedobom.

Köszönöm a kiegészítéseket! A plusz infókat szívesen veszem, nem vagyok sértődős típus. Alapvetően R=1 sugarú usernek tartom magam, akit érdekel némi plusz felhasználás. :)

Alapban úgy szoktam particionálni, hogy külön / (50GB) és külön /home. Swap partíció helyett swap file-t hozok létre (SSD miatt, bár ez ma már lehet felesleges). Ext4 fájlrendszert használok egyéb huncutságokat még nem használtam. Tisztában vagyok az LVM és RAID kombinációk előnyeivel, de használni még nem mertem éles rendszeren, mert nem tudom hogyan kell eljárni, ha valami miatt mondjuk SystemResqueCD-t kellene használni. Sima Ext4 esetén csak indítok egy Live rendszert és olvasható minden. LVM esetében nem tudom mit kellene tennem, hogy olvashatóak legyenek az adatok egy SSD/HDD-n.

A fő asztali gépben van egy 120GB SDD, ami jelenleg egy / (50GB) és egy /home (maradék) partíciókat tartalmaz. Mellette van 2x1TB HDD, amin az adatokat szeretném tárolni. Első 1TB adatoknak, második 1TB biztonsági mentésnek. Plusz minden géphez egy külső usb-s HDD biztonsági (harmadik) mentésnek van.

Következő lépésként megpróbálkozom egy központi "fájlszerver" megoldással, amihez a többi (laptopok, sbc-k) gép tudna csatlakozni.

En az otthoni megosztast ugy oldottam meg, hogy van ket konyvtar, mindketto kiajanlva sambabal, de az egyik anonymous login irhato olvashato elronthato, mig a masik read only.

Igy barki a csaladban fel tud pakolni, de egy hazahozott windowsos laptopon levo ransomware csak a jatszoteret tudja lekodolni.

Idonkent az irhato alkonyvtarbol atmozgatom a cuccokat a masikba, ez ad-hoc tortenik.

Ez igy bevalt, mert a fent levo cuccok (pl. filmek) tok jol jatszhatoak a read-only megosztasrol, de nem kel felnem tole, hogy a gyerek orjongeni kezd mert veletlenul valaki letorolte a kedvenc rajzfilmet. :-)

rootként

addgroup kozos

minden usernél csinld meg amelyiknél akarod adduser --ingroup kozos "user név", persze ezt majd új usereknél nem elfelejteni.

csinálsz egy könyvtárat pl /home/KOZOS, chmod 775 /home/KOZOS,  chown :kozos /home/KOZOS

ha már létezik a konyvtár benne chmod -R 664 *

chown :kozos *

Nézd meg a man-okat és finomitsd, ha valami nem jó.

+ ha több gépen is jó volna, samba, /etc/samba/smb.conf -ba:

[kozos]
    comment = mindenki_mindent
    path = /home/KOZOS
    browsable = yes
    guest ok = yes
    only guest = yes
    public = yes
    read only = no
    create mask = 0777
    directory mask = 0777
    force user = kozos
    force group = users

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.

Jól értem, hogy ez egy multiboot környezet, ahol a disken egy bizonyos mappa tartalmát akarod elérhetővé tenni? Ha igen ez vet fel némi nehézséget, mivel a két rendszeren az userek ID-je más és más lehet még ugyanazon név mellett is, ugyanígy a groupoknál. Ha lokális userek számára szabadon hozzáférhető "közös" terület kell, praktikusan érdemes külön diskre rakni, és a mountot úgy paraméterezni az fstab-ban, hogy egy közös csoportjuknak állítson be megfelelő engedélyeket.

Ha a helyi felhasználót LAN-ra és hálózatos elérésre érted, akkor érdemes pl a SAMBA-t használni erre, vagy épp az NFS-t, ha azonosítás user szinten nem kell.

Nem multiboot környezet, egy gépen egy rendszer van. Debian és Linux Mint vannak telepítve a gépeken, mivel Debian alapú rendszerekkel vannak tapasztalataim. Van PC, laptop, sbc, router (openwrt-vel), virtualizált Windows 7. Ezek külön-külön jól elvannak, működik minden, ami eddig kellett. Jelenleg azt szeretném összehozni, hogy az egyik gépet ezek közül beállítani fájlmegosztásra és az sem lenne rossz ha adott gépen a létrehozott felhasználók között is lehetne fájlmegosztás.

Korábban próbálkoztam NFS és SAMBA beállításával, de elsőre nagy falatnak tűnt. Ezért arra gondoltam, hogy a fő gépen megpróbálkoznék egy közös tárhely kialakításával. Ha ez sikerülne, jöhetne a hálózatos elérés. Egyelőre elakadtam, sok tutorialt megnéztem már és végig  csináltam, de valahogy a végeredmény nem azt adja, amit leírnak. Biztos én rontok el valamit.

A két dolgot - lokális "közös" tárhely és hálózati megosztás - külön kezeld szerintem. A lokálisra a megfelelő jogosultságok beállítása lesz szerintem is a megoldás, vagy umask, vagy szofisztikáltabban de kicsit bonyolultabban ACL segítségével.

Hálózati megosztásra meg a SAMBA lesz a megoldás, ha nem csak linux alól akarod elérni. Alapesetben nem is olyan egyszerű mindenki számára írható auth nélküli megosztást csinálni már vele (mert ez persze felvet egy csomó biztonságot érintő aggályt) de elvben megoldható.

ha tényleg olyan ésszerű, egyszerű megoldást akarsz csoportmunkához, fájlmegosztáshoz, mint amit sok web-alapú megoldás kínál, bele se merülj ezekbe a standard "oldschool" unix ugo permission meg acl dolgokba, amire mindenki egyből és azonnal asszociál. igen, fontos ismerni ezeket az alapvető és kikerülhetetlen építőköveit a unix világnak, mert mondom, kikerülhetetlen, minden fájlhozzáférést befolyásol. DE. valamivel alacsonyabb szintre tervezték, véleményem szerint, mint egy tényleg kényelmes fájlmegosztási megoldást építeni kell. 

hasonlót a bindfs segítségével implementáltam. nem a bind mountról van szó (mount -o bind), hanem a https://bindfs.org/ -ról. sőt az én use-case-emben olyan kvt-ak kellettek, amikhez 2 user férhetett hozzá csak, de azok egyaránt r/w. (a rendszer össze user-párjának volt ilyen kvt-ja, az n×n/2 megosztott kvt n userre) a te esetedben sztem elég egyetlen kvt-t felcsatolni bindfs-sel és megmondani neki h minden adott user a sajátjának lássa. kész.

bindfs --mirror-only user1,user2,... /storage/data /mnt/shared

így nem rontják el a csoport tulajt meg a csoportjog biteket, mint tapasztalatom szerint az ilyen "csűrjünk rá sgid bitet mert az arra való" kontárkodások általában vezetnek. az sgid-et és társait akkor találták ki, amikor egy többé-kevésbé szűk toolset-tel dolgoztak a userek, tudod, 80-as évek, a cp meg mv voltak az ember fájlkezelője, a programok stdout-ra mentettek, statikus user csoportok, stb. ebben a környezetben megállta a helyét a csoport tulaj meg sgid. aztán szükség lett mondjuk arra hogy ne csak az admin mondhassa meg hogy ki férhet hozzá egy alkönyvtárhoz azzal hogy beveszi a csoportba vagy nem, hanem a szerző adjon hozzá ro/rw usereket a saját fájljára ACL-lel. aztán hogy ne kelljen a fájlkezelőket felkészíteni hogy a létrejövő fájlokon is beállítsák az ACL-t, lett a default acl. viszont a történet itt véget ér. szerintem ez még magában nem nyújt user-ready csoportmunkát. mi van ha valaki move-ol fájlt ACL-ezett kvt-ba? nem egy túl elrugaszkodott lehetőség. vagy a tetszőleges fajlkezelő amit használ, nyom egy chmod-ot a fájlra miután bemásolja? teljesen jogos, hisz a fájlokat az attribútumaival együtt szokás másolni, ugyanakkor azonnyomban lekújra az acl mask-ot.

elképesztő unix-permission gyönyöröket olvastam itt. a jó értelemben, úgy értem, respect ha valaki tisztában van a dolgokkal. de, szerintem jó ismerni a korlátait is annak a rendszernek, ami megértésére annyi időnket áldoztuk, magamat is beleértve.