Nullパスワードとホームディレクトリ共有を使用してsambaを実行しているUbuntu9.04サーバーがあり、対応するユーザーがWindowsマシンにその共有をマウントしています。基本的に、各ユーザーはサーバー上にアカウント(Windowsマシンと同じユーザー名)を持ち、/ home/USERNAMEにホームディレクトリを持ち、ローカルマシンに\\SAMBABOX\USERNAMEこれからフルアクセスできます。
ほとんどのユーザーにとって、これは問題なく機能します。共有上のファイルを問題なく読み取り、書き込み、作成、および削除できます。以下は、sambaログに見られるような初期接続の1つです。
[2009/12/02 10:30:22, 1] smbd/service.c:make_connection_snum(1115)
somewindowsbox (192.168.2.123) connect to service ekaufman initially as user ekaufman (uid=1002, gid=1002) (pid 22574)
ただし、特に1人のユーザーの場合、特定のファイル(SVN作業コピーのファイルをロックする)を作成することはできません(少なくとも)。これは、ADドメイン内の任意のWindowsマシンからのものです。彼らのsambaログを見ると、彼らの最初の接続はユーザーnobodyとして行われており、私は一生その理由を理解できません。
[2009/11/18 10:19:32, 1] smbd/service.c:make_connection_snum(1115)
somewindowsbox (192.168.2.123) connect to service jdoe initially as user nobody (uid=65534, gid=65534) (pid 15570)
/ etc/passwdに示すように、ubuntuサーバー上のユーザーアカウントは他のアカウントとほぼ同じです。
ekaufman:x:1002:1002:,,,:/home/ekaufman:/bin/bash
jdoe:x:1015:1015:,,,:/home/jdoe:/bin/bash
そして/ etc/group:
ekaufman:x:1002:
jdoe:x:1015:
そして/ etc/shadow(もちろん、ここに投稿される前にパスワードハッシュが削除されています):
ekaufman:!:14580:0:99999:7:::
jdoe:!:14572:0:99999:7:::
私はubuntuボックスで彼らのアカウントを削除して再作成しましたが、変更はありません。 ADドメインコントローラーの管理者によると、彼らのアカウントは他のすべてのアカウントとほぼ同じです(アカウントの削除と再作成は非常に複雑になります)。
Windowsマシンから自分のアカウントの共有を手動でマウントし、ユーザー名を強制すると、問題なく機能します。
C:\> Net Use z: \\sambabox.local\ekaufman /user:ekaufman
The command was completed successfully
この特定のユーザーに対して同じことを行った場合でも、nobodyとして接続し、サイレントに失敗します。
C:\> Net Use z: \\sambabox.local\jdoe /user:jdoe
The command was completed successfully
これは、問題が何であれ、それはLinux側にあるという印象を私に与えます。
これは、使用中のsmb構成全体です。
[global]
null passwords = yes
guest ok = yes
security = user
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = 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* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
[homes]
comment = Home Directories
browseable = no
read only = no
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
結局のところ、答えは一見単純でした。 Linuxマシンでアカウントを必要とするユーザーに加えて、それらもsmbpasswd
ファイルに追加する必要がありました。 さらに、接続はnullパスワードで行われているため、nullパスワードを使用してファイルに追加する必要があります。
# -a flag adds the new user (must already exist in /etc/passwd)
# -n flag indicates a null password (different from an empty password)
smbpasswd -an jdoe
エラーは、以前にNISユーザー名をA.D.アカウントに関連付けるために使用したusers.mapのユーザー名マッピングであることがわかりました。すべてのNISをA.D.ServicesForUNIX NISに切り替えた後、これらの古いユーザー名マッピングを削除するのを忘れていました。
私のシステムには、「sambashare」というグループがあります。 jdoeが(他のすべての人と一緒に)メンバーであるかどうかを確認します。