本ページでは、Samba サービスを使用して SMB プロトコルで NFS ファイルシステムを共有し、POSIX アクセス制御リストエントリ (ACE) を使用して
NFS ファイルシステムへのアクセスを制御する方法について説明します。
このタスクについて
Samba を使用し、SMB 経由で Linux と Windows 間のファイル共有を有効にできます。 これは、Linux サーバーに NFS ファイルシステムをマウントし、Windows
ユーザーとファイルシステムを共有するシナリオに適用されます。 Samba では、同じ Samba ユーザー名を使用して Windows と Linux の両方にログインし、2
つのオペレーティングシステムに個別のパスワードを設定できます。 有効なユーザーフィールドで Samba ユーザーまたはグループを指定して、ファイルシステムへのアクセス権限を付与できます。
特定のファイルまたはディレクトリへのアクセスを制御するために、POSIX ACE を設定できます。Samba はACE を SMB 権限に変換します。 詳細については、「POSIX ACL を使用した共有の設定」 をご参照ください 。
手順
ここでは、CentOS オペレーティングシステムを例として取り上げ、POSIX ACE を設定し、Samba サービスを使用して ACE を SMB 権限に変換し、NFS
ファイルシステムへのアクセスを制御する方法を説明します。 他の Linux オペレーティングシステムの手順は類似していますが、コマンドが異なる場合があります。
- Samba サービスをインストールします。
次のコマンドを実行して、Samba サーバーをインストールします。 詳細については、「centos 7 でのファイルサーバーの設定)」 をご参照ください。
sudo yum install -y samba samba-common
- Samba ユーザーとグループを作成します。
この例では、player、admini、anonym のユーザーが作成されます。 次のグループが作成されます。player、adminis、および anonym_group。
player ユーザーが players グループに、admini ユーザーが adminis グループに、anonym ユーザーが anonym_group グループに追加されます。
- 次のコマンドを実行して、ユーザーとグループを作成し、対応するグループにユーザーを追加します。
sudo useradd player
sudo groupadd players
sudo usermod -g players player
sudo useradd admini
sudo groupadd adminis
sudo usermod -g adminis admini
sudo useradd anonym
sudo groupadd anonym_group
sudo usermod -g anonym_group anonym
- 以下のコマンドを実行して、各 Samba ユーザーのパスワードを作成し、SMB プロトコルを使用してファイルシステムをマウントします。
sudo smbpasswd -a player
sudo smbpasswd -a admini
sudo smbpasswd -a anonym
- smb.conf ファイルを編集します。
/etc/samba/smb.conf ファイルは、 Samba サービスをインストールした後に生成されます。
/etc/samba/smb.conf ファイルを開いて、次の設定を実行します。 ファイル内の設定アイテムの詳細については、『
The configuration file for the Samba suite』をご参照ください。
- path = /mnt/nfs4:/mnt/nfs4 はマウントディレクトリです。 必要に応じてディレクトリを置き換えます。
- valid users:ファイルシステムにアクセスする権限が付与されているユーザーまたはグループです。 必要に応じてユーザーまたはグループを置き換えます。
[global]
server string = Samba Alibaba NAS NFS Server
server role = standalone server
min protocol = SMB2_10
log file = /var/log/samba/%m
log level = 2
valid users = @players, @adminis, @anonym_group
writable = yes
[nfs3]
comment = Secure File Server Share
path = /mnt/nfs3
- 以下のコマンドを実行して、Samba プロセス smbd を開始します。
sudo systemctl enable smb.service
sudo systemctl enable nmb.service
次のコマンドを実行して、Samba プロセス smbd を開始することもできます。
sudo systemctl restart smb.service
sudo systemctl restart nmb.service
- Windows で Samba サービスを確認します。
net use
コマンドを実行し、NFSv3 ファイルシステムをマウントします。
net use * \\samba-IP\nfs3 <password> /user:<user>
ファイルシステムがマウントされると、すべてのplayer、admini、および anonymous ユーザーがファイルシステムにアクセスできます。 ファイルとディレクトリを作成し、それらに対して読み取り/書き込み操作を実行できます。
- NFSv3 ファイルシステムの POSIX ACE を設定します。
sudo umask 777
sudo mkdir dir0
sudo setfacl -mg:players:rx dir0
sudo setfacl -mg:adminis:rwx dir0
sudo setfacl -mu :: --- dir0
sudo setfacl -mg ::-x dir0
sudo setfacl -mo :: --- dir0
sudo setfacl -d -mg:players:rx dir0
sudo setfacl -d -mg:adminis:rwx dir0
sudo setfacl -d -mu :: --- dir0
sudo setfacl -d -mg ::-x dir0
sudo setfacl -d -mo :: --- dir0
- Windows で POSIX ACE の適合性を確認します。
- NFSv3 ファイルシステムを Windows サーバー上のSamba ユーザー admini としてマウントします。 dir0 ディレクトリの下に、ファイルとサブディレクトリを作成できます。
- NFSv3 ファイルシステムを Windows サーバー上の Samba ユーザー player としてマウントします。 dir0 ディレクトリにあるファイルとサブディレクトリは読めますが、そのディレクトリのファイルとサブディレクトリを作成することはできません。
- NFSv3 ファイルシステムを Samba ユーザー anonym として Windows サーバーにマウントします。 dir0 ディレクトリにあるファイルとサブディレクトリにアクセスすることはできません。
Samba および POSIX ACL パッケージの機能
- NFS ファイルシステムの POSIX ACE は SMB 権限に変換され、Windows システムの [フォルダーのプロパティ] の [セキュリティ] タブに表示されます。
- SMB クライアントで SMB 権限を設定し、POSIX ACE に変換し、NFS ファイルシステムに変更を保存できます。
- SMB 権限を POSIX ACE に変換できない場合、たとえば、権限で Deny オプションが選択されている場合、または読み取り、書き込み、実行以外の権限が設定されている場合、変更は失敗します。
- Linux サーバーでのみ ACE を設定し、Windows サーバーをクライアントとして使用することを推奨します。
- NFSv3 プロトコルはロックをサポートしていません。 複数の SMB および NFS クライアントによる同時読み取り/書き込み操作により、データの不整合が発生する場合があります。
同時読み取り/書き込み操作が必要な場合は、Samba および NFSv4 ACL パッケージを使用することを推奨します。