Puncte:0

Montați Samba din linia de comandă ca non-root, citire/scriere, fără fstab?

drapel id

Ei bine, m-am gândit că ar fi fost mai ușor, dar pur și simplu nu pot afla dacă ceea ce vreau este realizabil.

Vreau să montez o partajare Samba de rețea din linia de comandă în Ubuntu 20.04 (MATE) - de preferință fără nicio modificare a fișierelor sau salvarea setărilor undeva; doar o linie de comandă.

Deci mai întâi am încercat:

sudo mount -t cifs -o user=MYSMBUSER //192.0.2.1/myshare /tmp/myshare

Acest lucru funcționează excelent - în sensul că montează, listează fișiere și oferă acces numai pentru citire la fișiere; dar nu permite scrierea de fișiere (permisiune refuzată).

Asta se pare că din cauza:

https://unix.stackexchange.com/questions/68079/mount-cifs-network-drive-write-permissions-and-chown

Montați partajarea CIFS ca root (pentru că ați folosit sudo), așa că nu puteți scrie ca utilizator normal. Dacă distribuția dvs. Linux și nucleul său sunt suficient de recente încât să puteți monta partajarea de rețea ca un utilizator normal (dar sub un folder pe care îl deține utilizatorul), veți avea acreditările adecvate pentru a scrie fișierul

Da, vreau să „montez partajarea rețelei ca utilizator normal”, iar aceasta ar putea părea o opțiune - totuși, numele meu de utilizator pe Ubuntu este diferit de numele de utilizator Samba, deci:

O alternativă este să specificați ID-ul utilizatorului și grupului pe care ar trebui să îl folosească partajarea de rețea montată, acest lucru ar permite utilizatorului și grupului potențial să scrie în partajare. Adăugați următoarele opțiuni la montură: ...


Prima problemă - cum demontați cele de mai sus; Am făcut:

$ sudo umount /tmp/myshare
$ 

... și deoarece nu raportează erori, presupun că s-a terminat bine, dar apoi încerc:

$ ls /tmp/myshare
file_from_share01.txt file_from_share02.txt ...

... fișierele sunt încă listate, așa că share este montat; se dovedește (via https://stackoverflow.com/questions/74626/how-do-you-force-a-cifs-connection-to-unmount ) pentru a-l demonta, trebuie să fac:

$ sudo umount -a -t cifs -l

Iată partea dificilă - dacă vreau să montez ca utilizator normal și totuși specific numele de utilizator SMB, ar trebui să scriu aceeași comandă ca mai sus, dar fără sudo:

$ mount -t cifs -o user=MYUSER //192.0.2.1/myshare /tmp/myshare
mount: numai root poate folosi opțiunea „--options”.

Deci, poate eu ar putea Au executat altfel ca non-root, dacă Nu a trebuit să folosesc utilizator opțiune - dar o fac. Deci nu pot folosi cu adevărat această comandă.

O sugestie pentru a rezolva acest lucru este să specificați opțiunile în fstab - via montați folderul share cifs fără sudo :

Pentru a putea monta acel folder ca utilizator normal, includeți opțiunile de montare pentru folderul cifs în fișierul de configurare /etc/fstab și adăugați opțiunile noauto,user,

Cu toate acestea, o fac nu vreau să fac asta, pentru că nu vreau să păstrez înregistrări ale acreditărilor SMB pe computerul meu - și dacă trebuie să editez fstab, atunci sarcina mea este să șterg intrarea din fstab odată ce s-a terminat și, de obicei, atunci când sunt obosit, aș putea uita, bla bla.

Am descoperit că aceasta este probabil o caracteristică de securitate:

https://unix.stackexchange.com/questions/365308/use-mount-o-with-a-non-root-user

Limitarea -o (doar root o poate specifica) este în vigoare pentru a proteja sistemul: administratorul poate configura orice opțiuni sunt necesare, fie direct folosind -o, fie folosind /etc/fstab; utilizatorii pot determina doar montarea sau demontarea sistemelor de fișiere controlabile de utilizator, fără a specifica opțiuni, deoarece opțiunile sistemului de fișiere permit o serie de scenarii ostile.Ca rezultat, unele sisteme de fișiere acceptă alte moduri de setare a anumitor opțiuni, cum ar fi variabila de mediu USER utilizată mai sus cu CIFS.

Eh, da, dar pentru mine este mai sigur să nu intru în nicio cale SMB /etc/fstab deloc.

Deci, chiar mi-ar plăcea să montez doar folosind o linie de comandă fără modificarea oricăror fișiere de configurare (inclusiv /etc/fstab) oriunde.

Am sperat că există o altă comandă și am găsit gvfs-mount - dar am aceeasi problema ca Montați partajarea SMB cu gvfs din linia de comandă :

$ dbus-lansare bash
$ gvfs-mount smb://192.0.2.1/myshare
Acest instrument a fost depreciat, utilizați în schimb „gio mount”.
Consultați „gio help mount” pentru mai multe informații.

Este necesară parola pentru partajarea myshare pe 192.0.2.1
Utilizator [locuser]: MYUSER
Domeniul [GRUP DE LUCRU]:
Parola:
$

În acest moment, se pare că s-a montat, dar de fapt nu a făcut:

$ ls /run/user/1000/gvfs/
$

... și prin gvfs-mount -l, putem vedea că nu există un punct de montare corespunzător:

$ gvfs-mount -l
...
Volumul(3): test_nfs
  Tip: GProxyVolume (GProxyVolumeMonitorUDisks2)
  Mount(0): test_nfs -> file:///tmp/test_nfs
    Tip: GProxyMount (GProxyVolumeMonitorUDisks2)
Mount(0): myshare pe 192.0.2.1 -> smb://192.0.2.1/myshare/
  Tip: GDaemonMount

... și deci nu putem accesa niciun fișier cu această „montură” oricum.


Din nou, cum demontați asta - nu puteți face umount /tmp/myshare, nu se considera montat nici macar; am gasit asta aici Demontați partajarea gvfs samba cu fișierul deschis :

$ ls ~/.gvfs
ls: nu poate accesa „~/.gvfs”: nu există un astfel de fișier sau director

$ gvfs-mount -u smb://192.0.2.1/myshare
Acest instrument a fost depreciat, utilizați în schimb „gio mount”.
Consultați „gio help mount” pentru mai multe informații.

După aceasta, verifică cu gvfs-mount -l confirmă că cota a dispărut într-adevăr)


Și pentru a aborda mențiunea de gio mount - prima rețineți că, fără a lansa o sesiune dbus, eșuează cu:

$ gio mount smb://192.0.2.1
gio: smb://192.0.2.1: volumul nu implementează montarea

...apoi, într-o coajă începută de dbus-lansare bash, se comportă exact la fel ca gvfs-mount:

$ gio mount smb://192.0.2.1/myshare
Este necesară parola pentru partajarea myshare pe 192.0.2.1
Utilizator [locuser]: MYUSER
Domeniul [GRUP DE LUCRU]:
Parola:
$

Pare montat, dar:

$ gio mount -l
...
Volumul(3): test_nfs
  Tip: GProxyVolume (GProxyVolumeMonitorUDisks2)
  Mount(0): test_nfs -> file:///tmp/test_nfs
    Tip: GProxyMount (GProxyVolumeMonitorUDisks2)
Mount(0): myshare pe 192.0.2.1 -> smb://192.0.2.1/myshare/
  Tip: GDaemonMount

... din nou nu există un punct de montare a directorului local.


Acestea fiind spuse mai sus: este posibil să montezi partajarea SMB, din linia de comandă, fără a modifica niciun fișier local (cum ar fi, și mai ales /etc/fstab), fără sudo și cu permisiuni r/w (pe care le-am confirmat în Windows, utilizatorul SMB MYUSER) - și dacă este, cum?

Puncte:0
drapel id

Ei bine, postând asta ca răspuns, de când s-a dovedit, unele dintre acestea gvfs/gio comenzile aparent au funcționat - pur și simplu nu mă uitam la folderul de montare potrivit; se pare că în Ubuntu 20.04 meu nu este:

$ ls ~/.gvfs
ls: nu poate accesa „~/.gvfs”: nu există un astfel de fișier sau director

... dar în schimb:

$ ls ~/.cache/gvfs/
'smb-share:server=192.0.2.1,share=myshare'

... și fișierele sunt acolo, și pot să citesc/scriu... Acum sunt nedumerit cum este încă acolo, din moment ce cred că l-am demontat... ei bine.

Ei bine, sunt fericit după toate aceste decenii de dezvoltare, partajarea fișierelor este atât de ușoară în zilele noastre! Și așteptăm cu nerăbdare alte schimbări, sperăm că vom vedea ~/.cache/.etc/gvfs-2/ în uz, așa că obținem și mai multe spargeri și și mai multe răspunsuri inutile, că va trebui să petrecem ore întregi la traul, pe viitor! Dezvoltarea tehnologiei nu este grozavă? :)

Puncte:0
drapel es

Punctul de montare nu este sub ~/.cache/gvfs/ este sub /run/user/1000/gvfs

Înlocuiește 1000 cu propriul tău număr uid

Voi monta una dintre propriile acțiuni:

~$ gio mount smb://vubmate2004.local/Private
Este necesară o parolă pentru partajarea privată pe vubmate2004.local
Utilizator [tester]: tester
Domeniul [GRUP DE LUCRU]: 
Parola: 

O sa verific sa vad daca este montat:

~$ ls -al /run/user/1000/gvfs
total 0
dr-x------ 3 tester tester 0 Jan 5 15:08 .
drwx------ 10 tester tester 300 ian 5 15:13 ..
drwx------ 1 tester tester 0 5 ianuarie 15:14 'smb-share:server=vubmate2004.local,share=private'

Voi verifica conținutul share-ului montat:

~$ ls -al /run/user/1000/gvfs/smb-share:server=vubmate2004.local,share=private
total 0
drwx------ 1 tester tester 0 Jan 5 15:14 .
dr-x------ 3 tester tester 0 Jan 5 15:08 ..
-rwx------ 1 tester tester 0 5 ian 15:14 „fișier nou”

Voi demonta partajarea:

~$ gio mount -u smb://vubmate2004.local/Private

O sa verific sa vad daca este inca montat:

~$ ls -al /run/user/1000/gvfs
total 0
dr-x------ 2 tester tester 0 Jan 5 15:08 .
drwx------ 10 tester tester 300 ian 5 15:13 ..

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.