6 共有ファイル・システム管理
警告:
Oracle Linux 7は現在延長サポート中です。詳細は、Oracle Linux拡張サポートおよびOracleオープン・ソース・サポート・ポリシーを参照してください。
できるだけ早くアプリケーションとデータをOracle Linux 8またはOracle Linux 9に移行してください。
この章では、NFSおよびSamba共有ファイル・システムの管理タスクについて説明します。
NFSについて
ネットワーク・ファイル・システム(NFS)サーバーは、IPベースのネットワークを介して、ローカル・ファイル・システム内のディレクトリ階層をリモート・クライアント・システムと共有できます。NFSサーバーがディレクトリをエクスポートした後に、NFSクライアントはこのディレクトリをマウントします(これを行う権限が付与されている場合)。このディレクトリは、ローカル・ディレクトリであるかのようにクライアント・システムに表示されます。NFSはストレージ・プロビジョニングを一元化するため、データの整合性および信頼性を向上できます。
Oracle Linux 7では、次のバージョンのNFSプロトコルをサポートしています。
-
NFSバージョン3 (NFSv3)、RFC 1813で指定
-
NFSバージョン4 (NFSv4)、RFC 7530で指定
-
RFC 5661で指定されたNFSバージョン4のマイナー・バージョン1 (NFSv4.1)。
NFSv3は、rpcbind
サービスで制御されるリモート・プロシージャ・コール(RPC)サービスに依存します。rpcbind
は、RPCサービスに対するリクエストに応答し、リクエストされたサービスの接続を設定します。また、ロック・プロトコルとマウント・プロトコルの処理には、別々のサービスが使用されます。これらのすべてのサービスで使用される様々な範囲のポートに対処するようにファイアウォールを構成すると、複雑になり、間違いやすくなります。
NFSv4では、NFSサーバー自体がサービス・リクエストをTCPポート2049でリスニングするため、rpcbind
を使用しません。また、プロトコルのマウントおよびロックはNFSv4プロトコルに統合されているため、別々のサービスも必要ありません。これらの調整により、NFSv4のファイアウォール構成はHTTPなどのサービスほど難しくありません。
NFSサーバーの構成
NFSサーバーを構成するには:
-
nfs-utils
パッケージをインストールします。sudo yum install nfs-utils
-
/etc/exports
ファイルを編集して、クライアントがマウントできるようにサーバーが使用可能にするディレクトリを定義します。たとえば:/var/folder 192.0.2.102(rw,async) /usr/local/apps *(all_squash,anonuid=501,anongid=501,ro) /var/projects/proj1 192.168.1.0/24(ro) mgmtpc(rw)
各エントリは、エクスポートされるディレクトリへのローカル・パス、その後に、カッコで囲まれたクライアント固有のマウント・オプションを使用してディレクトリをマウントできるクライアントのリストで構成されます。この例の場合は次のようになります。
-
IPアドレスが192.0.2.102のクライアント・システムは、読取り/書込み権限を使用して
/var/folder
をマウントできます。ディスクへの書込みはすべて非同期で、これは、サーバーが、ディスクに書き込まれる書込みリクエストを待機せずに、クライアントからの後続のリクエストに応答することを意味します。 -
すべてのクライアントは
/usr/local/apps
を読取り専用でマウントでき、接続しているすべてのユーザー(root
を含む)は、UID 501およびGID 501で非特権ローカル・ユーザーにマップされます。 -
192.168.1.0
サブネット上のすべてのクライアントは/var/projects/proj1
を読取り専用でマウントでき、mgmtpc
という名前のクライアント・システムは読取り/書込み権限を使用してディレクトリをマウントできます。
ノート:
クライアント指定子とカッコで囲まれたオプション・リストの間に空白はありません。
詳細は、
exports(5)
マニュアル・ページを参照してください。 -
-
nfs-server
サービスを開始し、システムの再起動後にサービスが開始するように構成します。sudo systemctl start nfs-server sudo systemctl enable nfs-server
-
サーバーがNFSv4クライアントにサービスを提供する場合は、
/etc/idmapd.conf
を編集し、Domainパラメータの定義を編集してサーバーのDNSドメイン名を指定します。たとえば:Domain = mydom.com
この設定によって、
all_squash
マウント・オプションが指定されていない場合に、NFSクライアント上で所有者やグループが匿名のユーザーまたはグループ(nobody
またはnogroup
)として予期せずにリストされるのを防ぎます。 -
ファイアウォールを介したNFSv4クライアントへのアクセスのみを許可する場合は、次のコマンドを使用します。
sudo firewall-cmd --zone=zone --add-service=nfs sudo firewall-cmd --permanent --zone=zone --add-service=nfs
この構成は、
rpc.nfsd
がTCPポート2049でクライアント・リクエストをリスニングすることを前提としています。 -
NFSv4クライアントと同様に、ファイアウォールを介してNFSv3クライアントにアクセスできるようにする場合は、次の手順を実行します。
-
/etc/sysconfig/nfs
を編集し、ネットワーク・マウント要求とステータス監視を処理するポート設定を作成します。# Port rpc.mountd should listen on. MOUNTD_PORT=892 # Port rpc.statd should listen on. STATD_PORT=662
この例に示すポート値は、ファイル内でコメント・アウトされているデフォルト設定です。
-
/etc/sysctl.conf
を編集し、ネットワーク・ロック・マネージャがリスニングするTCPおよびUDPポートの設定を構成します。fs.nfs.nlm_tcpport = 32803 fs.nfs.nlm_udpport = 32769
-
/etc/sysconfig/nfs
または/etc/sysctl.conf
で指定したポートが使用中でないことを確認するには、次のコマンドを入力します。sudo lsof -i tcp:32803 sudo lsof -i udp:32769 sudo lsof -i :892 sudo lsof -i :662
いずれかのポートが使用中の場合は、lsof -iコマンドを使用して未使用のポートを判別し、
/etc/sysconfig/nfs
または/etc/sysctl.conf
の設定を適宜修正します。 -
サーバーを停止して再起動します。
sudo systemctl reboot
指定したポートのいずれかが使用中の場合、NFSは開始に失敗して
/var/log/messages
にエラーがレポートされます。開始できなかったサービスで別のポート番号を使用するように/etc/sysconfig/nfs
または/etc/sysctl.conf
を編集し、nfslock
およびnfs-server
サービスの再起動を試みます。rpcinfo -pコマンドを使用すると、RPCサービスがリスニングしているポートを確認できます。 -
ファイアウォール・サービスを再起動し、NFSv3接続を許可するようにファイアウォールを構成します。
sudo systemctl restart firewalld
sudo firewall-cmd --zone=zone \ --add-port=2049/tcp --add-port=2049/udp \ --add-port=111/tcp --add-port=111/udp \ --add-port=32803/tcp --add-port=32769/udp \ --add-port=892/tcp --add-port=892/udp \ --add-port=662/tcp --add-port=662/udp
sudo firewall-cmd --permanent --zone=zone \ --add-port=2049/tcp --add-port=2049/udp \ --add-port=111/tcp --add-port=111/udp \ --add-port=32803/tcp --add-port=32769/udp \ --add-port=892/tcp --add-port=892/udp \ --add-port=662/tcp --add-port=662/udp
この例に示すポート値は、
/etc/sysconfig/nfs
および/etc/sysctl.conf
のデフォルト・ポート設定がRPCサービスで使用できることを前提としています。また、この構成は、rpc.nfsd
およびrpcbind
がそれぞれポート2049および111でリスニングすることを前提としています。
-
-
showmount -eコマンドを使用して、エクスポートされたファイル・システムのリストを表示します。たとえば:
sudo showmount -e
Export list for host01.mydom.com /var/folder 192.0.2.102 /usr/local/apps * /var/projects/proj1 192.168.1.0/24 mgmtpc
showmount -aは、現行のクライアント、およびマウントされたファイル・システムをリストします。たとえば:
sudo showmount -a
mgmtpc.mydom.com:/var/projects/proj1
ノート:
NFSv4クライアントからshowmountコマンドを使用できるようにするには、
MOUNTD_PORT
を/etc/sysconfig/nfs
で定義し、ファイアウォール・ルールでこのTCPポートへのアクセスを許可する必要があります。
/etc/exports
を編集してNFSサービスを再起動せずに、ディレクトリをエクスポートまたはエクスポート解除する場合は、exportfsコマンドを使用します。次の例では、すべてのクライアントの読取りおよび書込みアクセス権を使用して/var/dev
を使用可能にし、/etc/exports
の既存のエントリを無視します。
sudo exportfs -i -o ro *:/var/dev
詳細は、exportfs(8)
、exports(5)
およびshowmount(8)
の各マニュアル・ページを参照してください。
NFSファイル・システムのマウント
NFSファイル・システムをクライアントにマウントするには:
-
nfs-utils
パッケージをインストールします。sudo yum install nfs-utils
-
showmount -eを使用して、NFSサーバーがエクスポートするファイル・システムを検索します。たとえば:
sudo showmount -e host01.mydom.com
Export list for host01.mydom.com /var/folder 192.0.2.102 /usr/local/apps * /var/projects/proj1 192.168.1.0/24 mgmtpc
-
mountコマンドを使用して、エクスポートされたNFSファイル・システムを使用可能なマウント・ポイントにマウントします。
sudo mount -t nfs -o ro,nosuid host01.mydoc.com:/usr/local/apps /apps
この例では、読取り専用権限を使用して
host01.mydoc.com
によってエクスポートされた/usr/local/apps
を/apps
にマウントします。nosuid
オプションによって、リモート・ユーザーは、setuid
プログラムを実行して上位の権限を取得できません。 -
ブート時にNFSファイル・システムをマウントするようにシステムを構成するには、ファイル・システムのエントリを
/etc/fstab
に追加します。たとえば:host01.mydoc.com:/usr/local/apps /apps nfs ro,nosuid 0 0
詳細は、mount(8)
、nfs(5)
およびshowmount(8)
の各マニュアル・ページを参照してください。
Sambaについて
SambaはServer Message Block (SMB)プロトコルのオープン・ソースの実装で、Oracle Linuxはこれを使用して、サーバーおよびクライアントとしてWindowsシステムと相互運用できます。SambaはOracle LinuxのファイルおよびプリンタをWindowsシステムと共有できるため、Oracle LinuxユーザーはWindowsシステム上のファイルにアクセスできます。SambaはTCP/IPプロトコルを介してNetBIOSを使用するため、NetBIOS APIに依存するコンピュータ・アプリケーションがTCP/IPネットワーク上で動作できます。
Sambaサーバーの構成
Sambaサーバーを構成するには:
-
samba
およびsamba-winbind
パッケージをインストールします。sudo yum install samba samba-winbind
-
/etc/samba/smb.conf
を編集して、必要なサービスをサポートするように各セクションを構成します。たとえば:[global] security = ADS realm = MYDOM.REALM password server = krbsvr.mydom.com load printers = yes printing = cups printcap name = cups [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = yes writable = no printable = yes printer admin = root, @ntadmins, @smbprintadm [homes] comment = User home directories valid users = @smbusers browsable = no writable = yes guest ok = no [apps] comment = Shared /usr/local/apps directory path = /usr/local/apps browsable = yes writable = no guest ok = yes
[global]
セクションには、Sambaサーバーの設定が含まれます。この例では、サーバーは、ネイティブ・モードで実行されているActive Directory (AD)ドメインのメンバーであることを前提にしています。Sambaは、ローカル・サービスにアクセスするクライアントを認証するために、Kerberosサーバーで発行されるチケットを利用します。詳細は、Windowsのワークグループおよびドメインに対するSambaの構成についてを参照してください。
[printers]
セクションでは、印刷サービスのサポートを指定します。path
パラメータは、印刷ジョブをローカルのPrint Spoolerに発行する前に、Windowsクライアントから印刷ジョブを受け取るスプール・ディレクトリの場所を指定します。Sambaは、サーバー上のローカルに構成されたすべてのプリンタを通知します。[homes]
セクションでは、smbusers
グループ内のユーザーごとに個人共有を指定します。browsable
およびwritable
の設定によって、他のユーザーがホーム・ディレクトリを参照するのを防ぐ一方、有効なユーザーには完全なアクセスを許可します。[apps]セクションでは、
apps
という共有を指定して、Windowsユーザーに/usr/local/apps
ディレクトリの参照および読取り専用権限を付与します。 -
システム・ファイアウォールを構成して、ポート139と445への着信TCP接続、およびポート137と138での着信UDPデータグラムを許可します。
sudo firewall-cmd --zone=zone --add-port=139/tcp --add-port=445/tcp --add-port=137-138/udp sudo firewall-cmd --permanent --zone=zone --add-port=139/tcp --add-port=445/tcp --add-port=137-138/udp
Sambaクライアントが接続可能な他のネットワークに対して同様のルールを追加します。
nmdb
デーモンは、UDPポート137でNetBIOS名前サービス・リクエスト、およびUDPポート138でNetBIOSデータグラム・サービス・リクエストにサービスを提供します。smbd
デーモンは、TCPポート139でNetBIOSセッション・サービス・リクエスト、およびTCPポート445でMicrosoftディレクトリ・サービス・リクエストにサービスを提供します。 -
smb
サービスを開始し、システムの再起動後にサービスが開始するように構成します。sudo systemctl start smb sudo systemctl enable smb
/etc/samba/smb.conf
ファイルと参照先の任意のファイルが変更されると、最大で1分の遅延後、smb
サービスはその構成を自動的にリロードします。SIGHUP
シグナルをサービス・デーモンに送信することにより、smb
に構成のリロードを強制できます。
sudo killall -SIGHUP smbd
smb
が構成をリロードしても、確立済の接続には反映されません。smb
サービスを再起動するか、サービスの既存のユーザーが接続解除してから再接続する必要があります。
smb
サービスを再起動するには、次のコマンドを使用します。
sudo systemctl restart smb
詳細は、smb.conf(5)
とsmbd(8)
の各マニュアル・ページ、およびhttps://www.samba.org/samba/docs/を参照してください。
Windowsのワークグループおよびドメインに対するSambaの構成について
エンタープライズ・ネットワーク上のWindowsシステムは、通常、ワークグループまたはドメインに属しています。
通常、ワークグループは少数のコンピュータを接続するネットワークにのみ構成されます。ワークグループ環境とは、システムがサービスに対して相互に依存せず、集中管理が行われないピアツーピア・ネットワークです。ユーザー・アカウント、アクセス制御およびシステム・リソースは、各システムに個別に構成されます。このようなシステムでは、リソースを共有するように構成されている場合のみリソースを共有できます。
Sambaサーバーは、ワークグループ内でスタンドアロン・サーバーとして機能できます。
企業ネットワークでは、ネットワーク化された多数のシステムを集中管理できるようにドメインを構成するのが一般的です。ドメインとは、セキュリティおよびアクセス制御を共有する、信頼できるコンピュータのグループです。ドメイン・コントローラと呼ばれるシステムによって、集中管理およびセキュリティが実行されます。通常、WindowsドメインはActive Directory (AD)を使用するように構成され、ADは、Lightweight Directory Access Protocol (LDAP)を使用してKerberosおよびDNSのバージョンを実装し、認証、ドメイン・リソースへのアクセス制御、および名前サービスを提供します。Windowsドメインの中には、Kerberosを使用せずに認証を実行するWindows NT4セキュリティを使用するドメインもあります。
Sambaサーバーは、ADまたはNT4セキュリティ・ドメインのメンバーであることが可能ですが、ドメイン・コントローラとして動作できません。Sambaサーバーは、ドメイン・コントローラを使用してサーバー自体をドメイン・メンバーとして認証する必要があるため、ドメインのセキュリティ・ルールによって制御されます。ドメイン・コントローラがクライアントを認証し、Sambaサーバーはプリンタおよびネットワーク共有へのアクセスを制御します。
Sambaをスタンドアロン・サーバーとして構成
スタンドアロンのSambaサーバーは、ワークグループのメンバーであることが可能です。次に示す/etc/samba/smb.conf
の[global]
セクションは、共有レベルのセキュリティを使用したスタンドアロン・サーバーの構成方法の例です。
[global] security = share workgroup = workgroup_name netbios name = netbios_name
クライアントは、サーバーに対してパスワードのみを指定し、ユーザー名は指定しません。一般的に、各共有はvalid users
パラメータに関連付けられ、サーバーは、リストされたユーザーについて、/etc/passwd
、/etc/shadow
、NISまたはLDAPに格納されたハッシュ・パスワードに対してパスワードを検証します。ユーザー・レベルのセキュリティを優先させるため、共有レベルのセキュリティの使用はお薦めできません。たとえば:
[global] security = user workgroup = workgroup_name netbios name = netbios_name
ユーザー・セキュリティ・モデルでは、クライアントは有効なユーザー名とパスワードを指定する必要があります。このモデルは、暗号化されたパスワードをサポートしています。サーバーがクライアントのユーザー名とパスワードを正常に検証できた場合、クライアントはパスワードを指定する必要なしに複数の共有をマウントできます。次の例のように、smbpasswdコマンドを使用して、Sambaパスワード・ファイルにユーザーのエントリを作成します。
# smbpasswd -a guest New SMB password: password Retype new SMB password: password Added user guest.
ユーザーは、システム上にユーザーとしてすでに存在している必要があります。ユーザーがサーバーへのログインを許可されると、そのユーザーはsmbpasswdコマンドを使用して自分のパスワードを変更できます。
Windowsユーザーが自分のユーザー名と異なるユーザー名をSambaサーバーで使用する場合は、/etc/samba/smbusers
ファイルに名前の間のマッピングを作成します。たとえば:
root = admin administrator root nobody = guest nobody pcguest smbguest eddie = ejones fiona = fchau
各行の最初のエントリは、Sambaサーバーでのユーザー名です。等号記号(=)の後のエントリは、Windowsユーザー名に相当します。
ノート:
Sambaパスワードを使用するのは、ユーザー・セキュリティ・モデルのみです。
Sambaサーバーがユーザー名とパスワードを認証するために別のサーバーに依存するサーバー・セキュリティ・モデルは、セキュリティおよび相互運用性の問題が多数あるため非推奨です。
SambaをADSドメインのメンバーとして構成
Activity Directory Server (ADS)セキュリティ・モデルでは、SambaはADSレルムのドメイン・メンバー・サーバーとして機能し、クライアントはActivity Directory認証にKerberosチケットを使用します。Kerberosを構成してサーバーをドメインに参加させる必要があり、これによって、ドメイン・コントローラでサーバーのマシン・アカウントが作成されます。
SambaサーバーをActive Directoryドメインに追加するには:
-
/etc/samba/smb.conf
を編集して、ADSを使用するように[global]
セクションを構成します。[global] security = ADS realm = KERBEROS.REALM
異なるサーバーがADサービスおよびKerberos認証をサポートしているときは、パスワード・サーバーの明示的な指定が必要になる場合があります。
password server = kerberos_server.your_domain
-
krb5-server
パッケージをインストールします。# yum install krb5-server
-
Administrator
アカウント用のKerberosチケットをKerberosドメインに作成します。たとえば:# kinit Administrator@MYDOMAIN.COM
このコマンドは、サーバーをADドメインに参加させるのに必要なKerberosチケットを作成します。
-
サーバーをADドメインに参加させます。
# net ads join -S winads.mydom.com -U Administrator%password
この例では、ADサーバーが
winads.mydom.com
で、passwordが管理者アカウントのパスワードです。このコマンドは、Sambaサーバーに対してActive Directoryにマシン・アカウントを作成し、サーバーがドメインに参加できるようにします。
-
smb
サービスを再起動します。# systemctl restart smb
SambaをWindows NT4セキュリティ・ドメインのメンバーとして構成
ノート:
Sambaサーバーがプライマリまたはバックアップ・ドメイン・コントローラとして機能する場合は、ドメイン・セキュリティ・モデルを使用しないでください。かわりに、ユーザー・セキュリティ・モデルを使用するスタンドアロン・サーバーとしてシステムを構成します。Sambaをスタンドアロン・サーバーとして構成を参照してください。
ドメイン・セキュリティ・モデルは、Windows NT4セキュリティを実装するドメインで使用します。Sambaサーバーでは、ドメインにマシン・アカウントが必要です(ドメイン・セキュリティ信頼アカウント)。Sambaでは、プライマリまたはセカンダリ・ドメイン・コントローラのいずれかを使用して、ユーザー名とパスワードを認証します。
SambaサーバーをNT4ドメインに追加するには:
-
プライマリ・ドメイン・コントローラで、サーバー・マネージャを使用してSambaサーバーのマシン・アカウントを追加します。
-
/etc/samba/smb.conf
を編集して、ADSを使用するように[global]
セクションを構成します。[global] security = domain workgroup = DOMAIN netbios name = SERVERNAME
-
サーバーをドメインに参加させます。
# net rpc join -S winpdc.mydom.com -U Administrator%password
この例では、プライマリ・ドメイン・コントローラが
winpdc.mydom.com
で、passwordが管理者アカウントのパスワードです。 -
smb
サービスを再起動します。# systemctl restart smb
-
共有またはプリンタへのアクセスが許可されたユーザーごとに、アカウントを作成します。
# useradd -s /sbin/nologin username # passwd username
この例では、アカウントのログイン・シェルを
/sbin/nologin
に設定して、直接ログインを防いでいます。
WindowsクライアントからのSamba共有へのアクセス
Sambaサーバー上の共有にWindowsからアクセスするには、コンピュータまたはWindowsエクスプローラを開き、次の書式を使用してSambaサーバーのホスト名および共有名を入力します。
\\server_name\share_name
\\server_name
を入力すると、Windowsで、そのサーバーで共有されているディレクトリおよびプリンタが表示されます。また、同じ構文を使用して、ネットワーク・ドライブを共有名にマップできます。
Oracle LinuxクライアントからのSamba共有へのアクセス
ノート:
この項で説明するコマンドを使用するには、yumを使用してsamba-client
およびcifs-utils
パッケージをインストールします。
findsmbコマンドを使用して、Sambaサーバーのサブネットを問い合せることができます。このコマンドによって、IPアドレス、NetBIOS名、ワークグループ、オペレーティング・システム、および検出された各サーバーのバージョンが表示されます。
または、smbtreeコマンドを使用でき、これは、既知のドメインの階層、それらのドメイン内のサーバー、およびサーバー上の共有を表示するテキストベースのSMBネットワーク・ブラウザです。
GNOMEおよびKDEデスクトップには、ネットワーク上でのWindows共有の表示に使用できる、ブラウザベースのファイル・マネージャが用意されています。ファイル・マネージャのロケーション・バーにsmb:
と入力して、ネットワーク共有を参照します。
コマンドラインからWindows共有にアクセスするには、smbclientコマンドを使用します。
smbclient //server_name/share_name [-U username]
ログイン後に、smb:\>
プロンプトにhelpと入力して、使用可能なコマンドのリストを表示します。
Samba共有をマウントするには、次のようにコマンドを使用します。
sudo mount -t cifs //server_name/share_name mountpoint -o credentials=credfile
前のコマンドで、資格証明ファイルにはusername
、password
およびdomain
の設定が含まれます。次に例を示します。
username=eddie password=clydenw domain=MYDOMWKG
domain
への引数には、ドメインまたはワークグループの名前を指定できます。
注意:
資格証明ファイルにはプレーン・テキストのパスワードが含まれるため、chmodを使用して自分のみがパスワードを読み取れるようにします。たとえば:
sudo chmod 400 credfile
SambaサーバーがADドメイン内のドメイン・メンバー・サーバーで、現行のログイン・セッションがドメイン内のKerberosサーバーによって認証された場合は、資格証明ファイルのかわりにsec=krb5オプションを指定して、既存のセッション資格証明を使用できます。
sudo mount -t cifs //server_name/share_name mountpoint -o sec=krb5
詳細は、findsmb(1)
、mount.cifs(8)
、smbclient(1)
およびsmbtree(1)
の各マニュアル・ページを参照してください。