sambaを設定して、PCとスマホ間のデータの受け渡しをしてみた

PCとスマホ間でデータの受け渡しを行うことがあります。 数MBとか、数十MB程度であれば、Googleドライブや、USBメモリ経由でも気にならないのですが 数百MBとか、GB単位のファイルとなると、手間も時間もかかります。(「なぜ、そんなデカイものを」という突っ込みは置いといて・・・)
そこで、sambaによるファイル共有を利用してみることにしました。

よく見かけるのは、smb.confに、共有ディレクトリのセクションを追記していく方法ですが、最近(?)では、それとは別に、root 以外のユーザーが共有の追加、修正、削除を行なうことを可能とする機能「ユーザー定義共有」という、コマンドで共有ディレクトリを設定する方法があるようなので、その方法で設定してみました。

環境

PC:Antergos Linux Release 17.6 (デスクトップ:Cinnamon)
  Manjaro Linux(Cinnamon)やRaspberry piでも同じ手順で出来るようです。
スマホAndroid 7.0

手順

  1. sambaのインストール
  2. ユーザー定義共有の作成
  3. sambaの設定
  4. サービスの再起動
  5. sambaユーザーの作成
  6. 共有ディレクトリの作成と登録
  7. スマホの設定

詳細

1.sambaのインストール

Antergos Linux(Cinnamon)では、デフォルトでsambaがインストールされていました。
しかし、設定ファイルであるsmb.confがありません。どうやら、自分でデフォルトの設定ファイルをダウンロードする必要があるようです。 ArchWikiによると、以下のコマンドでダウンロードできるようです。

2.ユーザー定義共有の作成

共有設定を格納するディレクトリ、および共有するユーザーグループ

 

共有設定を格納するディレクトリを作成
$ sudo mkdir -p /var/lib/samba/usershare
システムアカウントとして、sambashareを作成
$ sudo groupadd -r sambashare
作成したディレクトリの所有グループを変更
$ sudo chown root:sambashare /var/lib/samba/usershare
アクセス権を変更(スティッキービット有り)
$ sudo chmod 1770 /var/lib/samba/usershare

 

sambashare グループにユーザー(自分:Z1000)を追加

$ sudo gpasswd sambashare -a z1000

ここで追加するユーザーは、Antergosに登録されているユーザーでなければいけない。
ここで追加したユーザーが、下記の共有ディレクトリ登録等のコマンド(net usershare)を実行できるらしい。

3.sambaの設定

/etc/samba/smb.confの設定
以下の設定は、自分だけがPCとスマホでデータを受け渡す事しか考えていないので、Homeディレクトリや、プリンタの共有は行っていません。

globalセクション

;共有設定を格納するディレクト
usershare path = /var/lib/samba/usershare
;作成を許可するユーザー定義共有の最大数(デフォルトは0らしいので、明示的に指定しないと、共有を作れないらしい)
usershare max shares = 3
;ゲストアクセスを許可しない
usershare allow guests = no
;ユーザーが所有しているディレクトリのみが共有可能とする
usershare owner only = yes

;rootによるサービスへのログインは許可しない
invalid users = root

;パスワードデータベース形式はTDBファイル
passdb backend = tdbsam

;クライアントに、正しいユーザー名とパスワードでログオンを行なわせる
security = user

;プリンタを共有しない
load printers = no
printcap name = /dev/null
disable spoolss = yes

disable spoolss です。spools(sが足りない)とすると、testparmでメッセージが出るので注意。

 

homesセクション

すべてコメント

; comment = Home Directories
; browseable = no
; writable = yes

 

printersセクション

すべてコメント

; comment = All Printers
; path = /usr/spool/samba
; browseable = no
# Set public = yes to allow user 'guest account' to print
; guest ok = no
; writable = no
; printable = yes

 

設定ファイルの確認
$ testparm

4.サービスの再起動

サービスの再起動
$ sudo systemctl restart smbd.service
$ sudo systemctl restart nmbd.service
自動起動の設定
$ sudo systemctl enable smbd.service
$ sudo systemctl enable nmbd.service

5.sambaユーザーの作成

sambaアクセス用ユーザー(Z1000)の作成
$ sudo pdbedit -a -u z1000

6.共有ディレクトリの作成と登録

共有名"Share"で、/home/z1000/Shareを共有する。

共有ディレクトリの作成
$ net usershare add Share /home/z1000/Share MyPrivateShare z1000:F

 

項目値備考

共有名 Share 指定必須
共有するディレクト /home/z1000/Share 指定必須
コメント MyPrivateShare 指定は任意
アクセス権 z1000:F ユーザーZ1000に対し、フルアクセスを許可する。
デフォルト(指定しない場合)は、読み取り専用らしいので書き込み権限を追加しないとスマホ側からアップロードできない。
アクセス権の指定は、"ユーザー:"の後ろに
 R:読み取り専用
 D:拒否
 F:フルコントロール
のいずれかを指定する。
すべてのユーザーを対象とする場合には、ユーザー名をeveryoneとする。
複数のユーザーを指定する場合、","で区切る

作成した共有ディレクトリの確認や削除は以下の通り

共有ディレクトリの一覧
$ net usershare list
共有ディレクトリの情報
$ net usershare info
$ net usershare info Share
共有ディレクトリの削除
$ net usershare delete Share

7.スマホの設定

スマホでは、Flashlight + Clockのファイルマネージャーを使用しました。
こちらの設定の詳細は、省略しますが、5.sambaユーザーの作成で作成したユーザーを指定し、無事データの受け渡しが出来るようになりました。
Googleドライブ経由に比べ、クラウドにアップロードする手間もいらない上、転送速度が格段に速く、快適です。

参考にしたサイト

Samba - ArcWiki
ThinkIT 第4回:Samba 3.0.20以降の新機能を追え(3)
Sambaサーバ構築、5つのべからず:2008年版
smb.conf