今回やること、Sambaをインストールして初期設定。HOMEフォルダの共有macOSのタイムマシン作る。
samba のインストール
apt install avahi-daemon samba samba-vfs-modules
samba-vfs-modulesは入れてないと、VFS 関連のオプションが使えない、後で困る。最初に入れておく。
Sambaユーザーの有効化
Sambaをインストールするとスタンドアロンサーバーで起動される。
スタンドアロンの場合、ユーザを作る必要がある。
一般的に、Windowsユーザとパスワードと同じものを設定する。
## 有効化 smbpasswd -e takuya ## 無効化 smbpasswd -d takuya ## ユーザー作成 smbpasswd -a takuya
サンプル
## 作る前 root@raspi-ubuntu:~# smbpasswd -e takuya Failed to find user takuya in passdb backend. ## 作成 root@raspi-ubuntu:~# smbpasswd -a takuya New SMB password: Retype new SMB password: Added user takuya.
デフォルトのスタンドアロンモードでは、Sambaの接続可能ユーザーがtdb に保存されており、 tdb のファイルにユーザーを登録する必要がある。
登録後は、パスワードはUNIXのパスワードコマンドと同期させられるのだが、、sudo passwd takuya
などで変えたら同期されないし、いつでも同期されているとは限らない。なので明示的に 同期しないと思うことにしてる。
スタンドアロンサーバーとはWindows10/7のネットワーク・ファイル共有を実現するようなもの。
ホームフォルダを共有する。
Sambaをインストールしたサーバーのユーザのホームフォルダを共有する。
[homes] browseable = No comment = Home Directories create mask = 0700 directory mask = 0700 valid users = %S
任意のフォルダを共有する。
[MyShare] comment = ゲストも使える。 guest ok = Yes path = /opt/samba-share/ read only = No
ゲストユーザーをユーザーID
何も指定しなればば、anonymous(匿名)ユーザーになる、そのユーザーが作ったファイルは nobody:nogroup
になる。
簡易的なゴミ箱
次の記述を足すと、サーバー側のゴミ箱が有効になる。
[MyShare] ## 略 recycle:repository = .recycle recycle:keeptree = yes recycle:versions = yes
削除したファイルは .recycle
に残される。
簡易的なゴミ箱なので、利用者(クライアント)側からは見えない。
Windowsのボリューム・シャドウコピーなどは、専用の設定を書く必要ががる。
接続テスト
macOS
## ユーザー指定 smbutil view //takuya@192.168.1.140 ## Gesut smbutil view //192.168.1.140
Linux
## ユーザー指定 smbclient -L 192.168.1.100 -U takuya ## 指定省略すると現在のユーザー smbclient -L 192.168.1.100 -
linux でのゲスト接続
## パスワードを省略するとゲスト(anonymous) takuya@raspi-ubuntu:~$ smbclient -L 192.168.1.100 -h Enter WORKGROUP\takuya's password: Anonymous login successful
windows
今どきのWindowsはどうやるんだろう。昔からある net コマンドだとこうする。
接続
net use \\192.168.1.100 /user:takuya PASSWORD
切断
net use /delete *
サーバー側で現在の接続状態を見る
サーバーに誰がつないできてるのかを見ておく。
smbstatus -b smbstatus -d
mac 用 VSFをオンにすると、タイムマシンで使える。
[global] ## 略 fruit:encoding = native fruit:metadata = netatalk idmap config * : backend = tdb vfs objects = catia fruit streams_xattr [TimeMachine] comment = Backup for Mac Computers guest ok = Yes path = /opt/samba/ read only = No fruit:time machine max size = 1T fruit:time machine = yes
タイムマシンで見えないとき、Samba-VFSを確認する。
わたしは、VFSエラーになっていた。
VFSがないときは、次のように vfs が cannot open shared object になっている。
[2021/11/09 16:19:55.858644, 0] ../../lib/util/modules.c:49(load_module) Error loading module '/usr/lib/aarch64-linux-gnu/samba/vfs/streams_xattr.so': /usr/lib/aarch64-linux-gnu/samba/vfs/streams_xattr.so: cannot open shared object file: No such file or directory
Ubuntu/Debianは別パッケージになっているが、 個人的に、VFSなしでSambaを使うとか考えられないので、VFSを入れておく。
apt install samba-vfs-modules
TimeMachineやmacOSとの接続は次が詳しかった→https://wiki.samba.org/index.php/Configure_Samba_to_Work_Better_with_Mac_OS_X
設定の確認
設定が有効かどうか、確認するコマンド
testparm -s /etc/samba/smb.conf
Debian/Ubuntuは設定例がたくさんあって、どこが有効か探すのが手間なので、testparm
を使って有効な設定だけを表示すると設定がやりやすい。
takuya@raspi-ubuntu:~$ testparm -s /etc/samba/smb.conf Load smb config files from /etc/samba/smb.conf Loaded services file OK. Server role: ROLE_STANDALONE # Global parameters [global] log file = /var/log/samba/log.%m logging = file map to guest = Bad User max log size = 1000 obey pam restrictions = Yes pam password change = Yes panic action = /usr/share/samba/panic-action %d passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . passwd program = /usr/bin/passwd %u server role = standalone server server string = %h server (Samba, Ubuntu) unix password sync = Yes fruit:encoding = native fruit:metadata = netatalk idmap config * : backend = tdb vfs objects = catia fruit streams_xattr [homes] browseable = No comment = Home Directories create mask = 0700 directory mask = 0700 valid users = %S [TimeMachine] comment = Backup for Mac Computers guest ok = Yes path = /opt/samba/ read only = No fruit:time machine max size = 1T fruit:time machine = yes
samba をマウントする
mount -t cifs -o username=USERNAME,password=PASS //192.168.1.1/share /mnt/to/path
rclone で マウントして Samba で共有する。
rclone は samba をサポートしてないっぽいので、samba とミラーリングするとしたら、
rclone でマウントしたフォルダをSambaで共有するか、
Sambaマウントしたフォルダを、rclone でローカルとして使うか
rclone でマウントしたフォルダをSambaに使わせるとき、
vfs cache と、パーミッションと、ユーザーマッピングが必要になる。
--allow-other --uid=1001 --vfs-cache-mode=full
サンプル
sudo rclone --config /home/takuya/.config/rclone/rclone.conf --allow-other --uid=1001 --vfs-cache-mode=full mount gdrive:/server/samba-mount /opt/samba
感想
クラウドが使えるし、NASとかで手軽にSambaが使えるせいか、自宅鯖でSambaとかあまり流行らないですよねぇ。そのせいか、ネット上にSambaの情報がなくて困ります。
Sambaを使って、WindowsのADサーバーにして移動プロファイルやネットワークドライブのマウントとか、一般のご家庭らしくドメインログオンやりたいのですが。ドメインログイン自体もう古いんでしょうか。仮想マシンで大量にホスト作ってたらLDAPしたくならないんですかね。Dockerでrootでうごかすから気にならないんですかネェ。
私は、macOSのタイムマシンで使うので、どうしてもSambaを設定する必要があった。いままではAFPとnetatalk で使ってたのだが、ついにOS X から macOSに移行することになって、ついにafp よりSmbになってしまった。
ネットワークのファイル共有とかホント便利だと思うし、家庭用機器の家電はクラウド対応とかじゃなくて単純にSMBに対応すれば相当改善すると思うんですがねぇ。
その他の情報
- https://wiki.samba.org/index.php/User_Documentation
- http://wiki.samba.gr.jp/mediawiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
- https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/assembly_using-samba-as-a-server_deploying-different-types-of-servers#assembly_understanding-the-different-samba-services-and-modes_assembly_using-samba-as-a-server