Ubuntuでファイル共有サーバsambaをインストールしてセットアップする際に編集する/etc/samba/smb.confの例を示す。
完全なリファレンスは以下にある。
https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
デフォルトの設定ファイルは/etc/samba/smb.confにある。これを編集・追記してsmbdをsystemctlなどを用いて再起動する。
[global]
# charset
dos charset = CP932
unix charset = UTF-8
# by default
security = user
# bind interfaces
interfaces = eth0
bind interfaces only = yes
[share] #arbitrary label 1
path = /mnt/share
comment = /mnt/share is here
writable = yes
browsable = false
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
[readonly] #arbitrary label 2
path = /mnt/readonly
comment = /mnt/readonly is here
read only = yes
browsable = yes
guest ok = yes
guest only = yes
[home] #arbitrary label 3
path = /home
guest ok = no
valid users = user, fuger, hoger, suher
browsable = no
writable = yes
share modes = yes
create mode = 0664
directory mode = 0755
以上のように設定する。もちろん中略多数である。ある程度の察し力があればそれぞれの意味は説明不要だろう。
Windowsエクスプローラからのアクセス例は以下のようになる。UbuntuのIPアドレスが192.168.0.16だったらばエクスプローラのアドレスに\192.168.0.16\と入力することによってbrowsable = yesを指定した共有フォルダが表示される。実感がわいただろうか。
この画像では1個目にプリンタも共有されているが、関係ないので白塗りにしている。この画像には写っていないが、マウスオーバーするとcomment = に書いた文字列が表示される。訪問者に何かしらのコメントを残すことが可能だ。
browsable = falseを指定した共有フォルダ(※上記例ではhome)はここには表示されないが\192.168.0.16\homeに直接アクセスすることが可能である。ただしこの例ではguest ok = noにしているためvalid userで指定したユーザでの認証が必要になる。
smbpasswd -a user
Linuxユーザのパスワードとは別途sambaユーザとしてのパスワードをこのようにして設定する必要がある。
homes以下には通常ならそのマシン上のすべてのユーザuser, fuger, hoger, suherのホームディレクトリが存在しているはずだ。しかしながら実際に参照できるのは\192.168.0.16\homeアクセス時の認証に使用したユーザのものだけとなる。smb.confでwritable = yesにしていてもファイルやディレクトリの権限が無ければ中身にアクセスすることは出来なくなっているためである。逆に上記例では/mnt/shareの権限は777にしておかないとWindowsから変更ができなくなる。
create mode / directory modeを指定しており、ユーザ認証してアクセスした共有フォルダにWindowsから何か置くと、そのユーザが所有者でよくある権限のファイルが作成されるようになっている。
一方誰でもguest権限でアクセス可能なshareフォルダにWindowsから何かを置くと、そのファイルの所有者はnobodyになる。Linux側のuserユーザからアクセスする際に権限でエラーをださないようにcreate mode / directory modeは777を指定している。
以上!