GNU/Linux >> Linux の 問題 >  >> Ubuntu

ファイル共有のためにUbuntuにSambaサーバーをインストールして構成する

このチュートリアルでは、ローカルネットワーク上でファイルを共有するために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.confnanoのようなコマンドラインテキストエディタを使用してターミナルで編集できます 。

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

Ubuntu
  1. Ubuntu20.04にDHCPサーバーをインストールして構成する方法

  2. UbuntuにRedisサーバーをインストールして構成する方法

  3. Ubuntu linuxにsambaをインストールして設定する方法は?

  1. Ubuntu20.04にNFSサーバーをインストールして構成する方法

  2. Ubuntu20.04にVNCをインストールして構成する方法

  3. Ubuntu18.04にVNCをインストールして構成する方法

  1. Ubuntu18.04にSambaをインストールして設定する方法

  2. Ubuntu18.04にSquidプロキシをインストールして構成する方法

  3. Ubuntu18.04にNFSサーバーをインストールして構成する方法