* [[samba]]

#contents

** インストール
まずlibiconvをインストールしておく。http://www.gnu.org/software/libiconv/よりダウンロード。4/25現在ではlibiconvは1.12ですね。
 tar xzvf libiconv-1.9.1.tar.gz
次にhttp://www2d.biglobe.ne.jp/~msyk/software/libiconv-patch.htmlからpatchダウンロードしてパッチをあてて、インストール
 zcat libiconv-1.9.1-cp932.patch.gz | patch -p0
もしくは
 gunzip libiconv-1.9.1-cp932.patch.gz
 gpatch -p0 < libiconv-1.9.1-cp932.patch

 cd libiconv-1.9.1
 ./configure --prefix=/usr/local
 make
 make instal
確認のために
 iconv -l | egrep -i '(-31j|-ms)'
とすると、
 CP932 MS932 SHIFFT_JIS-MS SJIS-MS SJIS-OPEN SJIS-WIN WINDOWS-31J WINDOWS-932 CSWINDOWS31J ISO-2022-JP-MS
と表示されます。
この後/etc/ld.so.confに/usr/local/libがなければ、追加して、
 ldconfig
しておきましょう。しておかない場合、
 init_iconv: Conversion from eucjp-ms to UTF-16LE not supported
ってエラーが出る場合があります。
またsambaがすでに入っている場合は消しておきます。
 rpm -q samba
あれば、
 rpm -e samba
依存関係を無視する場合は
 rpm -e --nodeps samba
他にsamba-common samba-swat samba-clietnとかです。では、
http://us4.samba.org/samba/ (もしくはhttp://wiki.samba.gr.jp/よりダウンロード。2005/7/14現在samba-3.0.14a.tar.gz)
 tar xzvf samba-3.0.13.tar.gz
 cd samba-3.0.13/source
 ./configure --with-libiconv=/usr/local --with-utmp --with-pam
 make
 make install
引数の--with-utmpは接続履歴を記録するオプションで、--with-pamは[[PAM]]をサポートします。他に
 --with-ldap LDAP連携サポート
 --with-ads  ActiveDirectory連携サポート
 --with-quotas クォータサポート
 --with-winbind winbindサポート
 --with-syslog syslogサポート
 --with-automount Automountのサポート
 --with-smbmount smbmountのサポート
 --with-acl-support ACLサポート
とかあるので、必要に応じて追加します。例えば、
 ./configure --with-libiconv=/usr/local --with-utmp --with-pam --with-automount
 --with-smbmount --with-quotas --with-acl-support --with-ldap --with-ads --with-winbind --with-syslog
sambaを解凍したフォルダのpackaging/Solarisにsmb.conf.defaultがいたので、/usr/local/samba/lib/smb.confへコピーしました。/etc/samba/にいるかもしれません。packagingの下にRedhatやFedoraとかありました。smb.confに
 unix charset = EUC-JP
 dos charset = CP932
 display charset = CP932
を追加して、起動してみましょう。
 dos charset : Windowsの文字コードを指定 UTF8など
 unix charset : サーバの文字コードを指定
 display charset : SWATで表示される文字コードを指定
またWindowsXPの場合にはデフォルトではパスワードを暗号化するので、encrypt passwords = yesとします。
参考:http://www.atmarkit.co.jp/flinux/special/samba3b/samba03.html
 /usr/local/samba/sbin/smbd -D
 /usr/local/samba/sbin/nmbd -D
smbdはファイルサーバ、プリントサーバ等を担当します。TCPの139,445で起動してますので、
 netstat -nplt
で確認しておきます。~
nmbdはNetBIOS over TCP/IPでの名前解決として動きます。UDPの137,138で待ち受けてますので、
 netstat -nplu
で確認してみましょう。
またpackaging/Exampleの下にsbm.initもありますので、/etc/init.dにコピーしてchkconfigでもしておきます。また一度
 ps aux |grep smbd
とかで起動しているか確認しておきましょう。起動していないときはlogを見るかlogがない場合は、
 /usr/local/samba/bin/testparm
で確認してみましょう。-with-pamを指定している場合は、/etc/pam.d/sambaを作成します。
 auth       required     pam_nologin.so
 auth       required     pam_stack.so service=system-auth
 account    required     pam_stack.so service=system-auth
 session    required     pam_stack.so service=system-auth
 password   required     pam_stack.so service=system-auth

smb.conf参考:http://www.monyo.com/technical/samba/translation/samba30/html/smb.conf.5.html
** 起動
 /etc/init.d/smb
自動起動は、
 chkconfig --list |grep smb
なければ、
 chkconfig --add smb
 chkconfig --level 345 smb on

** swat
/etc/servicesに
 swat   901   /tcp
があるか確認
/etc/xinetd.d/swatを作ります。
 service swat
 {
        port                    = 901
        wait                    = no
        only_from               = 192.168.1.0/24
        socket_type             = stream
        user                    = root
        server                  = /usr/local/samba/sbin/swat
        log_on_failure          += USERID
        disable                 = no
 }
確認して、xinetdを再起動します。
 /etc/init.d/xinetd restart
CentOS5でxinetdがない場合は、
 yum -y install xinetd
でいれておきます。
後はhttp://192.168.1.2:901/で確認。このときrootで入るのですが、ログインできずに、
 401 Bad Authorization
とか表示される場合は、/usr/local/samba/var/log.swatを見てると
 smb_pam_passcheck: PAM: smb_pam_auth failed - Rejecting User root !
と出力されている場合は、/etc/pam.d/sambaがないかもしれません。

共有する場合は、hosts allowに192.168.1.0/24とかを設定しておきましょう。

文字が化ける場合は、/etc/samba/smb.confに
 unix charset = EUCJP-MS
 display charset = EUCJP-MS
追加、修正してやります。
** 共有作成
smb.confに
 [hoge]
   path = /hoge <-漢字も使用できる。ただし文字コードはロケールと合わせる。
   valid users = hoge1 hoge2 @hogegb <-アクセス可能なユーザ @でグループ
   invalid user = hoge3  <-アクセス不可
   write list = hoge4  <-read onlyがyesでも更新権限がありのユーザ
   read list = hoge5  <-read onlyに関係なく参照のみのユーザ
   create mask = 0777 <-作成時のマスクを指定
   admin users = hoge1 <-hoge共有管理者
   force user = hoge3 <-ファイル操作する際にはこのユーザで 指定がない場合はログインしたユーザ
   force group = hogegb2 <-ファイル操作する際にはこのグループで 指定がない場合はログインしたユーザのグループ
   read only = No
   hosts allow = 192.168.1.0/24
とかを追加します。確認は、
 /usr/local/samba/bin/smbclient //localhost/hoge -U hoge1
でつながるかどうか確認します。
** ユーザ作成
OSのuseraddコマンドの後にsmbpasswdコマンドで作成 -aで追加
 /usr/local/samba/bin/smbpasswd -a test
もしくは
OSのuseraddコマンドの後にpdbeditコマンドで作成
 useradd test
 /usr/local/samba/bin/pdbedit -a test
修正は
 /usr/local/samba/bin/pdbedit -r test
削除は
 /usr/local/samba/bin/pdbedit -x test
一覧の表示
 pdbedit -L -v
パスワードの設定/変更
 /usr/local/samba/bin/smbpasswd usrid password
一括で作成する場合は、
 printf "hoge\nhoge\n" |/usr/local/samba/bin/smbpasswd -sa test
**samba-vscan
sambaでウィルスチェックをできるようにしてみましょう。
http://www.openantivirus.org/のDownloadsよりsamba-vscanをダウンロードしました。
 wget http://optusnet.dl.sourceforge.net/sourceforge/openantivirus/samba-vscan-0.3.6b.tar.bz2
 tar xjf samba-vscan-0.3.6b.tar.bz2
 cd samba-vscan-0.3.6b
 ./autogen.sh && ./configure --with-samba-source=sambaのソースを展開した場所/source/samba-3.0.22/source/
この--with-samba-source=/root/samba-3.0.22/source/はsambaのソースの場所です。3.0.25bではエラーが出ました。3.0.24はOKでした。
 make
 make install
 cp ./clamav/vscan-clamav.conf /usr/local/samba/lib/
ではvscan-clamav.conf を編集します。
 clamd socket name = /var/run/clamd
を
 clamd socket name = /tmp/clamd
↑ clamd は、clamd.conf のソケット名なのでそれとあわすこと
0.91からは以前は/tmp/clamdでしたが、/tmp/clamd.socketに変更されてます。

に変更しました。次にsmb.confで、
 [hoge]
        path = /hoge
        admin users = root
        read only = No
        valid users = hogeuser1
        hosts allow = 192.168.1.0/24
        vfs objects = vscan-clamav
        vscan-clamav: config-file = /usr/local/samba/lib/vscan-clamav.conf
と下記2行を追加しました。こちらからhttp://www.eicar.org/anti_virus_test_file.htm テスト用のウィルスをダウンロードして
Sambaの共有フォルダにコピーすると、/var/log/messageに
 Scan result: '//work/eicar.com' infected with virus 'Eicar-Test-Signature', client: '192.168.1.1'
と出てくるのですが、コピーされてしまいます。コピーされたくない場合は、/usr/local/samba/lib/vscan-clamav.confを開いて、
 infected file action = quarantine
 quarantine directory  = /viruschk
としておいて、
 mkdir /viruschk
にコピーされたファイルが感染している場合は、移動させてます。

**LDAP
ソースを解凍すると、examples/LDAP/samba.schemaがありますので、slap.confに追加しておきます。
 cp examples/LDAP/samba.schema /usr/local/etc/openldap/schema/
でコピーしてslap.confに
 include		/usr/local/etc/openldap/schema/core.schema
 include		/usr/local/etc/openldap/schema/cosine.schema
 include		/usr/local/etc/openldap/schema/inetorgperson.schema
 include		/usr/local/etc/openldap/schema/nis.schema
 include		/usr/local/etc/openldap/schema/samba.schema
また
 dn: dc=hoge,dc=jp
 objectClass: dcObject
 objectClass: organization
 dc: hoge
 o: hoge
 
 dn: cn=Manager,dc=hoge,dc=jp
 objectClass: organizationalRole
 cn: Manager

とかベースのDNをinit.ldifとか名前をつけて保存して、追加しておきます。
 ldapadd -x -D 'cn=Manager,dc=hoge,dc=jp' -W -f init.ldif
またsambaはsambaSIDで検索するので、
 index objectClass,uidNumber,gidNumber,uid,sambaSID,cn,memberuid eq
をslapd.confに追加しておきます。
またLDAP連携用のツールとして、smbldap-toolsがありますが、
これはsambaのソースを展開した場所のexamples/LDAP/smbldap-tools-0.9.2にあり、
INSTALLを読むとscripts now use the Crypt::SmbHash perl moduleってあるので、
 perl -MCPAN -e shell
 install Net::LDAP
いろいろ聞かれましたが、yでいきました。他も
 install Crypt::SmbHash
 install Unicode::MapUTF8
 install Convert::ASN1
 install IO::Socket::SSL
こいつはtestでエラーがでるな。しょうがないので
 force install IO::Socket::SSL
でいれておきました。
またexamples/LDAP/smbldap-tools-0.9.2ディレクトリで
 mkdir /etc/smbldap-tools
 cp *.conf /etc/smbldap-tools/
 chmod 644 /etc/smbldap-tools/smbldap.conf
 chmod 600 /etc/smbldap-tools/smbldap_bind.conf
 cp smbldap-* /usr/local/sbin/
 cp smbldap_tools.pm /usr/local/sbin
 chmod 775 /usr/local/sbin/smbldap-*
 chmod 775 /usr/local/sbin/smbldap_tools.pm
では準備できてきたんで、/etc/smbldap-tools/smbldap.confを触る前にSID(security identifier)を取得しておきましょう。
 net getlocalsid
SIDを控えてsmbldap.confを編集です。
 SID="S-9-9-99-99999999-99999999-999999999" さっき取得したSID
 sambaDomain="ドメイン名"
 masterLDAP="127.0.0.1"
 masterPort="389"
 suffix="dc=hoge,dc=jp"
 sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
 userSmbHome="\\Hoge-SV\%U"
 userProfile="\\Hoge-SV\profiles\%U"
 userHomeDrive="H:"
 userScript="logon.bat"
 mailDomain="hoge.jp"
 
次は/etc/smbldap-tools/smbldap_bind.confです。
 slaveDN="cn=Manager,dc=hoge,dc=jp"
 slavePw="secret"
 masterDN="cn=Manager,dc=hoge,dc=jp"
 masterPw="secret"
LDAPの管理者のパスワードを登録しておきましょう。
 /usr/local/samba/bin/smbpasswd -w cn=Manager,dc=hoge,dc=jpのパスワード
ん?
 ERROR: 'ldap admin dn' not defined! Please check your smb.conf
そういえば、smb.confの設定は一切ほったらかしだった。ではsmb.confはexamples/LDAP/smbldap-tools-0.9.2のsmb.confを参考にしましょう。
入れ替えたほうがはやそうですね。入れ替えてsamba再起動です。その後、LDAPに標準のエントリーを作成するために
 smbldap-populate
を実行します。実行するとentryを追加した旨のメッセージが表示されます。ここでエラーが出る場合は、perlのモジュールが入っているか、smb.confとかを見直しましょう。
さて再起動すると、ログに(/var/log/samba/log.smbd)
 [2008/04/25 18:53:14, 0] lib/smbldap.c:smbldap_connect_system(982)
  failed to bind to server ldap://127.0.0.1/ with dn="cn=Manager,dc=hoge,dc=jp" Error: Invalid credentials
おっとsmbpasswdを忘れてた。
ではユーザを作成しましょう。
 smbldap-useradd -a -m -P ユーザ
 a:Sambaユーザーの作成 指定しない場合はUnixユーザーだけと思っていたが、ldapに登録する項目がunixアカウントで必要な項目になるだけで、/etc/passwdには登録されない。
 m:はホームディレクトリを作成
 P:は作成時にパスワードの設定を行う。
その後
 smbpasswd -a ユーザ
で設定。
すでにUNIXアカウントがある場合は
 id アカウント
でしらべて
 smbldap-useradd -a アカウント
で登録して、
 smbldap-usermod -u 上記でしらべたID アカウント
でIDを変更し、
 smbldap-passwd アカウント
でパスワードを変更します。LDAPでアカウントを統合していない場合は、UNIXにアカウントが必要になります。

***TIPS
-ログインできない~
どうもsambaNTPasswordが設定されいなかったので、
 smbpasswd -a ユーザ
で追加
-smbldap-useraddでユーザが作成されない?~
どうもaオプションをつけているが作成されない。
-なんか遅い~
nscdを起動させてみるが、さして変わらず。smb.confが
 log level = 0
になっているので、とりあえずあげて調査してみる。explorerより繋ぎにいくと、まず
 check_ntlm_password:  Checking password for unmapped user [マシン名]\[ユーザ名]@[マシン名] with the new password interface
と出力され、これで探しにいっている。このときldapに登録していないユーザなんで、その認証に失敗し、遅くなっているようだ。
その後ダイアログボックスが表示される。また
 [(&(|(objectclass=sambaGroupMapping)(sambaGroupType=4))(|(sambaSIDList=S-1-5-21-201613407-4078079238-3289816433-3006)
 (sambaSIDList=S-1-22-2-1003)(sambaSIDList=S-1-1-0)(sambaSIDList=S-1-5-2)(sambaSIDList=S-1-5-11)))], scope => [2]
でやたら止まっている。ということはldapの問題か。あら、ldapが起動しなくなった。
 Apr 29 02:54:17 hogepc slapd[4487]: bdb_db_open: Database cannot be opened, err 13. Restore from backup!
げっとりあえず初期化してみよ。
 rm -rf /usr/local/var/openldap-data
 mkdir /usr/local/var/openldap-data
ソースからopenldap-2.3.39/servers/slapd/DB_CONFIGを/usr/local/var/openldap-dataにコピーして、
 chown -R ldap:ldap /usr/local/var/openldap-data
さて再起動。おっ?速くなった.. ってことはldapがおかしかったのか...
-ドメインに参加できない。~
samba+ldapのみの場合、unixにもユーザだけでなく、マシンアカウントを作成しておきます。またldapのuidとあっているかを確認しておきます。
また
 smbldap-useradd -w マシン
ちなみに削除するときは
 smbldap-userdell マシン$
-パスワード変更ができない
アスセスが拒否されましたとかいうんで、log levelをあげてみると
 smbd/chgpasswd.c:expect
って出てました。んー もしやsmb.confか?
 passwd chat = "Changing password for*\nNew password*" %n\n "*Retype new password*" %n\n"
あれ?smbldap-passwdで出ているメッセージと比べるとちょっと違う。ここは簡単にしてみよう
 passwd chat = *New* %n\n *Retype* %n\n
さてsamba再起動するとうまく変更されました。
-プロファイルが保存されない。~
たとえば、
 logon path = \\%L\profiles\%U
 [profiles]
        path = /home/profiles
とかなっている場合に、profilesの権限を見直して見ましょう。
 chown 777 profiles
***LINK
[[【Samba TIPS】idmap_ridの活用---Windows連携時にサーバー間のユーザーID不一致を防ぐ>http://itpro.nikkeibp.co.jp/article/COLUMN/20070125/259692/]]~
[[CentOS5.0のSamba3.0でユーザ認証をLDAP化する>http://www.grandarbre.net/2007/11/centos50samba30ldap.html]]~
[[LDAP 管理ツール>http://docs.hp.com/ja/B8725-90065/ch06s12.html]]~
Samba LDAP ツールのパラメータの説明があります。~
[[Sambaのユーザ管理>http://www.thinkit.co.jp/free/tech/2/4/1.html]]~
[[Samba 3.0解説>http://www.miraclelinux.com/technet/document/samba/samba0015.html]]~
** 未解決
/var/log/messagesを見たら、smbdがエラーを大量に吐いている。
 write_socket_data: write failure. Error = Connection reset by peer
 lib/util_sock.c:write_socket(413)
 write_socket: Error writing 4 bytes to socket 7: ERRNO = Connection reset by peer

http://www.samba.gr.jp/ml/article/samba-jp/msg15693.html

** TIPS
*** mount
 /usr/local/samba/bin/smbmount //hogepc/work /mnt/test/ -o username=hoge,password=hogepass,ip192.168.1.1
もしくは
 mount -t cifs //hogepc/work /mnt/test -o username=hoge,password=hogepass
*** パスワード同期
smb.confの[global]セクションに
 unix password sync = Yes
 passwd program = /usr/bin/passwd %u
pamを使っている場合は、
 unix password sync = Yes
 pam password change = Yes

***ログ
smb.confに
 log file = /var/log/samba/%m.log
としておけば、各マシンごとにログが取れます。さらにファイルのアクセスログとかをとる場合は、
 log level = 2
にするとログが取れます。さらに詳細を見たい場合は、数値を大きくします。

*** ゴミ箱
共有ディレクトリで
 recycle bin = .recycle
とするのは、2系か?3は
[global]セクションに
   vfs objects = recycle
共有のセクションで、
   recycle:repository = .recycle/%u  %uでユーザ毎にディレクトリを作成
   recycle:keeptree = yes
   recycle:versions = yes

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/734recycle3.html
*** エクスプローラでの更新やアクセスが遅い
smb.confに
 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
を追加してみましょう。今は以下の値ぐらいがうちではよさそうな値でした。
 socket options = TCP_NODELAY SO_RCVBUF=65535 SO_SNDBUF=65535
Change Notificationがらみかと思ったのですが、まだ調査中です。
http://www.katontech.com/diary/?date=20050203
*** dos filemode
ファイルに書き込み権のあるユーザは、パーミッションの変更もできるようになるらしい。~
 map hidden = yes
も併せて調査
[[共有上のファイル属性を変更できるのはファイルの所有者だけか?>http://www.tac.tsukuba.ac.jp/~yamato/samba/17500/msg00028.html]]
[[共有上のファイル属性を変更できるのはファイルの所有者だけか?>http://www.tac.tsukuba.ac.jp/~yamato/samba/17500/msg00028.html]]~
[[Samba で Cygwin のシンボリックリンク>http://d.hatena.ne.jp/rero/comment?date=20080427]]~
** リンク
http://www.atmarkit.co.jp/flinux/special/samba3b/samba02.html~
[[Sambaを使ったサーバの構築(Sambaの基礎からPDC機能まで)>http://www.monyo.com/technical/unix/samba9907/]]~
[[Windowsファイルサーバー構築(Samba)>http://fedorasrv.com/samba.shtml]]~
[[Windowsネットワーク用統合認証サーバー構築(OpenLDAP+Samba)>http://fedorasrv.com/openldap.shtml]]~
[[ SambaでWindows NT Server と同じ転送速度を確保する方法>http://www.dd.iij4u.or.jp/%7Eokuyamak/Documents/tuning.japanese.html]]~
[[samba3のインストール>http://zaruprog.blog98.fc2.com/blog-entry-7.html]]~
[[Sambaの設定>http://www.rfs.jp/server/samba/01/03.html]]~
変数の説明があります。~
[[MS-DOS と UNIX におけるファイルのアクセス権と属性>http://ppona.com/gpl/iodata/usl-5p/USLSRC100/daemon/samba/040924/samba-2.2.11-ja-1.0/docs/ja/htmldocs/using_samba/ch05_03.html]]~
[[smb.conf ― Samba システムの設定ファイル>http://www.samba.gr.jp/project/translation/3.0/htmldocs/smb.conf.5.html]]~
** 参考書籍

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS