Thiết lập Chia sẻ Samba công khai ẩn danh để được truy cập qua Windows 7 và XBMC


9

Vì vậy, tôi nên bắt đầu bằng cách nói rằng tôi đã làm điều này thành công chưa đầy một tuần trước và tôi không gặp rắc rối gì nhưng tôi đã định dạng lại và cấu hình lại máy chủ của mình và bây giờ tôi gặp khó khăn nhất khi nhớ về cách tôi đã làm.

Đây là những gì tôi đã có trước đây và những gì tôi đang cố gắng thực hiện lại. Tôi đã có một chia sẻ samba công khai trên máy chủ Ubuntu. Bất cứ ai trên mạng của tôi đều có thể truy cập vào chia sẻ và nội dung của nó chỉ bằng cách nhập \ Tên máy chủ. Không cần mật khẩu. Người dùng không thuộc nhóm làm việc của chia sẻ có quyền truy cập đọc nhưng người dùng trong nhóm làm việc có quyền truy cập đọc / ghi. (Windows 7)

Bây giờ, nếu tôi cố gắng kết nối với \ Tên máy chủ, tôi sẽ được nhắc nhập tên người dùng và mật khẩu. Nếu tôi nhập un pw tôi có quyền truy cập đầy đủ nhưng tôi không nên truy cập; cài đặt hiện tại của tôi là ...

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

Tôi đang kéo tóc ra khỏi cái này. Bất kỳ đề xuất?

BIÊN TẬP:

Ugh, điều này mang lại cho tôi một thời gian khó khăn như vậy. Tôi rất gần

Đây là những gì tôi đã có.

Tôi có thể nhận được chia sẻ từ Windows 7 bằng cách bắt đầu và nhập \ Hostname \ Sharename nhưng tôi được nhắc nhập tên người dùng và mật khẩu. Tôi không thể để trống mặc dù vì nó sẽ sử dụng nhóm làm việc của tôi làm tên miền; vì vậy tôi nhập \ cho tên người dùng để xóa nó và đăng nhập với tên người dùng và mật khẩu trống. Tuyệt vời bây giờ tôi có thể truy cập các tập tin trong chia sẻ.

Khi tôi vào, cấu hình nhóm làm việc hoạt động tốt. Nếu tôi đang ở trên một máy tính có WORKGROUP mặc định, tôi có thể đọc và thực thi; một máy tính trong nhóm làm việc tại nhà của tôi có thể đọc ghi và thực thi. Vậy là xong rồi.

Vấn đề là, Không nên hỏi mật khẩu. Nó nên hoàn toàn công khai cho bất cứ ai trên mạng. Tôi đang cố gắng chia sẻ nó với XBMC và nó thậm chí không hiển thị dưới smb trong trình quản lý tệp. Tôi cũng không thể truy cập thủ công từ XBMC. Tôi nhận được một kết nối từ chối lỗi.

Vẫn nhổ tóc ra thế này. Điều tồi tệ nhất là lần đầu tiên tôi làm điều này khoảng một tuần trước, tôi đã dành khoảng 30 phút cho nó và nó hoạt động hoàn hảo. Bây giờ có lẽ tôi đã dành ít nhất 4 giờ và nó vẫn không hoạt động.

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

CẬP NHẬT: Vì vậy, chia sẻ hiện có sẵn trên mạng của tôi bất kể nhóm làm việc. Bất kỳ người dùng Windows nào kết nối với mạng của tôi đều có thể thấy NAS trong Netowork và truy cập nó. Chìa khóa đã được đặt bảo mật thành security = share. Tôi biết, nó không được dùng nữa, nhưng nó hoạt động và bảo mật = người dùng và ánh xạ tới người dùng = người dùng xấu không làm việc cho tôi.

Dù sao, bây giờ có vẻ như bất kỳ ai kết nối với chia sẻ đều có quyền truy cập unix toàn cầu cho thư mục, có thể quản lý được, nhưng tôi muốn người dùng được tham gia vào nhóm làm việc được chỉ định trong smb.conf để có quyền unix nhóm.

Bằng cách này, tôi có thể đặt thư mục thành 775 và tôi sẽ có thể viết vì tôi đã tham gia vào nhóm làm việc nhưng những người dùng khác chỉ có thể đọc và thực thi.


Bạn sẽ có thể ánh xạ người dùng nhóm làm việc để có được các quyền cụ thể với tệp bản đồ tên người dùng: samba.org/samba/docs/man/manpages-3/smb.conf.5.html#USERNAMEMAP
Aaron

Câu trả lời:


8

Đã xảy ra tình cờ gặp chủ đề này trên các diễn đàn Ubuntu và nghĩ rằng nó có thể giúp ích. Nó giải thích các bước xảy ra đằng sau hậu trường:

Trong Windows, tên người dùng và mật khẩu của khách hàng sẽ tự động được gửi khi duyệt tìm chia sẻ - việc này được thực hiện mà không có kiến ​​thức của người dùng. Điều đó buộc Samba phải xử lý các thông tin đã gửi mặc dù đó là chia sẻ của khách không yêu cầu xác thực.

Khi tên người dùng đó được thông qua, Samba sẽ tìm kiếm thông qua cơ sở dữ liệu mật khẩu của người dùng đó:

  • Nếu không có tên trùng khớp với tên người dùng, người dùng máy khách được gắn thẻ "Người dùng xấu" và được chuyển đổi (ánh xạ) sang tài khoản khách mà theo mặc định là "không có ai".

  • Nếu nó tìm thấy trùng khớp với tên người dùng và có mật khẩu samba khớp với mật khẩu được gửi bởi máy khách Windows thì người dùng Windows sẽ tự động truy cập mặc dù không phải là người dùng ẩn danh, đó là lý do bạn cần thêm "buộc người dùng = không ai" vào định nghĩa chia sẻ của bạn.

  • Nếu nó tìm thấy trùng khớp với tên người dùng nhưng mật khẩu samba không khớp chính xác với mật khẩu được máy khách Windows tự động gửi thì bạn sẽ được nhắc nhập mật khẩu - ngay cả đối với chia sẻ của khách.

Hãy thử thêm force user = nobodyvào định nghĩa chia sẻ của bạn và xem nếu điều đó làm điều đó.

Chỉnh sửa ngày 20 tháng 2 năm 2013:

testparmtrả lại một mã thoát của một cái gì đó khác không? Tất cả đều giống nhau, tôi sẽ tiếp tục và cung cấp cho khu vực của cấu hình một cái nhìn tốt, cứng. Ngoài ra, tôi không chắc smb.conf phân biệt chữ hoa chữ thường như thế nào, nhưng mọi ví dụ tôi thấy (ví dụ) map to guest = Bad Userđều có chữ B và chữ U viết hoa. Kiểm tra các trang man Samba cho các tùy chọn bạn đang sử dụng và kiểm tra lại mọi thứ.


Này Bryce, Cảm ơn đã trả lời. Tôi đã xoay sở để đạt được một chút tiến bộ kể từ câu hỏi ban đầu của mình nhưng về cơ bản tôi vẫn gặp vấn đề tương tự. Tôi đã quản lý để chia sẻ chia sẻ của mình (tôi gọi nó là Chia sẻ) để mọi người trong nhóm làm việc, được xác định trong cài đặt toàn cầu trong smb.conf, có thể nhận quyền - Không cần mật khẩu. Tiếp tục trong bình luận tiếp theo ...
George Spake

Dưới đây là các cài đặt cho chia sẻ: [Shares] path = /home/shares browsable = yes available = yes read only = no public = yes writable = yes guest ok = yes Nếu tôi thêm force user = nobodynó bị hỏng và tôi hoàn toàn không thể truy cập vào chia sẻ. Đây là nơi nó trở nên kỳ lạ; Khi tôi chạy testparm, nó bỏ qua [Shares] path = /home/shares read only = no guest ok = yesVì vậy, vì một số lý do, nó giống như nó không nhìn thấy các định nghĩa công khai, có thể viết, có sẵn và có thể duyệt được. Đây có thể là một chỉ báo về vấn đề là ở đâu.
George Spake

@GeorgeSpake chỉnh sửa được thực hiện ...
Aaron

1
Tôi nghĩ testparm chỉ phun ra theo cách đó. Tất cả mọi thứ là chữ thường trong tập tin conf. Tôi cũng đã phát hiện ra và tôi cần xác minh điều này, testparm chỉ bỏ các định nghĩa không mặc định sẽ giải thích tại sao một số kết quả bị bỏ qua.
George Spake

Bản cập nhật samba gần đây 4.3.11+dfsg-0ubuntu0.14.04.3trên Ubuntu 14.04 đã phá vỡ chia sẻ công khai của tôi, force user = nobodychỉ là bản sửa lỗi tôi cần để đưa chia sẻ công khai trở lại
Antony

7

Đây là cách OpenElec được cấu hình. Nên làm những gì bạn đang yêu cầu. (ngay cả khi đó là một năm sau ... có thể nó sẽ giúp người tiếp theo) Chỉ cần điều chỉnh cài đặt chia sẻ khi cần.

[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

Cảm ơn bạn đã bổ sung! Tôi đã đấu tranh để có được một chia sẻ công khai làm việc với Windows 8.1, các cài đặt này đã thực hiện thủ thuật này.
davidmdem

13
ĐÔ LA! "tài khoản khách = root". Điều này có nghĩa là tài khoản của khách được ánh xạ tới root, tức là có quyền không hạn chế để làm bất cứ điều gì. HÃY CẨN THẬN! THUỐC LÁ!
DanielSmedegaardBuus

0

Vì tìm kiếm Google đưa chúng tôi đến đây và không có câu trả lời rõ ràng, tôi đã tóm tắt.

Dưới đây là các điều kiện bắt buộc để đảm bảo khách hàng SMB sẽ không nhắc tên người dùng và mật khẩu khi truy cập máy chủ Samba của bạn:

  1. Thêm guest account = <owner-of-your-shares>dưới một[global] phần. Điều quan trọng là tài khoản chủ sở hữu cổ phiếu của bạn có quyền truy cập vào chúng. Nếu bạn không làm điều này, Samba sẽ cho rằng tài khoản khách là nobodyngười dùng không có quyền truy cập vào dữ liệu trong chia sẻ của bạn.

    Ngoài ra, bạn có thể chỉ định force user = <owner-of-your-share>dưới [shareXYZ]khối của bạn .

  2. Hãy chắc chắn rằng bạn [shareXYZ]guest ok = yes.

    Đặt browsable = yesnhưng nó thường được kế thừa từ [global]và được đặt thành yesmặc định.

Sau đó, có lẽ security = usercũng nên được đặt (đây là mặc định khi bạn không cài đặt Active Directory trong môi trường của mình). Mặc dù vậy, tôi không chắc liệu cờ này có bắt buộc không vì tôi không có AD trong môi trường của mình.

Tất nhiên, nếu bạn muốn nobodyngười dùng làm việc, thì bạn có thể chown -Rh 65534:65534 /yourshare, sau đó bạn sẽ ổn chỉ với cài đặt duy nhất guest ok = yesbên dưới [shareXYZ].

Lưu ý rằng việc đặt rwxthành others( chmod o+rwx /yourshare) không cho phép Samba với nobodyngười dùng chia sẻ. Tôi đã kiểm tra điều này với strace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>. Có lẽ Samba chỉ bỏ qua các quyền được thiết lập cho others? Không chắc.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.