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?


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

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.


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!


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.