Konfigurowanie anonimowego publicznego udziału Samba, do którego można uzyskać dostęp za pośrednictwem systemu Windows 7 i XBMC


9

Powinienem więc zacząć od stwierdzenia, że ​​udało mi się to niecały tydzień temu i nie miałem żadnych problemów, ale od tego czasu przeformatowałem i zrekonfigurowałem mój serwer i teraz najtrudniej pamiętam, jak to zrobiłem.

Oto, co miałem wcześniej i co próbuję osiągnąć ponownie. Miałem publiczny udział samby na serwerze Ubuntu. Każdy w mojej sieci może uzyskać dostęp do udziału i jego zawartości po prostu wpisując \ Hostname. Hasło nie jest konieczne. Użytkownicy, którzy nie byli w grupie roboczej udziału, mieli dostęp do odczytu, ale użytkownicy, którzy byli w grupie roboczej, mieli dostęp do odczytu / zapisu. (System Windows 7)

Teraz, jeśli spróbuję połączyć się z \ Nazwa hosta, zostanie wyświetlony monit o podanie nazwy użytkownika i hasła. Jeśli wejdę do un pw, otrzymam pełny dostęp, ale nie powinienem; moje obecne ustawienia to ...

security = user
map to guest = bad user

[Shares]
path = /home/shares
available = yes
read only = no
browsable = yes
public = yes
writable = yes
guest ok = yes

Wyciągam włosy z tego. Jakieś sugestie?

EDYTOWAĆ:

Ugh, to sprawia mi tyle trudności. Jestem tak blisko.

Oto co mam.

Mogę uzyskać dostęp do udziału z systemu Windows 7, rozpoczynając i wpisując \ Hostname \ Sharename, ale pojawia się monit o podanie nazwy użytkownika i hasła. Nie mogę jednak pozostawić tego pola pustego, ponieważ użyje mojej grupy roboczej jako domeny; więc wpisuję \, aby nazwa użytkownika została usunięta i zalogować się przy użyciu pustej nazwy użytkownika i hasła. Świetnie, teraz mogę uzyskać dostęp do plików w udziale.

Po wejściu konfiguracja grupy roboczej działa poprawnie. Jeśli pracuję na komputerze z domyślną grupą roboczą, mogę czytać i wykonywać; komputer w mojej domowej grupie roboczej może odczytywać zapis i wykonywanie. Więc to działa.

Problem polega na tym, że wcale nie powinno to wymagać hasła. Powinien być całkowicie publiczny dla każdego w sieci. Próbuję udostępnić to XBMC i nawet nie pojawia się pod smb w menedżerze plików. Nie mogę uzyskać do niego dostępu ręcznie z XBMC. Otrzymuję błąd odmowy połączenia.

Nadal wyciągam z tego włosy. Najgorsze jest to, że po raz pierwszy zrobiłem to około tygodnia temu, spędziłem na tym około 30 minut i działało idealnie. Teraz prawdopodobnie spędziłem co najmniej 4 godziny i nadal nie działa.

Testparm:

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = FELLOWSHIP
        server string = %h server (Samba, Ubuntu)
        map to guest = Bad User
        obey pam restrictions = Yes
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = No
        wins support = Yes
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d
        idmap config * : backend = tdb

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        printable = Yes
        print ok = Yes
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers

[Shares]
        path = /home/shares
        read only = No
        guest ok = Yes

AKTUALIZACJA: Tak więc udział jest teraz dostępny w mojej sieci niezależnie od grupy roboczej. Każdy użytkownik systemu Windows, który łączy się z moją siecią, może zobaczyć NAS pod Netowork i uzyskać do niego dostęp. Kluczem było ustawienie bezpieczeństwa na security = share. Wiem, że jest przestarzałe, ale działa i bezpieczeństwo = użytkownik i mapowanie na użytkownika = zły użytkownik nie działał dla mnie.

W każdym razie teraz wydaje się, że każdy, kto łączy się z udziałem, otrzymuje globalne uprawnienia unix dla katalogu, który jest zarządzalny, ale chcę, aby użytkownicy dołączeni do grupy roboczej określonej w smb.conf otrzymali uprawnienia grupy unix.

W ten sposób mogę ustawić katalog na 775 i będę mógł pisać, ponieważ jestem przyłączony do grupy roboczej, ale inni użytkownicy mogą tylko czytać i wykonywać.


Powinieneś być w stanie zmapować użytkowników grupy roboczej, aby uzyskać określone uprawnienia za pomocą pliku mapy nazwy użytkownika: samba.org/samba/docs/man/manpages-3/smb.conf.5.html#USERNAMEMAP
Aaron

Odpowiedzi:


8

Zdarzyło się, że natknąłem się na ten wątek na forach Ubuntu i pomyślałem, że może to pomóc. Wyjaśnia kroki, które mają miejsce za kulisami:

W systemie Windows nazwa użytkownika i hasło klienta są automatycznie wysyłane podczas przeglądania udziałów - odbywa się to bez wiedzy użytkownika. To zmusza Sambę do radzenia sobie z wysłanymi poświadczeniami, nawet jeśli jest to udział gościa, który nie wymaga uwierzytelnienia.

Po podaniu tej nazwy użytkownika Samba przeszuka bazę danych haseł dla tego użytkownika:

  • Jeśli nazwa użytkownika nie jest zgodna, użytkownik klienta jest oznaczony jako „Zły użytkownik” i konwertowany (mapowany) na konto gościa, którym domyślnie jest „nikt”.

  • Jeśli znajdzie dopasowanie do nazwy użytkownika i istnieje hasło samby, które jest zgodne z hasłem wysłanym przez klienta Windows, użytkownik Windows automatycznie uzyskuje dostęp, chociaż nie jako użytkownik anonimowy, dlatego trzeba dodać „force user = nobody” do twoja definicja akcji.

  • Jeśli znajdzie dopasowanie do nazwy użytkownika, ale hasło samby nie zgadza się dokładnie z hasłem automatycznie wysyłanym przez klienta Windows, pojawi się monit o podanie hasła - nawet dla udziału gościa.

Spróbuj dodać force user = nobodydo definicji udziału i sprawdź, czy to wystarczy.

Edytuj 02/20/2013:

Czy testparmzwracany jest kod wyjścia czegoś innego niż zero? Mimo wszystko chciałbym nadać temu obszarowi konfiguracji dobry, twardy wygląd. Poza tym nie jestem pewien, czy w pliku smb.conf rozróżniana jest wielkość liter, ale każdy przykład, który widzę (na przykład) map to guest = Bad Userma wielkie litery B i U. Sprawdź strony podręcznika Samby pod kątem używanych opcji i dokładnie sprawdź wszystko.


Hej Bryce, dzięki za odpowiedź. Udało mi się poczynić niewielkie postępy od czasu mojego pierwotnego pytania, ale nadal zasadniczo mam ten sam problem. Udało mi się skonfigurować mój udział (nazywam go Udziałami), aby każdy w grupie roboczej, zdefiniowany w globalnych ustawieniach w smb.conf, mógł do niego przejść - Nie jest wymagane hasło. Kontynuując w następnym komentarzu ...
George Spake,

Oto ustawienia udziału: [Shares] path = /home/shares browsable = yes available = yes read only = no public = yes writable = yes guest ok = yes jeśli force user = nobodygo dodam , zepsuje się i nie będę mógł uzyskać dostępu do udziału. Tutaj jest jednak dziwnie; kiedy uruchamiam testparm, zrzuty [Shares] path = /home/shares read only = no guest ok = yesZ jakiegoś powodu to tak, jakby nie widziałem publicznych, zapisywalnych, dostępnych i możliwych do przeglądania definicji. Czy może to wskazywać, gdzie jest problem?
George Spake,

@GeorgeSpake dokonano edycji ...
Aaron

1
Myślę, że testparm po prostu wyrzuca rzeczy w ten sposób. Wszystko jest pisane małymi literami w pliku conf. Odkryłem również i muszę to zweryfikować, że testparm zrzuca tylko definicje inne niż domyślne, co wyjaśniałoby, dlaczego niektóre wyniki są pomijane.
George Spake

Ostatnia aktualizacja samby 4.3.11+dfsg-0ubuntu0.14.04.3na Ubuntu 14.04 złamała mój publiczny udział, force user = nobodyto tylko poprawka, której potrzebowałem, aby przywrócić publiczny udział
Antony

7

Tak konfiguruje się OpenElec. Powinieneś zrobić to, o co prosisz. (nawet jeśli będzie to rok później ... może to pomoże następnej). Po prostu dostosuj ustawienia udostępniania w razie potrzeby.

[global]
  server string = YOURSERVERNAME
  workgroup = WORKGROUP
  netbios name = %h
  security = share
  guest account = root
  socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
  smb ports = 445
  max protocol = SMB2
  min receivefile size = 16384
  deadtime = 30
  os level = 20
  mangled names = no
  syslog only = yes
  syslog = 2
  name resolve order = lmhosts wins bcast host
  preferred master = auto
  domain master = auto
  local master = yes
  printcap name = /dev/null
  load printers = no
  browseable = yes
  writeable = yes
  printable = no
  encrypt passwords = true
  enable core files = no
  passdb backend = smbpasswd
  smb encrypt = disabled
  use sendfile = yes

[share]
comment = Share
path = /share
available = yes
browsable = yes
writable = yes
public = yes

Dziękuję za ten dodatek! Walczyłem o udostępnienie udziału publicznego w systemie Windows 8.1, te ustawienia załatwiły sprawę.
davidmdem,

13
URGH! „konto gościa = root”. Oznacza to, że konta gości są mapowane na root, tzn. Mają nieograniczone uprawnienia do robienia czegokolwiek. BĄDŹ BARDZO OSTROŻNY! SMOKI WCZEŚNIEJ!
DanielSmedegaardBuus

0

Ponieważ wyszukiwarka Google prowadzi nas tutaj i nie ma jednoznacznej odpowiedzi, podsumowałem to.

Poniżej przedstawiono warunki wymagane, aby klienci SMB nie pytali o nazwę użytkownika i hasło podczas uzyskiwania dostępu do serwera Samba:

  1. Dodaj guest account = <owner-of-your-shares>w [global]sekcji. Ważne jest, aby konto właściciela Twoich udziałów miało do nich dostęp. Jeśli tego nie zrobisz, Samba przyjmie, że konto gościa jest nobodyużytkownikiem, który raczej nie ma dostępu do danych w twoim udziale.

    Alternatywnie możesz określić force user = <owner-of-your-share>pod swoim [shareXYZ]blokiem.

  2. Upewnij się, że [shareXYZ]ma guest ok = yes.

    Zestaw, browsable = yesale zwykle jest dziedziczony z [global]i jest yesdomyślnie ustawiony .

Następnie prawdopodobnie security = userpowinien być również ustawiony (jest to domyślny, gdy nie masz Active Directory w swoim środowisku). Chociaż nie jestem pewien, czy ta flaga jest wymagana, ponieważ nie mam AD w moim środowisku.

Oczywiście, jeśli chcesz, aby nobodyużytkownik pracował, możesz to zrobić chown -Rh 65534:65534 /yourshare, po tym wszystko będzie w porządku tylko z jednym ustawieniem guest ok = yespod twoim [shareXYZ].

Zauważ, że ustawienie rwxna others( chmod o+rwx /yourshare) nie pozwoliło Sambie wraz z nobodyużytkownikiem na udział. Sprawdziłem to za pomocą strace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>. Prawdopodobnie Samba po prostu ignoruje uprawnienia ustawione dla others? Niepewny.


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.