sambaの設定と使い方
概要
- linuxの共有ファイルシステムでWindowsと相互運用できる
- ログインに使うユーザ情報はlinuxのユーザと紐付ている
インストール
ubuntu, debian
$ sudo apt install samba
Linuxでユーザのホームフォルダ以下をパスワード付きでSMBで共有する方法
- サーバサイド
- 編集する箇所が少なく、sambaを最小の設定でセットアップするのに向いている
-
sambaをインストールする - 共有したいユーザを
sambasareグループに追加する -
/etc/samba/smb.confに[homes]の設定を追加する
$ sudo apt install samba
$ sudo systemctl enable --now smbd
$ sudo usermod -aG sambashare $USER
$ sudo smbpasswd -a $USER
設定に追加する項目
[homes]
comment = Home Directories
browseable = yes
read only = no
create mask = 0700
directory mask = 0700
valid users = %S[homes]
comment = Home Directories
browseable = yes
read only = no
create mask = 0700
directory mask = 0700
valid users = %S
シンボリックリンクを追うようにする設定
- セキュリティ上の理由で追わない設定になっているので注意する
[global]
...
follow symlinks = yes
wide links = yes
unix extensions = no
再起動
$ sudo systemctl restart smbd
- クライアント
-
\\<ip-address>\<username>でアクセス可能
-
samba4を構成するdaemon
-
samba- active directoryドメインコートローラとして動作する
-
smbd- ファイル、プリンタの共有
- ユーザ認証
-
nmbd- ブラウジング機能
- winsサーバ(netbios名とipアドレスの解決)
-
winbindd- nssを利用してsambaからwindowsユーザ情報を利用可能にする
設定
設定ファイル
/etc/samba/smb.conf
構文確認
$ testparm -s
または
$ testparm -v # 暗黙的な詳細も表示
設定項目
-
hosts allow = <192.168.1.0>/<255.255.255.0>- アクセス許可のネットワーク
-
hosts deny = <1.1.1.1>- アクセス拒否のネットワーク
-
workgroup- active directoryのNetBIOS名
- 所属するグループ名
-
netbios name- sambaサーバのNetBIOS名
-
server string- ログイン時の説明
-
wins support = <yes|no>- wins serverとして動作する
-
wins server = <ip-address>- 外部のwinsサーバを指定する
-
logon script- ログオン時に動くスクリプト
-
realm- active directoryのFQDN
-
security = <ads|user|domain>- 動作モード(通常はads)
-
ads- active directoryのドメインコントローラ
-
domain- ntドメインのドメインコントローラ
-
user- ユーザレベル認証
-
map to guest-
Never- ゲスト禁止
-
Bad User- アカウントがないユーザはguestとして扱う
-
Bad Password- パスワードを間違ったユーザはguestとして扱う
-
-
null passwords = <yes|no>- パスワード空欄を許可するかしないか
-
unix password sync- linuxホストとパスワードを共有する
-
username map = </etc/samba/smbusers>- linuxとwindowsのユーザの対応表でユーザ名を変換するテーブル
-
idmap config * : backend = <tdb|ldap>- ldap等を利用するときのidマップシステムのバックエンド
-
idmap config * : range = <1000>-<9999>- linuxユーザに割り当てるuid/gidの範囲
-
guest account- ゲスト時、linuxホストで使うユーザ
-
password server- 自身ではなく他のサーバを認証局とする
-
passwd program = </usr/bin/passwd %u>- パスワードを変更する際のコマンド
-
passwd chat = <*new*password* %n ~~ *changed*>- パスワードを変更する際の対話スクリプト
- セクション内
-
log file = </var/log/samba/log.%m>- ログ出力先
-
log level = <3>- ログレベル
-
max log size = <50>- ログの最大サイズ
-
comment- ブラウズ時のコメント
-
path- シェアしたいパス
-
valid users- アクセスできるユーザのリスト,グループ(@
)
- アクセスできるユーザのリスト,グループ(@
-
write list = <user1>,<user2>,<@group1>,...- 例外的に書き込みできるユーザ・グループのリスト -
browseable = <yes|no>- ブラウズできるか
-
read only = <yes|no>- 読み込み限定
-
writable = <yes|no>- 書き込みさせない
-
hide dot files = <yes|no>- .で始まるファイルを表示しない
-
hide files = <regex>- 一致するものを表示しないが直接指定するとアクセスできる
-
veto files = <regex>- 一致するものを表示しない
-
guest okまたはpublicyes|no
-
force user = <user>- ユーザ名を指定することでユーザを強制する
-
force group = <group>- グループ名を指定することでグループを強制する
-
- プリンタ
-
printableかprint okのフラグを建てる必要がある
-
- プリンタドライバ
-
[print$]というフィールド
-
-
[<section-name>($)]- セクションを定義する
-
$をつけるとブラウズできなくなる
- メタ変数
-
%v- バージョン情報
-
%m- 接続ホスト
-
%U- ユーザ名
-
lmhostsファイル
- netbiosとipの対応が記されている
再起動
$ sudo systemctl restart smbd
ユーザの追加、削除、確認、パスワードの設定
追加
$ sudo pdbedit -a <username>
有効化
$ sudo smbpasswd -e <username>
-
-dは無効化
削除
$ sudo pdbedit -x <username>
確認(すべてのユーザを表示)
$ sudo pdbedit -L
パスワードの追加
$ sudo smbpasswd -a <username>
パスワードの変更
$ sudo smbpasswd <username>
設定ツール
samba-tool
サブコマンド
-
dns- dns管理
-
domain- ドメイン管理
-
testparm- 設定ファイルの構文チェック
-
testparm -v- すべて表示
-
testparm -s- 変更したところのみ表示
-
user- ユーザ管理
マスターブラウザ
概要
- Windowsのネットワークのコンピュータのリストを管理するコンピュータのこと
グループ名からマスターブラウザを探す
$ nmblookup -M WORKGROUP
192.168.122.1 WORKGROUP<1d>
ホスト名から詳細情報を得る
$ nmblookup -A <ip-address>
マスターブラウザの優先順位を上げる
smb.confにいずれかを設定する
preferred master = yes-
os levelの値を大きくする local master = yes
wins server
概要
- IPとNetBIOSを解決するサービス
/etc/samba/lmhosts
概要
- IPとNetBIOSの対応表
sambaクライアント
cifsを使う方法
インストール
ubuntu, debian
$ sudo apt install cifs-utils
マウント
$ sudo mount -t cifs -o user=<username> //<ip-address>/<dir-name> <target-dir>/
smbclientを使う方法
インストール
ubuntu, debian
$ sudo apt install smbclient
アクセス
ログインする場合
$ smbclient //<ip-address>/<dir-name> -U <username>
-
-U|--user- ユーザを指定
ゲストの場合
$ smbclient //<ip-address>/<dir-name> -N
-
-N|--no-pass- パスワードを入力しないでアクセス
アクセスの管理
smbstatus
- クライアントのアクセス状況を確認する
# smbstatus
windowsネットワーク操作コマンド(net)
windowsのActive Directoryに参加する
$ sudo net ads join -U Administrator