本ページでは、Samba サービスを使用して SMB プロトコルで NFS ファイルシステムを共有し、POSIX アクセス制御リストエントリ (ACE) を使用して NFS ファイルシステムへのアクセスを制御する方法について説明します。

始める前に

NFSv4 ファイルシステムは、Linux サーバーにマウントされます。 詳細については、「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 オペレーティングシステムの手順は類似していますが、コマンドが異なる場合があります。

  1. Samba サービスをインストールします。

    次のコマンドを実行して、Samba サーバーをインストールします。 詳細については、「centos 7 でのファイルサーバーの設定)」 をご参照ください。

    sudo yum install -y samba samba-common
  2. Samba ユーザーとグループを作成します。

    この例では、player、admini、anonym のユーザーが作成されます。 次のグループが作成されます。player、adminis、および anonym_group。 player ユーザーが players グループに、admini ユーザーが adminis グループに、anonym ユーザーが anonym_group グループに追加されます。

    1. 次のコマンドを実行して、ユーザーとグループを作成し、対応するグループにユーザーを追加します。
      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
    2. 以下のコマンドを実行して、各 Samba ユーザーのパスワードを作成し、SMB プロトコルを使用してファイルシステムをマウントします。
      sudo smbpasswd -a player
      sudo smbpasswd -a admini
      sudo smbpasswd -a anonym
  3. 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
  4. 以下のコマンドを実行して、Samba プロセス smbd を開始します。
    sudo systemctl enable smb.service
    sudo systemctl enable nmb.service
    次のコマンドを実行して、Samba プロセス smbd を開始することもできます。
    sudo systemctl restart smb.service
    sudo systemctl restart nmb.service
  5. Windows で Samba サービスを確認します。
    net use コマンドを実行し、NFSv3 ファイルシステムをマウントします。
    net use * \\samba-IP\nfs3 <password> /user:<user>

    ファイルシステムがマウントされると、すべてのplayer、admini、および anonymous ユーザーがファイルシステムにアクセスできます。 ファイルとディレクトリを作成し、それらに対して読み取り/書き込み操作を実行できます。

  6. 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
  7. 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 パッケージを使用することを推奨します。