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
またはpublic
yes|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