今回やること、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のボリューム・シャドウコピーなどは、専用の設定を書く必要ががる。
接続テスト
## ユーザー指定
smbutil view //takuya@192.168.1.140
## Gesut
smbutil view //192.168.1.140
## ユーザー指定
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はどうやるんだろう。昔からある 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に対応すれば相当改善すると思うんですがねぇ。
その他の情報
過去記事