2021年6月3日木曜日

Ubuntu 滅茶苦茶珍道中 其の陸 共有 参 Ubuntu から Win へ

共有の 本丸!。
Ubuntu 側の 共有 を Windows で弄れる様に。
俗に言う Samba 導入の 主目的 だと思います。
Server 機能を Ubuntu 上の Samba で!。


Ubuntu 上に 共有用の スペース を設け、
Windows からも 弄れる 様にする!。
皆さんが Samba を導入する 目的 でしょうね。

今回の例は、ちょっと 臍曲がり です。
普通、其れ用に Directory を新設する解説 が殆どだと思います。
  最後に書く予定ですが、此れの方が簡単かも知れません。
しかし、今回は、
既存の Windows で使っていた 物理ドライブ (NTFS Format) を、
そのまま、Ubuntu に内蔵し、其れを共有させます。
共有の目的は、此のデータドライブの維持管理の為です。
データの追加や更新を、Windows 側からコントロールしようと。
  尚、該当ドライブのデータは、既に、Windows 側に複製済みです。
  そう、共有でバックアップデータ的な使い道を考えています。


それでは、参りましょう。


其の前に、通常、Samba の解説は Samba Install と ユーザー登録 から始まります。
此処では、既に、前々投稿 で書いていますので、そちら を参照して下さい。


では、先ずは、 マウントした Windows ドライブの確認から。
/mnt/<uuid> 。
因みに、デバイス は /dev/sbd1 になっています。
尚、NTFS で Format され、既に、データも入った状態です。
Windows 上では Owner = UserA だった訳ですが、Ubuntu 上では root が 持っていますね。
アクセス権を確認すると、777 、詰まり、誰でもアクセス可!。
最初は、此の辺り を余り意識していなかったのですが、
共有設定をするに従い、重要である事に気付かされる事になります。  後述。

次に、Ubuntu の Samba の設定ファイルを書き直します。
直に修正を加えて仕舞うと、何かの時に怖いですから、バックアップしましょう。
user_a@pcName:~$ sudo cp -p /etc/samba/smb.conf /etc/samba/smb.conf.default
そして、修正 ... 。
user_a@pcName:~$ sudo gedit etc/samba/smb.conf
[sudo] user_a のパスワード:
No protocol specified
Unable to init server: 接続できませんでした: 接続を拒否されました

(gedit:3799): Gtk-WARNING **: 22:42:25.792: cannot open display: :10.0
あれぇ~ ???。
GUI から、無理に開いても、Read Only で 修正が効きません!。
調べて見るも、一向に埒が明きません。
マシン直 では無く、Remote Desktop で操作しているので、事態は更に複雑です。
結局、 ファイルの Owner と アクセス権 とを書き換えて、凌いだのですが、
此れって、可成り、強引! です。
きっと、より良い 対策は Owner = root、Group = user_a (Group) とするのが、望ましい気がします。
ですから、参考程度にご覧下さい。
        File = ReadOnly

user_a@pcName:~$ sudo su -
root@pcName:~#
root@pcName:~# chown user_a /etc/samba/smb.conf
root@pcName:~# gedit /etc/samba/smb.conf
Unable to init server: 接続できませんでした: 接続を拒否されました

(gedit:2594): Gtk-WARNING **: 23:50:26.486: cannot open display:

root@pcName:~# ls -l /etc/samba/smb.conf
-rw-r--r-- 1 user_a root 9706 4月 dd 19:37 /etc/samba/smb.conf
root@pcName:~# exit
ログアウト
user_a@pcName:~$ gedit /etc/samba/smb.conf

        File = Writable !
  尚、Ubuntu で、root から gedit を実行するのは、基本、駄目の様なので、
  素直に、ユーザーを切り替えて実施しました。
  また、此のままでは root が ReadOnly なので、rw になる様に変えていますが。
  思うに、可成り、危うい 気もします。  前述の通り。
root@pcName:~# chmod g=rw- /etc/samba/smb.conf

では、ようやく、本筋に戻りましょうね。
smb.conf の書き換え!。  ;) 。

Internet 上にある 幾つか を見較べられる事をお勧めします。  レッツ 検索!。

私が出した 暫定的な結論 は 以下の通り。  赤い字は説明用ですので、行頭に # を入れるか、削除して下さいね。
前提は、LAN 内でのみの 共有 です。

[global] セクション冒頭に追記
# Rev1 2021/mm/dd ------------
   unix charset = UTF-8
   dos charset = CP932

同 #### Networking #### の記述を変更( nn は各自の環境に依存 )
#;   interfaces = 127.0.0.0/8 eth0
   interfaces = 192.168.nn.0/24

同 ########## Domains ########### の直前で、以下を記述
#   map to guest = bad user
   security = user

   usershare owner only = false

ファイル末尾に以下を追記(共有名等の設定)
# Each User
[homes]
   comment = Home Directories Ubuntu
   browseable = yes
   read only = no
   create mask = 0700
   directory mask = 0700
   valid users = %S

# /mnt/<uuid>
[Pub_<SomeDirectory>]
   path = mnt/<uuid>/<SomeDirectory>
   comment = Public Dir <SomeDirectory>
   browsable = yes
   writable = yes
   guest ok = no
   valid users = @WORKGROUP
   force create mode = 777
   force directory mode = 777
   inherit permissions = yes

尚、 共有名 は、日本語 でも OK とは思いますが、敢えて、英数半角とし、
コマンド利用時の誤動作を避ける意味からも、半角スペースは使いません。

force create/directory mode も 所謂 全員 Full Control にしてありますが、
事細かな制御をするのなら、
読み取りだけ とか、隠蔽 とか、も考えたい処でしょう。
此処で、先に書いた 既存ドライブを繋ぎ そのまま運用した 落とし穴 が現れます。
root 所有で、アクセス権は 777 でしたね。
WORKGROUP に所属するユーザー群は ... 。
はい、3番目の 7 です。  区別は ... 付きません。  全ユーザー同一!。
自分で作ったりした Directory であれば、恐らく、自分が所有者。
775 等で他のユーザーに書き込みをさせない事も可能になる筈ですが ... 。
勿論、所有者を変えたり、Group 指定を変えたり、と、アクセス権を弄れば良い訳ですが、
既に出来上がっている データ群 ですから、数も膨大 でしょうし ... 。
落ち着いて冷静に対処すれば、変更も可能でしょうが、
ケアレスミス が混入する可能性もあります ... 。
やはり、普通の解説の様に、最初に器を用意し、其れに注入する方が確実かも。
ラフに、全員ご自由に! で良いのであれば、 敢えて、苦労する事も無い訳ですが。


一応、設定に矛盾が無いか? を、以下で試しましょう。
user_a@pcName:~$ sudo testparm
何か問題があれば、英語で むにゃむにゃ と返って来ます。
でも、其れって、単なる 記述上の 構文上の エラー有無 を見ているだけ です。
動く様になった後で、挙動が 予定通りか否か?、の検証は必要ですね。
重要です!、 此れ!。


此れで、作業は終わりです。


各ユーザーが登録されているか確認し、Samba を再起動します。
user_a@pcName:~$ sudo pdbedit -L
user_a@pcName:~$ sudo systemctl restart smbd
もし、OS 再起動後も自動実行させたいなら、此の おまじない を。
  (普通は そうでしょ。)
user_a@pcName:~$ sudo systemctl enable smbd



さぁ、 Windows 側から、共有 を覗いて、確認して下さい。
上手く行ったら、 ご喝采!。  ;) 。


   上記の設定の場合、 WORKGROUP に所属するユーザーは ファイル削除 も可能です。
   間違って消すなよ! 位の 脅し は 事前に伝えて置いた方が良いですし、
   そして、消去されたら、再び、元からコピーする 位の 心算 でいた方が宜しいでしょう。  ;) 。



0 件のコメント:

コメントを投稿