このチュートリアルでは、ローカルネットワーク上でファイルを共有するためにUbuntuにSambaサーバーをインストールして構成する方法を学習します。 Sambaは、UnixおよびLinux用の無料のオープンソースSMB / CIFSプロトコル実装であり、ローカルエリアネットワーク内のUnix / Linux、Windows、およびmacOSマシン間でファイルと印刷を共有できます。
Sambaは通常、Linuxにインストールされて実行されます。これは、異なるが関連する目的を果たすいくつかのプログラムで構成されており、そのうちの最も重要な2つは次のとおりです。
- smbd :SMB / CIFSサービス(ファイル共有と印刷)を提供し、Windowsドメインコントローラーとしても機能します。
- nmbd :このデーモンはNetBIOSネームサービスを提供し、ネームサーバー要求をリッスンします。また、Sambaサーバーをネットワーク上の他のコンピューターで検出することもできます。
UbuntuにSambaサーバーをインストールする方法
SambaはほとんどのLinuxディストリビューションに含まれています。 UbuntuにSambaをインストールするには、ターミナルで次のコマンドを実行するだけです。
sudo apt install samba samba-common-bin
利用可能な最新の安定バージョンは、2019年3月3日にリリースされた4.12.0です。Sambaのバージョンを確認するには、
を実行してください。smbd --version
サンプル出力:
Version 4.7.6-Ubuntu
Sambaサービスが実行されているかどうかを確認するには、次のコマンドを発行します。
systemctl status smbd nmbd
これら2つのサービスを開始するには、次のコマンドを発行します。
sudo systemctl start smbd nmbd
開始したら、smbd
TCPポート139および445でリッスンします。nmbd
UDPポート137および138でリッスンします。
- TCP 139:ファイルとプリンターの共有およびその他の操作に使用されます。
- TCP 445:NetBIOSのないCIFSポート。
- UDP 137:NetBIOSネットワークブラウジングに使用されます。
- UDP 138:NetBIOSネームサービスに使用されます。
UbuntuでUFWファイアウォールを有効にしている場合は、次のコマンドを使用してファイアウォールで上記のポートを開く必要があります。
sudo ufw allow samba
プライベートSamba共有を作成する
このセクションでは、アクセスするためにクライアントがユーザー名とパスワードを入力する必要があるプライベートSamba共有を作成する方法を説明します。メインのSamba構成ファイルは次の場所にあります:/etc/samba/smb.conf
。 nano
のようなコマンドラインテキストエディタを使用してターミナルで編集できます 。
sudo nano /etc/samba/smb.conf
[global]
内 セクションで、workgroup
の値を確認してください Windowsコンピュータのワークグループ設定と同じです。
workgroup = WORKGROUP
Control Panel
に移動すると、Windowsコンピューターの設定を確認できます。>System and Security
>System
。
次に、ファイルの一番下までスクロールします。 (nanoテキストエディタでは、CTRL+W
を押すことでそれを実現できます 次にCTRL+V
。 )以下のような新しいセクションを追加します。
[Private] comment = needs username and password to access path = /srv/samba/private/ browseable = yes guest ok = no writable = yes valid users = @samba
説明:
Private
Windowsネットワークに表示されるフォルダ名です。- コメントは共有フォルダの説明です。
- pathパラメーターは、共有フォルダーへのパスを指定します。
/srv/samba/private/
を使用しています 例として。ホームディレクトリ内のフォルダを使用することもできます。 -
browseable = yes
:ネットワーク内の他のコンピューターがSambaサーバーとSamba共有を表示できるようにします。 noに設定した場合、ユーザーはSambaサーバーの名前を知ってから、ファイルマネージャーに手動でパスを入力して共有フォルダーにアクセスする必要があります。 -
guest ok = no
:ゲストアクセスを無効にします。つまり、共有フォルダにアクセスするには、クライアントコンピュータでユーザー名とパスワードを入力する必要があります。 -
writable = yes
:クライアントに読み取りと書き込みの両方のアクセス許可を付与します。 valid users = @samba
:SambaグループのユーザーのみがこのSamba共有にアクセスできます。
ファイルを保存して閉じます。 (nanoテキストエディタでファイルを保存するには、Ctrl+O
を押します。 、次にEnterキーを押して、書き込むファイル名を確認します。ファイルを閉じるには、Ctrl+X
を押します 。)次に、Sambaユーザーを作成する必要があります。まず、次のコマンドを使用して標準のLinuxユーザーアカウントを作成する必要があります。 username
を置き換えます ご希望のユーザー名で。
sudo adduser username
Unixパスワードを設定するように求められます。その後、次のコマンドを使用して、新しいユーザーに個別のSambaパスワードを設定する必要もあります。
sudo smbpasswd -a username
sambaグループを作成します。
sudo groupadd samba
そして、このユーザーをsambaグループに追加します。
sudo gpasswd -a username samba
プライベート共有フォルダを作成します。
sudo mkdir -p /srv/samba/private/
sambaグループには、共有フォルダーに対する読み取り、書き込み、および実行のアクセス許可が必要です。次のコマンドを実行して、これらのアクセス許可を付与できます。 (システムにsetfacl
がない場合 コマンドを実行するには、acl
をインストールする必要があります sudo apt install acl
を含むパッケージ 。)
sudo setfacl -R -m "g:samba:rwx" /srv/samba/private/
次に、次のコマンドを実行して、構文エラーがあるかどうかを確認します。
testparm
あとはsmbd
を再起動するだけです。 およびnmbd
デーモン。
sudo systemctl restart smbd nmbd
認証なしでSambaパブリックシェアを作成する方法
ユーザー名とパスワードを必要とせずに公開共有を作成するには、次の条件を満たす必要があります。
-
security = user
を設定します Samba構成ファイルのグローバルセクションにあります。security = share
を使用してパブリック共有を作成できますが モードですが、このセキュリティモードは非推奨です。share
は避けることを強くお勧めします モード。 -
map to guest = bad user
を設定します Samba構成ファイルのグローバルセクションにあります。これにより、smbd
が発生します ゲストアカウントを使用して、Sambaサーバーにアカウントを登録していないクライアントを認証します。ゲストアカウントであるため、Sambaクライアントはパスワードを入力する必要はありません。 -
guest ok = yes
を設定します 共有定義でゲストアクセスを許可します。 - パブリックフォルダの読み取り、書き込み、および実行のアクセス許可を
nobody
に付与します アカウント。デフォルトのゲストアカウントです。
実際のところ、Sambaはデフォルトでこれらの2つの設定を使用するため、最初の2つの条件はすでに満たされています。
公開共有を作成するためのステップバイステップガイドは次のとおりです。まず、Samba構成ファイルを開いて編集します。
sudo nano /etc/samba/smb.conf
[global]
内 セクションで、workgroup
の値を確認してください Windowsコンピュータのワークグループ設定と同じです。
workgroup = WORKGROUP
Control Panel
に移動すると、Windowsコンピューターの設定を確認できます。>System and Security
>System
。
次に、ファイルの一番下までスクロールして、次の行を貼り付けます。
[public] comment = public share, no need to enter username and password path = /srv/samba/public/ browseable = yes writable = yes guest ok = yes
ファイルを保存して閉じます。次に、/srv/samba/public/
を作成します フォルダ。
sudo mkdir -p /srv/samba/public
次に、nobody
を確認します アカウントは、次のコマンドを実行することにより、パブリックフォルダーに対する読み取り、書き込み、および実行のアクセス許可を持っています。 (システムにsetfacl
がない場合 コマンドを実行するには、acl
をインストールする必要があります sudo apt install acl
を含むパッケージ 。)
sudo setfacl -R -m "u:nobody:rwx" /srv/samba/public/
smbdとnmbdを再起動します。
sudo systemctl restart smbd nmbd
WindowsからSamba共有フォルダにアクセスする
同じネットワーク内にあるWindowsコンピューターで、ファイルエクスプローラーを開き、[Network
]をクリックします。 左側のペイン。次のメッセージが表示された場合は、メッセージをクリックして、ネットワーク検出とファイル共有をオンにする必要があります。
File sharing is turned off. Some network computers and devices might not be visible.
次に、\\
と入力します \\192.168.0.102
のように、ファイルエクスプローラーのアドレスバーにSambaサーバーのIPアドレスが続きます。 。 Sambaサーバー上の共有リソースのリストが表示されます。
次に、共有フォルダをダブルクリックします。プライベート共有にアクセスするには、sambaのユーザー名とパスワードを入力する必要があります。パブリックシェアにアクセスするためにそうする必要はありません。
接続すると、Samba共有フォルダー内のファイルの読み取り、書き込み、および削除を行うことができます。
接続エラー
次のエラーが発生した場合:
You do not have permission to access \\hostname\share-name. Contact your network administrator to request access.
コマンドプロンプトからSamba共有に接続してみることができます。コマンドプロンプトを開き、次のコマンドを実行して現在のSambaセッションを閉じます。
net use \\samba-server-ip\share-name /delete
次に、次のコマンドを使用してSamba共有に接続します。
net use \\samba-server-ip\share-name /user:samba-username password
上記のコマンドが正常に完了すると、ファイルエクスプローラーの[ネットワーク]タブに移動し、Samba共有にアクセスできるようになります。
Windowsでのドライブマッピング
Windowsオペレーティングシステムの機能の1つは、ドライブ文字(S :など)をリモートディレクトリにマップする機能です。ドライブ文字をマップするにはS:
Samba共有に移動するには、Samba共有フォルダを右クリックして、ネットワークドライブのマッピングを選択します。 。次に、ドライブ文字を選択して[完了]をクリックします。
ドライブマッピングが確立されると、アプリケーションはドライブ文字S:
を介してSamba共有内のファイルにアクセスできます。 。また、このSamba共有は、Windowsコンピューターにログインすると自動的にマウントされます。
Linux上のNautilusファイルマネージャーでSamba共有フォルダーにアクセスする
Nautilusファイルマネージャーを使用している場合は、[Other Locations
]をクリックします 左側のペイン。下部に、サーバーに接続するオプションが表示されます。 。 Samba共有にアクセスするには、smb://
と入力します 続いてSambaサーバーのIPアドレスを入力し、Enterキーを押します。例:
- smb://192.168.0.102
Sambaサーバー上の共有リソースのリストが表示されます。
プライベート共有フォルダをクリックした場合は、Sambaのユーザー名とパスワードを入力する必要があります。パブリック共有フォルダをクリックした場合は、匿名で接続することを選択します。
次のエラーメッセージが表示された場合は、
failed to retrieve share list from server
以下で説明するコマンドラインからSamba共有をマウントすることで、このエラーの修正を試みることができます。
LinuxのコマンドラインからSamba共有を自動的にマウントする
注 :Samba share
を自動的にマウントする クライアントで行われます。 SambaクライアントがLinuxを実行している場合、これらのコマンドはSambaクライアントで実行する必要があります。 Sambaサーバー自体では実行しないでください。
起動時にSamba共有を自動的にマウントする必要がある場合は、コマンドラインを使用してマウントし、/etc/fstab
にエントリを追加できます。 ファイル。これを行うには、cifs-utils
をインストールする必要があります パッケージ。
CentOS / RHEL
sudo dnf install cifs-utils
Debian / Ubuntu
sudo apt install cifs-utils
次に、Samba共有のマウントポイントを作成します。
sudo mkdir /mnt/samba-private
これで、次のコマンドを使用してプライベート共有フォルダをマウントできます。
sudo mount -t cifs -o username=your_samba_username //192.168.0.102/private /mnt/samba-private/
Sambaパスワードの入力を求められます。その後、/mnt/samba-private/
にマウントされます ディレクトリ。
Samba共有を自動的にマウントするには、/etc/fstab
を編集します ファイル。
sudo nano /etc/fstab
ファイルに次の行を追加します。
//192.168.0.102/private /mnt/samba-private cifs x-systemd.automount,_netdev,credentials=/etc/samba-credential.conf,uid=1000,gid=1000,x-gvfs-show 0 0
場所:
- //192.168.0.102/プライベート :SambaサーバーのIPアドレスと共有名。
- / mnt / samba-private :Samba共有のマウントポイント。
- cifs :ファイルシステムタイプ
- x-systemd.automount :このオプションは、ファイルシステムの自動マウントユニットを作成するようにsystemdに指示します。これを使用するのは、ネットワークにアクセスした後にのみリモートファイルシステムがマウントされるようにするためです。
- _netdev :これは、マウントにネットワークが必要であることを指定します。
- クレデンシャル= :Linuxは、
/etc/samba-credential.conf
でクレデンシャルを探す必要があります ファイル。 - uid =1000、gid =1000 :デフォルトでは、マウントされたファイルシステムはrootユーザーが所有します。 uidを使用します およびgid ファイルシステムの所有権を変更します。通常、独自の uidを使用します およびgid 、デフォルトでは両方とも1000です。
- x-gvfs-show :GNOMEデスクトップ環境またはその派生物を使用している場合は、このオプションを使用して、マウントされたファイルシステムをファイルマネージャーに表示できます。
ファイルを保存して閉じます。次に、資格情報ファイルを作成します。
sudo nano /etc/samba-credential.conf
ファイルに次の行を追加します。
username=your_samba_username password=samba_password domain=WORKGROUP
ファイルを保存して閉じます。 rootユーザーのみがこのファイルを読み取ることができることを確認してください。
sudo chmod 600 /etc/samba-credential.conf
ここでLinuxコンピュータを再起動すると、Samba共有が自動的にマウントされます。次のコマンドを実行して、再起動せずにSamba共有をマウントすることもできます。
sudo mount -a
パーミッション拒否エラーが表示され、sudo dmesg
を実行すると、次の行が見つかります。 コマンド、
VFS: cifs_mount failed w/return code = -13
/etc/samba-credential
にタイプミスがあることが原因である可能性があります ファイル。
Samba共有に書き込めませんか?
上記のCIFSマウントを使用すると、Samba共有に書き込むことができます。ファイルの作成中に次のエラーが表示された場合:
Read-only file system
writable = yes
を設定していることを確認してください Samba構成ファイル内。場合によっては、Samba共有フォルダーが外付けハードドライブ上にあることがあります。その場合は、外付けハードドライブを読み取り/書き込みモードでSambaサーバーにマウントしてください。たとえば、btrfs
をマウントしました / etc/fstabに次の行があるハードドライブ。
LABEL=5TB /mnt/5TB btrfs defaults 0 0
defaults
であることが判明しました オプションは書き込み操作を許可しません。書き込み可能にするには、rw
を追加します オプション。
LABEL=5TB /mnt/5TB btrfs defaults,rw 0 0
次に、ハードドライブをアンマウントします。独自のマウントポイントを使用する必要があります。
sudo umount /mnt/5TB
そして、もう一度マウントします。
sudo mount -a
トラブルシューティングのヒント
Sambaサーバーが期待どおりに機能していない場合は、/var/log/samba/
の下にあるログファイルを確認できます。 ディレクトリ。 [global]
に次の行を追加できます /etc/samba/smb.conf
のセクション より多くの情報を記録したい場合は、ファイルを使用してログレベルを上げます。
log level = 2