4.4. 設定例

SELinux でどのように Samba サーバーを補完するのか、 Samba サーバーの全機能をどのように管理するのかなど、 実践的な例を以下に示します。

4.4.1. 作成したディレクトリを共有する

新規のディレクトリを作成し、 そのディレクトリを Samba で共有します。
  1. rpm -q samba samba-common samba-client を実行して、 sambasamba-commonsamba-client の各パッケージがインストールされているか確認します。 いずれかのパッケージがインストールされていない場合は、 root ユーザーで yum install package-name を実行してインストールを行ないます。
  2. root ユーザーで mkdir /myshare を実行して Samba でファイルを共有するためのディレクトリを最上位に新規に作成します。
  3. root ユーザーで touch /myshare/file1 を実行して空のファイルを作成します。 このファイルは後で Samba 共有が正しくマウントされたか確認する際に使用します。
  4. SELinux では、/etc/samba/smb.conf および Linux パーミッションが設定されていれば、samba_share_t タイプのラベルが付いたファイルへの Samba による読み取りおよび書き込みは許可されます。root ユーザーで次のコマンドを実行し、ファイルコンテキスト設定にラベルの変更を追加します。
    semanage fcontext -a -t samba_share_t "/myshare(/.*)?"
    
  5. root ユーザーで restorecon -R -v /myshare を実行しラベルの変更を適用します。
    # restorecon -R -v /myshare
    restorecon reset /myshare context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
    restorecon reset /myshare/file1 context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
    
  6. root ユーザーで /etc/samba/smb.conf を編集します。 Samba で /myshare/ ディレクトリを共有するため、 以下をこのファイルの末尾に追加します。
    [myshare]
    comment = My share
    path = /myshare
    public = yes
    writeable = no
    
  7. Samba ファイルシステムをマウントするには Samba アカウントが必要になります。 root ユーザーで smbpasswd -a username を実行し Samba アカウントを作成します。 username は既存の Linux ユーザーにします。 たとえば、 smbpasswd -a testuser にすると、 Linux testuser ユーザーの Samba アカウントが作成されます。
    # smbpasswd -a testuser
    New SMB password: (パスワードを入力)
    Retype new SMB password: (もう一度同じパスワードを入力)
    Added user testuser.
    
    smbpasswd -a username を実行する際、 システム上に存在していない Linux アカウントをのユーザー名を username に入れると、 「Cannot locate Unix account for 'username'!」エラーが発生する原因になります。
  8. root ユーザーで service smb start を実行して Samba サービスを起動します。
    service smb start
    Starting SMB services:                                     [  OK  ]
    
  9. smbclient -U username -L localhost を実行し、 使用できる共有を表示させます。 username はステップ 7 で追加した Samba アカウントにします。 パスワード入力を求められたら、 ステップ 7 で Samba アカウントに割り当てたパスワードを入力します (バージョン番号は使用しているバージョンによって異なります)。
    $ smbclient -U username -L localhost
    Enter username's password:
    Domain=[HOSTNAME] OS=[Unix] Server=[Samba 3.4.0-0.41.el6]
    
    Sharename       Type      Comment
    ---------       ----      -------
    myshare         Disk      My share
    IPC$            IPC       IPC Service (Samba Server Version 3.4.0-0.41.el6)
    username        Disk      Home Directories
    Domain=[HOSTNAME] OS=[Unix] Server=[Samba 3.4.0-0.41.el6]
    
    Server               Comment
    ---------            -------
    
    Workgroup            Master
    ---------            -------
    
  10. root ユーザーで mkdir /test/ を実行し新規ディレクトリを作成します。 このディレクトリは Samba 共有の myshare をマウントする際に使用します。
  11. root で次のコマンドを実行して、Samba 共有の myshare/test/ にマウントします。 username はステップ 7 のユーザー名にしてください。
    mount //localhost/myshare /test/ -o user=username
    ステップ 7 で設定した username のパスワードを入力します。
  12. ls /test/ を実行して ステップ 3 で作成した file1 を表示させます。
    $ ls /test/
    file1