
まず最初に言っておきたいのは、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 User
Bと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 サーバーにアクセスするときにユーザー名とパスワードの入力を求めないようにするために必要な条件です。
guest account = <owner-of-your-shares>
セクションの下に追加します[global]
。共有の所有者アカウントが共有にアクセスできることが重要です。これを行わないと、Samba はゲスト アカウントをnobody
共有内のデータにアクセスできない可能性のあるユーザーであると想定します。あるいは、ブロック
force user = <owner-of-your-share>
の下に指定することもできます[shareXYZ]
。[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 は に設定された権限を無視するだけでしょう。よくわかりません。others
chmod o+rwx /yourshare
nobody
strace -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