sambaインストールまず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 で確認しておきます。 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-vscansambaでウィルスチェックをできるようにしてみましょう。 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
LINK【Samba TIPS】idmap_ridの活用---Windows連携時にサーバー間のユーザーID不一致を防ぐ 未解決/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 TIPSmount/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.atmarkit.co.jp/flinux/special/samba3b/samba02.html 参考書籍 |