Jak zamontować udział CIFS za pośrednictwem FSTAB i dać pełne RW gościowi

33

Chcę utworzyć folder publiczny z pełnym dostępem do RW. Problem z moją konfiguracją polega na tym, że użytkownicy Windows nie mają problemów jako goście (mogą RW i Kasować), mój klient Ubuntu nie może zrobić tego samego. Możemy tylko pisać i czytać, ale nie tworzyć ani usuwać.

Oto mój plik smb.conf z mojego serwera:

[global]
    workgroup = WORKGROUP
    netbios name = FILESERVER
    server string = TurnKey FileServer

    os level = 20
    security = user
    map to guest = Bad Password
    passdb backend = tdbsam
    null passwords = yes

    admin users = root
    encrypt passwords = true
    obey pam restrictions = yes
    pam password change = yes
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

    add user script = /usr/sbin/useradd -m '%u' -g users -G users
    delete user script = /usr/sbin/userdel -r '%u'
    add group script = /usr/sbin/groupadd '%g'
    delete group script = /usr/sbin/groupdel '%g'
    add user to group script = /usr/sbin/usermod -G '%g' '%u'

    guest account = nobody

    syslog = 0
    log file = /var/log/samba/samba.log
    max log size = 1000

    wins support = yes
    dns proxy = no

    socket options = TCP_NODELAY
    panic action = /usr/share/samba/panic-action %d


[homes]
    comment = Home Directory
    browseable = no
    read only = no
    valid users = %S

[storage]
    create mask = 0777
    directory mask = 0777
    browseable = yes
    comment = Public Share
    writeable = yes
    public = yes
    path = /srv/storage

Poniższy wpis FSTAB nie zapewnia pełnego dostępu do R / W do udziału.

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw 0 0

To też nie działa

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw,guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0

Korzystanie z następującej lokalizacji w Nemo / Nautilus bez zamontowanego udziału działa:

smb://192.168.0.5/storage/

Informacje dodatkowe. Właśnie zauważyłem, że jeśli skopiuję plik do udziału po zamontowaniu, mój klient Ubuntu natychmiast sprawi, że „nikt” nie będzie właścicielem, a grupa „żadna grupa” nie będzie czytać i pisać, a wszyscy pozostali będą tylko do odczytu.

wprowadź opis zdjęcia tutaj

Co ja robię źle?

Kendor
źródło
Zobaczmy: możesz zamontować udział z twojego klienta Ubuntu (zakładam, że jako root, biorąc pod uwagę twoje wpisy fstab), możesz wtedy czytać i pisać, ale nie możesz usunąć ani utworzyć? Dlaczego więc możesz skopiować (aby skopiować, tworzenie pliku jest koniecznością)?
stycznia 13

Odpowiedzi:

56

Okazuje się, że muszę dodać lokalny (klient) identyfikator UID do linii montowania w FSTAB, aby to zadziałało. Doszedłem do tego przez brutalną siłę:

//192.168.0.5/storage /media/myname/TK-Public/ cifs guest,uid=myuser,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
Kendor
źródło
3
Typowy problem i brak odpowiedzi ... Niesamowite!
dan3
Och, właśnie tego potrzebowałem ... wielkie dzięki - szukam tego przez wiele godzin!
pkdkk
1
Kolejna gotcha: Upewnij się, że cifs-utilsjest zainstalowany (dla mnie nie został zainstalowany pod 16.04 po zainstalowaniu „głównego” pakietu samba pkg). Jeśli nie masz go zainstalowanego, pojawi się błąd „zła fs / zła opcja”.
bshea
Po zainstalowaniu użyłem perms w innej odpowiedzi i dodałem: //10.20.30.40/share/mysharedir /mnt/mymountpoint cifs guest,uid=nobody,iocharset=utf8,noperm 0 0 do /etc/fstabtego czasu sudo mount -a. Wydaje się, że teraz dobrze się montuje / pisze.
bshea
Dla mnie nieco prostsza wersja (bez identyfikatora użytkownika) działała, aby poprawnie zamontować R / W dla wszystkich użytkowników udziału publicznego z innej maszyny Linux://server_name/share_name /media/local_mountpoint cifs guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
woohoo
6

CIFS zasadniczo nie ma pojęcia użytkownika i grupy, więc zamontowanie udziału cifs domyślnie wyświetli użytkownika i grupę jako „nikogo”:

drwxdrwxdrwx. 3 nobody nobody 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 nobody nobody 0 Sep 29 09:00 ..

Ponieważ nie jesteś „nikim”, Linux nie pozwoli ci pisać do niczego, co nie ma uprawnień 0777, chyba że używasz sudo. Aby to naprawić, dodaj uid = mylogin, gid = mygroup do fstab, dzięki czemu udział będzie wyglądał, jakby był twoim własnym katalogiem:

drwxdrwxdrwx. 3 mylogin mygroup 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 mylogin mygroup 0 Sep 29 09:00 ..

Teraz masz pełną kontrolę bez potrzeby korzystania z sudo.

Nie zmienia to niczego na serwerze, ponieważ serwer niczego nie wymusza. Mówi Linuksowi, aby udawał, że jesteś właścicielem i daje ci nieograniczony dostęp.

maharvey67
źródło
1
Tak, jeśli używasz gościa / nikt / itp. Upewnij się, że foldery nadrzędne mają pełny odczyt / zapis / wykonanie. Używam tego permu na niektórych wewnętrznych udziałach sieciowych - więc to nie jest problem bezpieczeństwa. Upvoted
bshea
Ale w przeciwieństwie do twojego postu - mogłem użyć identyfikatora użytkownika „nobody” (do montowania), gdy miał on odpowiednie opcje montowania. Zobacz moje inne komentarze ..
bshea,
Jest to znacznie lepsze rozwiązanie niż ustawianie rozległych uprawnień dla wszystkich podłączonych plików. I to działa.
j08lue
5

Jesteś prawie na miejscu. Otwórz FSTAB, używając:

sudo nano /etc/fstab

W ostatnim wierszu (lub w jednym z ostatnich wierszy) umieść:

//192.168.0.5/storage /media/myname/TK-Public/ cifs username=YOURUSERNAME,password=YOURPASSWORD,iocharset=utf8,file_mode=0777,dir_mode=0777

*** (to wszystko jedna długa linia)

Ctrl- Xaby zamknąć, Yaby zapisać i Enter, aby zamknąć ofertę.

Teraz uruchom ponownie przez:

sudo reboot

I powinieneś mieć pełną kontrolę nad udziałem sieciowym na swoim urządzeniu z systemem Linux!

AndyShap
źródło
1
Możesz zastąpić to hasło przykładowym hasłem.
uwagi
9
Nie trzeba restartować, aby zamontować fstabwpisy. Po prostu mount <DEVICE>lub mount <MOUNTPOINT>nawet mount -awykonaj pracę dobrze.
David Foerster
1

Miałem ten problem, a to dlatego, że użytkownik udziału nie był jego właścicielem. Naprawiłem to za pomocą „sudo chown {nazwa użytkownika}: {nazwa użytkownika} / {udział} / {ścieżka}”, po czym mogłem przenosić i usuwać pliki.

Andrew Cleveland
źródło