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?