smbclient 、smbmount
コマンドを使って、SambaクライアントからSambaサーバーにアクセスする方法について解説していきます。
|
|
■sambaへのアクセス状況の確認 [ smbclient ]
まず、Windows 上からSambaサーバーのディレクトリにアクセスした後、smbstatusコマンドを実行してみてください。現在、誰がどの共有ディレクトリにアクセスしているのかを閲覧することができます。
# /usr/local/samba/bin/smbstatus
-d
Samba version 3.0.1
PID Username Group Machine
-------------------------------------------------------
3100 kororo kororo koro (172.16.50.4)
3103 kororo kororo koro (172.16.50.4)
Service pid machine Connected at
-------------------------------------------------------
source 3103 koro Sat Apr 17 20:41:46 2004
↑↑ユーザーkororoがsourceディレクトリにアクセスしている
IPC$ 3100 koro Sat Apr 17 20:16:21 2004
IPC$ 3103 koro Sat Apr 17 20:20:17 2004
No locked files |
|
◎smbstatus オプション
|
-b |
簡易表示 |
|
-d |
詳細表示 |
|
-u |
特定のユーザーの情報を表示する |
|
-L |
ロックされたファイルの一覧を表示する |
|
■LinuxクライアントからSambaサーバーへアクセスする
LinuxクライアントからSambaサーバーへアクセスするには、クライアント自身にsamba-clientパッケージがインストールされている必要があります。インストールされていなければ、インストールしておいてください。
$ rpm -q samba-client
$ rpm -ivh samba-client |
|
まず、アクセス可能なディレクトリを表示してみましょう。書式は、「
smbclient -L Sambaサーバー名」です。Sambaサーバーに限らず、Windows
上のコンピュータ名も表示されます。
$ smbclient -L ns1
added interface ip=172.16.50.6 bcast=172.16.50.31
nmask=255.255.255.224
Password:********** //パスワードの入力
Domain=[KORORO.JP] OS=[Unix] Server=[Samba
3.0.1]
Sharename Type Comment
--------- ---- -------
public Disk Public Stuff
source Disk Source Directory
IPC$ IPC IPC Service (Samba Server)
ADMIN$ IPC IPC Service (Samba Server)
kororo Disk Home Directories
Server Comment
--------- -------
LINUX Samba Server
Workgroup Master
--------- -------
KORORO KORO
KORORO.JP LINUX
WORKGROUP WOODY
|
|
それでは実際に、smbclient コマンドを使ってSambaサーバーにアクセスしてみます。書式は、「
smbclient
//Sambaサーバー名/共有資源名」です。パスワード入力後、
smb: \> という対話形式のプロンプトが表示されます。使用できるコマンドはFTPコマンドとほぼ同様なので、ここでは説明を割愛させていただきます。FTPコマンドを日常的に使用している方ならファイルのアップロード/ダウンロードが容易でしょう。
$ smbclient //ns1/homes
added interface ip=172.16.50.6 bcast=172.16.50.31
nmask=255.255.255.224
Password: # パスワードの入力
Domain=[KORORO.JP] OS=[Unix] Server=[Samba
3.0.1]
smb: \> ls
. D 0 Sat Apr 17 20:20:25 2004
.. D 0 Sat Apr 17 15:05:13 2004
.bash_profile H 214 Wed Mar 31 02:42:40
2004
Maildir D 0 Wed Mar 31 00:34:28 2004
public_html D 0 Tue Apr 13 00:49:55 2004
kororo D 0 Sat Apr 17 14:43:13 2004
39037 blocks of size 262144. 36679 blocks
available
smb: \> pwd //Sambaサーバー上のディレクトリ位置の表示
Current directory is \\ns1\homes\
smb: \> lcd //ローカルマシン上のディレクトリ位置の表示
the local directory is now /home/kororo
smb: \> cd public_html/cinema
smb: \public_html\cinema\> ls
. D 0 Wed Mar 31 02:29:19 2004
.. D 0 Tue Apr 13 00:49:55 2004
index.html 568 Wed Mar 31 02:29:10 2004
bbs D 0 Wed Mar 31 02:29:10 2004
cinema_list D 0 Wed Mar 31 02:29:10 2004
diary D 0 Wed Mar 31 02:29:11 2004
gallery D 0 Wed Mar 31 02:29:12 2004
horse D 0 Wed Mar 31 02:29:14 2004
39037 blocks of size 262144. 36679 blocks available
smb: \public_html\cinema\> get cinema_index.html
getting file \public_html\cinema\cinema_index.html of size 568 as
cinema_index.html (1.2 kb/s) (average 1.2 kb/s)
smb: \public_html\cinema\> exit
|
|
■Windows上の共有ディレクトリにLinuxクライアントからアクセスする
今度は、LinuxクライアントからWindows 上の共有フォルダにアクセスしてみます。LinuxクライアントからWindows
上の共有フォルダにアクセスするためには、smbmount コマンドを使用して、Windows上の共有フォルダをマウントします。なお、smbclient
実行時に、-o オプションをつけて、Windows 上のユーザー名を指定しておきます。また、
codepage=cp932と
iocharset=euc-jpを付ける事で日本語ファイル名も正常に表示されるようになります。パスワードを聞かれるので同じくWindows上のパスワードを入力します。/mnt/win
がマウントされているのを確認したら、カレントディレクトリを移動して中身を表示させてみてみてください。
# mkdir /mnt/win //マウントポイントの作成
# smbmount //koro/public_html /mnt/win
-o username=administrator,codepage=cp932,iocharset=euc-jp
Password: //Windows上のパスワードを入力
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda10 494M 99M 371M 21% /
/dev/hda6 76M 9.2M 63M 13% /boot
/dev/hda9 1012M 462M 500M 49% /home
none 251M 0 251M 0% /dev/shm
/dev/hda7 2.6G 1.8G 754M 71% /usr
/dev/hda8 1012M 255M 706M 27% /var
//koro/public_html 4.1G 420M 3.7G 11% /mnt/win
# cd /mnt/win //マウントポイントに移動
# ls
-rwxr-xr-x 1 root root 3.1M Feb 14 12:18
unh_iscsi-1.5-02.i386.rpm.80*
-rwxr-xr-x 1 root root 381K Feb 14 12:17
unh-iscsi-1.5.02-tz*
drwxr-xr-x 1 root root 4.0K Jan 18 21:37
まとめ/ |
|
最後に、起動時にも自動的にマウントできるように、/etc/fstab に以下のように記述しておきます。password
が正確でないとマウントできないので気をつけてください。fmask は、ファイルに対するパーミッション、dmask
はディレクトリに対するパーミッションを設定します。共に、「022」にしておく事で、ファイルは644、ディレクトリは755
のパーミッションで新規ファイル/ディレクトリが作成されるようになります。なお、ファイルシステムは、「
smbfs
」になります。
# vi /etc/fstab
/dev/hda1 /mnt/hda1 ext3 noauto 0 0
//koro/share /mnt/win smbfs username=administrator,password=***,rw,
codepage=cp932,iocharset=euc-jp,fmask=0222,dmask=0222 0 0
|
|
設定し終えたら、mount コマンドを実行して正常にマウントできるかどうか確認してください。
なお、アンマウントは、通常どおり、umount でも可能ですし、
smbumountコマンドを使うこともできます。
# smbumount /mnt/win
もしくは、
# umount /mnt/win
|
|
■トラブルシューティング(SambaサーバーからWindows共有を参照できない)
筆者の環境では、RedHat or FedoraCore標準で付属されているsamba-clientパッケージを使用した場合は、問題なくWindows
上の共有ディレクトリがマウントできたのですが、ソースからインストールしたSambaサーバー自体からWindows
を参照しようとすると以下のようなエラーが発生しました。
# smbmount //koro/public_html /mnt/win
-o username=administrator,codepage=cp932,iocharset=euc-jp
Password: ******
1265: session setup failed: ERRDOS - 2215
SMB connection failed
|
|
このようなエラーが表示された場合の解決方法は私が知る限りは2つあります。ひとつは、smb.conf の設定で「
encrypt passwords = yes」とすることで、パスワードを暗号化することです。WindowsNT/200系はパスワードが暗号化されていないと拒否られてしまうみたいです。
# vi /etc/samba/smb.conf
encrypt passwords = yes
|
|
もうひとつは、smb.conf の設定で、「workgroup = kororo.jp」と自分のドメインとしているところを、「
workgroup = $OURWINDOWSNTWORKGROUP」のように変数名に変更したところ、あら不思議、普通にマウントできました…。
# vi /etc/samba/smb.conf
workgroup = $OURWINDOWSNTWORKGROUP
|
|
/etc/rc.d/init.d/smb restart
|
|
念のため、smbfs モジュールが正常にロードされているか確認しておきます。もし、ロードされていなければ、modprobeコマンドなども実行してみてください。
# lsmod
Module Size Used by Not tainted
nls_cp932 79868 1 (autoclean)
nls_euc-jp 4852 0 (autoclean)
smbfs 44464 0 # modprobe smbfs |
|