: トップ : 差分 : 一覧 : ソース : 検索 : ヘルプ : PDF : ログイン

Samba & NFS

最終更新時間:2025年02月28日 17時00分27秒


Samba

バージョン確認

> smbd -V

  設定

/usr/local/etc/smb4.conf のサンプル

[global]
 workgroup = Workgroup
 netbios name = Samba
 server string = Samba  
 security = User
 map to guest = Bad User
 guest account = nobody
 nt acl support = no ; unix の パーミッション(rwx)を使う
 wide links = yes ; ディレクトリのシンボリックリンクがクライアントから見えるように(セキュリティ上よくない)
 unix extensions = no ; 同上

[public]
 comment = FreeBSD Samba
 hosts allow = 192.168.0.1, 192.168.0.2
 path = /home/samba
 guest ok = yes
 guest only = yes
 read only = no
 browseable = yes
 create mask = 0777
 force create mode = 0777
 directory mask = 0777
 vfs objects = recycle
 recycle:maxsize = 2000000
 recycle:exclude = *.tmp

[share$] ; 隠し共有
 path = /home/hidden
 invalid users = taro, hanako

[printer01] ; プリンタ
 printable = yes
 printer name = lp ; /etc/printcap
 printing = BSD
 use client driver = yes ; エラーを無視するために必要
 path = /tmp
 guest ok = yes
 guest only = yes

設定ファイルの確認

# testparm

/etc/rc.conf

samba_server_enable="YES"

  使い方

> smbcontrol smbd shutdown # 終了
> smbcontrol smbd reload-config # 設定の再読み込み
> smbcontrol smbd close-share share1 # オープン中の共有をデーモンの再起動なしに閉じる

> smbclient -L //192.168.0.30 # 共有一覧
> smbclient -Utaro%passw0rd //192.168.0.30 -D share1 -c 'prompt; mget *.zip; exit'
> smbget -qRr -u guest -p '' smb://192.168.0.30/ほげフォルダ

※ windows 側でユーザにパスワードを設定しているか,
コンパネ>ネットワークと共有センター>共有の詳細設定の変更 から
パスワード保護共有を無効にしていなければ,アクセスできない.

対話的に再帰的にいただく

smb:> prompt
smb:> recurse
smb:> mget *.png

  smb4.conf の説明

ユーザ関連

ゲストユーザを使いたいとき

map to guest = Bad User
guest ok = Yes

は最低必要で,ゲストユーザのみにしたい場合は

guest only = Yes 

を追加.

ユーザ認証を行いたいときは,基本は unixユーザを作り,同じ login-id の sambaユーザを作る

> useradd          # pw useradd は覚えるのがダルイのでユーティリティ useraddを使う
> pdbedit -a -u taro

空パスワードは許されない(認証が失敗する)が,smb4.conf で

null passwords = Yes

すれば可.

一時的に共有したくない場合は,コメントアウトが面倒なので

available = No

にしておけばよい.

unix と samba のパスワードは違ってもよいので,
unix にログインさせない場合(ログインシェルが nologin),
unix ユーザ作成時にパスワードは空にしてもよい.

  アクセス権

基本

共有アクセスについては Samba接続時のユーザ(Sambaユーザ)の権限で行われるが,
force user や force group パラメータで 強制的に特定のユーザ権限で行うようにできる.

guest only = Yes で強制的にゲストユーザ権限にできる.

ファイルとディレクトリを作成するときのデフォルトのパーミッションは,
それぞれ 744(rwxr--r--) と 755(rwxr-xr-x).

ユーザ単位のアクセス制御は
例えば invalid users = root, @sys で root や sys グループを駄目にする.

グループ指定のキーワード

+ unix ユーザを検索
& NIS ユーザを検索
&+ NIS ユーザを検索 のち unix ユーザを検索
+& unix ユーザを検索 のち NIS ユーザを検索
@ &+ と同義

デフォルトで Samba 共有は read only
writeable = Yes が read only = No と同義
write list と read list でユーザ,グループ単位で読み書きを設定できる
write list / read list は writeable パラメータより優先される
→ 読込専用のファイル共有に対して例外的に読書きできるユーザを指定したいときに便利.

最終的には unixユーザのパーミッションにて決定される.

[homes] セクションがあると,各ユーザのホームディレクトリが自動的に共有される.

path = %H/smbdir

など,ホーム以下を指定すると ドットファイルが見えないので便利かも

browsable = no ; homes そのものは見えないように
valid user = %S ; 本人意外はアクセス禁止

ユーザ管理コマンド

pdbedit コマンドのオプション

pdbedit -L ; すべてのユーザを表示
pdbedit -a -u john ; 作成
pdbedit -x -u bob ; 削除

# pdbedit -a -u taro ; インタラクティブ
# echo -e "pswd\pswd" | pdbedit -a -t -u taro ; バッチ的

こまかいこと

指定したファイルを非表示にし 読取を禁止する.

veto files = /.*/ ; なぜか表示はされないが 書込はできてしまうのは仕様
delete veto files = Yes ; フォルダごと削除したいときは 削除できるようにする

読取権限のないファイルの表示/読取を禁止する.

hide unreadable = Yes ; なぜか書込はできてしまうのは仕様

書込権限のないファイルの表示/読取を禁止する.

hide unwriteable = Yes ; ディレクトリは表示される

ディレクトリを空に見せる.

dont descend = /bin,/dev,/lib

利用するインターフェースを指定する.

interfaces = eth0 192.168.10.1
bind interfaces only = Yes

Windows から別のユーザでログインするためには一旦接続を解除する.
バッチファイルに書いておくと便利

C:\> net use \\192.168.0.2 /delete
C:\> start \\192.168.0.2
C:\> net use \\192.168.0.2 /user:taro taropw

NFS

 サーバ側(ex 192.168.0.2)

/etc/rc.conf

nfs_server_enable="YES"
rpcbind_enable="YES"
mountd_enable="YES"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"

/etc/exports

/usr/home/share 192.168.0.3

 クライアント側(ex 192.168.0.3)

/etc/rc.conf

nfs_client_enable="YES"

$ showmount -e 192.168.0.2
$ mount 192.168.0.2:/usr/home/share /mnt/nfs