Windows 7 と XBMC 経由でアクセスする匿名のパブリック Samba 共有を設定する

Windows 7 と XBMC 経由でアクセスする匿名のパブリック Samba 共有を設定する

まず最初に言っておきたいのは、1 週間も経たないうちにこれを成功させ、問題もなかったのですが、その後サーバーを再フォーマットして再構成したため、今ではどうやってやったのか思い出すのに苦労しているということです。

以前持っていたのと、今再び実現しようとしているのは次のとおりです。Ubuntu サーバーにパブリック Samba 共有がありました。ネットワーク上の誰でも、\Hostname と入力するだけで共有とその内容にアクセスできます。パスワードは必要ありません。共有のワークグループにいないユーザーには読み取りアクセス権がありましたが、ワークグループにいたユーザーには読み取り/書き込みアクセス権がありました。(Windows 7)

ここで、\Hostname に接続しようとすると、ユーザー名とパスワードの入力を求められます。パスワードを入力するとフルアクセスが可能になりますが、そうする必要はないはずです。現在の設定は次のとおりです...

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

この件で頭がいっぱいです。何か提案はありますか?

編集:

ああ、これは本当に大変だ。もうすぐだ。

これが私が得たものです。

Windows 7 からスタートして \Hostname\Sharename と入力すると共有にアクセスできますが、ユーザー名とパスワードの入力を求められます。ただし、ワークグループをドメインとして使用するため、空白のままにすることはできません。そのため、ユーザー名に \ と入力してクリアし、空のユーザー名とパスワードでログインします。これで、共有内のファイルにアクセスできるようになりました。

ログインすると、ワークグループ構成は正常に動作します。デフォルトの WORKGROUP を持つコンピューターの場合は読み取りと実行が可能で、Home ワークグループのコンピューターの場合は読み取り、書き込み、実行が可能です。つまり、正常に動作しています。

問題は、パスワードをまったく要求しないということです。ネットワーク上の誰に対しても完全に公開されているはずです。XBMC で共有しようとしていますが、ファイル マネージャーの smb にも表示されません。XBMC から手動でアクセスすることもできません。接続拒否エラーが発生します。

これについてはいまだに頭を抱えています。最悪なのは、1 週間ほど前に初めてこれをやったとき、30 分ほどかけて完璧に機能したのに、今はおそらく少なくとも 4 時間かかっていますが、まだ機能していません。

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

更新: これで、ワーク グループに関係なく、共有がネットワーク全体で利用できるようになりました。ネットワークに接続するすべての Windows ユーザーは、ネットワークの下で NAS を表示し、アクセスできます。鍵は、セキュリティを security = share に設定することでした。これは非推奨であることはわかっていますが、機能し、security = user および map to user = bad user は機能しませんでした。

とにかく、今では共有に接続するすべてのユーザーがディレクトリの UNIX グローバル権限を取得するようですが、これは管理可能ですが、smb.conf で指定されたワークグループに参加しているユーザーには UNIX グループ権限を取得させたいです。

この方法では、ディレクトリを 775 に設定でき、ワークグループに参加しているため書き込みが可能になりますが、他のユーザーは読み取りと実行のみが可能です。

答え1

偶然見つけたUbuntuフォーラムのこのスレッド、役に立つかもしれないと思いました。舞台裏で行われる手順を説明します。

Windows では、共有を参照するときにクライアントのユーザー名とパスワードが自動的に送信されます。これは、ユーザーには知られずに行われます。そのため、認証を必要としないゲスト共有であっても、Samba は送信された資格情報を処理することを余儀なくされます。

ユーザー名が渡されると、Samba はパスワード データベースでそのユーザーを検索します。

  • ユーザー名に一致しない場合は、クライアント ユーザーは「不正ユーザー」としてタグ付けされ、デフォルトでは「nobody」であるゲスト アカウントに変換 (マッピング) されます。

  • ユーザー名に一致し、Windows クライアントから送信されたパスワードと一致する Samba パスワードがある場合、Windows ユーザーは匿名ユーザーとしてではなく、自動的にアクセス権を取得します。そのため、共有定義に「force user = nobody」を追加する必要がありました。

  • ユーザー名に一致するものが見つかったが、Samba パスワードが Windows クライアントによって自動的に送信されるパスワードと完全に一致しない場合は、ゲスト共有の場合でもパスワードの入力を求められます。

force user = nobody共有定義に追加してみて、それが機能するかどうかを確認してください。

2013年2月20日編集:

終了コードがゼロ以外を返していますかtestparm?それでも、設定のその部分をよくよく調べてみることをお勧めします。また、smb.confが大文字と小文字を区別するかどうかはわかりませんが、私が見たすべての例(たとえば)では、map to guest = Bad UserBとUが大文字になっています。Samba マニュアルページ使用しているオプションを確認し、すべてを再確認してください。

答え2

OpenElec はこのように構成されています。 必要なことはできるはずです。 (1 年後でも、次のときに役立つかもしれません) 必要に応じて共有設定を微調整するだけです。

[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

答え3

Google 検索でここまで来ても明確な答えがないので、まとめてみました。

以下は、SMB クライアントが Samba サーバーにアクセスするときにユーザー名とパスワードの入力を求めないようにするために必要な条件です。

  1. guest account = <owner-of-your-shares>セクションの下に追加します[global]。共有の所有者アカウントが共有にアクセスできることが重要です。これを行わないと、Samba はゲスト アカウントをnobody共有内のデータにアクセスできない可能性のあるユーザーであると想定します。

    あるいは、ブロックforce user = <owner-of-your-share>の下に指定することもできます[shareXYZ]

  2. [shareXYZ]があることを確認してくださいguest ok = yes

    設定されbrowsable = yesますが、通常は から継承され、デフォルトで[global]に設定されます。yes

次に、おそらくsecurity = userも設定する必要があります (これは、環境に Active Directory が設定されていない場合のデフォルトです)。ただし、私の環境に AD がないため、このフラグが必要かどうかはわかりません。

もちろん、nobodyユーザーを機能させたい場合は、 を実行するだけで済みます。その後は、の下にあるchown -Rh 65534:65534 /yourshare単一の設定だけで十分です。guest ok = yes[shareXYZ]

( )rwxに設定すると、 Samba とそのユーザーが共有にアクセスできないことに注意してください。 でこれを確認しました。おそらく、Samba は に設定された権限を無視するだけでしょう。よくわかりません。otherschmod o+rwx /yoursharenobodystrace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>others

答え4

これはおそらく、このような問題を抱えるすべての人の解決策ではないでしょうが、私の問題は共有ディレクトリがある親ディレクトリの権限が原因でした。「他のユーザーによる読み取り」を有効にするとすぐに、匿名で共有にアクセスできるようになりました。Windows サーバーでは、親ディレクトリの権限は共有ディレクトリには関係ないため、これは私にとって少し驚きでした。

私のパスは次のようになります。

/data1/Downloads 

ディレクトリで「他のユーザーによる読み取り」を有効にする必要がありましたdata1

では特別なことは何もしませんでしたがsmb.conf、私のシェアエントリは次のようになります...

[Downloads]
path = /data1/Downloads
browseable = yes
read only = yes
guest ok = yes
public = yes

関連情報