Memasang berbagi file SMB Azure di klien Linux
Berbagi file Azure dapat dipasang dalam distribusi Linux menggunakan klien kernel SMB.
Berlaku untuk
Jenis berbagi File | SMB | NFS |
---|---|---|
Berbagi file standar (GPv2), LRS/ZRS |
![]() |
![]() |
Berbagi file standar (GPv2), GRS/GZRS |
![]() |
![]() |
Berbagi file premium (FileStorage), LRS/ZRS |
![]() |
![]() |
Protokol
Cara yang direkomendasikan untuk memasang berbagi file Azure di Linux menggunakan SMB 3.1.1. Secara default, Azure Files memerlukan enkripsi saat transit, yang didukung oleh SMB 3.0+. Azure Files juga mendukung SMB 2.1, yang tidak mendukung enkripsi saat transit, tetapi Anda tidak dapat memasang berbagi file Azure dengan SMB 2.1 dari wilayah Azure lain atau lokal karena alasan keamanan. Kecuali aplikasi Anda secara khusus memerlukan SMB 2.1, gunakan SMB 3.1.1. Dukungan SMB 2.1 ditambahkan ke kernel Linux versi 3.7, jadi jika Anda menggunakan versi kernel Linux setelah 3.7, itu harus mendukung SMB 2.1.
Distribusi | SMB 3.1.1 (Disarankan) | SMB: 3.0 |
---|---|---|
Versi kernel Linux |
|
|
Ubuntu | Enkripsi AES-128-GCM: 18.04.5 LTS+ | Enkripsi AES-128-CCM: 16.04.4 LTS+ |
Red Hat Enterprise Linux (RHEL) |
|
7.5+ |
Debian | Dasar: 10+ | Enkripsi AES-128-CCM: 10+ |
SUSE Linux Enterprise Server | Enkripsi AES-128-GCM: 15 SP2+ | Enkripsi AES-128-CCM: 12 SP2+ |
Jika distribusi Linux Anda tidak tercantum dalam tabel di atas, Anda dapat memeriksa versi kernel Linux dengan perintah uname
:
uname -r
Prasyarat
- Pastikan paket cifs-utils diinstal. Instal versi terbaru paket cifs-utils menggunakan manajer paket pada distribusi Linux pilihan Anda.
Di Ubuntu dan Debian, gunakan apt
manajer paket:
sudo apt update
sudo apt install cifs-utils
Pada distribusi lain, gunakan manajer paket yang sesuai atau kompilasi dari sumber.
Versi terbaru dari Azure Command Line Interface (CLI). Untuk informasi selengkapnya tentang cara memasang Azure CLI, lihat Memasang Azure CLI dan memilih sistem operasi Anda. Jika Anda lebih suka menggunakan modul Azure PowerShell di PowerShell 6+, Anda dapat; namun, instruksi dalam artikel ini adalah untuk Azure CLI.
Pastikan port 445 terbuka: SMB berkomunikasi melalui port TCP 445 - pastikan firewall atau ISP Anda tidak memblokir port TCP 445 dari komputer klien. Ganti lalu
<your-storage-account>
jalankan<your-resource-group>
skrip berikut:RESOURCE_GROUP_NAME="<your-resource-group>" STORAGE_ACCOUNT_NAME="<your-storage-account>" # This command assumes you have logged in with az login HTTP_ENDPOINT=$(az storage account show \ --resource-group $RESOURCE_GROUP_NAME \ --name $STORAGE_ACCOUNT_NAME \ --query "primaryEndpoints.file" --output tsv | tr -d '"') SMBPATH=$(echo $HTTP_ENDPOINT | cut -c7-${#HTTP_ENDPOINT}) FILE_HOST=$(echo $SMBPATH | tr -d "/") nc -zvw3 $FILE_HOST 445
Jika koneksi berhasil, Anda akan melihat sesuatu yang mirip dengan output berikut:
Connection to <your-storage-account> 445 port [tcp/microsoft-ds] succeeded!
Jika Anda tidak dapat membuka port 445 di jaringan perusahaan Anda atau diblokir untuk melakukannya oleh ISP, Anda dapat menggunakan koneksi VPN atau ExpressRoute untuk mengatasi port 445. Untuk informasi selengkapnya, lihat Pertimbangan jaringan untuk akses berbagi file Azure langsung.
Izin
Semua skrip pemasangan dalam artikel ini akan memasang berbagi file menggunakan izin file dan folder Linux 0755 default. Ini berarti membaca, menulis, dan menjalankan untuk pemilik file/direktori, membaca dan menjalankan untuk pengguna di grup pemilik, dan membaca dan menjalankan untuk pengguna lain. Bergantung pada kebijakan keamanan organisasi, Anda mungkin ingin mengatur izin alternatif uid
/gid
atau dir_mode
dan file_mode
di opsi pemasangan.
Untuk informasi selengkapnya tentang cara mengatur izin, lihat Notasi simbolis Unix. Lihat opsi pemasangan untuk daftar opsi pemasangan.
Pasang berbagi file Azure sesuai permintaan pemasangan
Saat Anda memasang berbagi file di OS Linux, berbagi file jarak jauh Anda direpresentasikan sebagai folder di sistem file lokal Anda. Anda dapat memasang berbagi file ke mana saja pada sistem Anda. Contoh berikut dipasang pada jalur /media
. Anda dapat mengubah jalur ini ke jalur pilihan yang Anda inginkan dengan memodifikasi variabel $MNT_ROOT
.
Ganti <resource-group-name>
, <storage-account-name>
, dan <file-share-name>
dengan informasi yang sesuai untuk lingkungan Anda:
RESOURCE_GROUP_NAME="<resource-group-name>"
STORAGE_ACCOUNT_NAME="<storage-account-name>"
FILE_SHARE_NAME="<file-share-name>"
MNT_ROOT="/media"
MNT_PATH="$MNT_ROOT/$STORAGE_ACCOUNT_NAME/$FILE_SHARE_NAME"
sudo mkdir -p $MNT_PATH
Selanjutnya, inisialisasi file kredensial dengan menjalankan skrip berikut.
# Create a folder to store the credentials for this storage account and
# any other that you might set up.
CREDENTIAL_ROOT="/etc/smbcredentials"
sudo mkdir -p "/etc/smbcredentials"
# Get the storage account key for the indicated storage account.
# You must be logged in with az login and your user identity must have
# permissions to list the storage account keys for this command to work.
STORAGE_ACCOUNT_KEY=$(az storage account keys list \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--query "[0].value" --output tsv | tr -d '"')
# Create the credential file for this individual storage account
SMB_CREDENTIAL_FILE="$CREDENTIAL_ROOT/$STORAGE_ACCOUNT_NAME.cred"
if [ ! -f $SMB_CREDENTIAL_FILE ]; then
echo "username=$STORAGE_ACCOUNT_NAME" | sudo tee $SMB_CREDENTIAL_FILE > /dev/null
echo "password=$STORAGE_ACCOUNT_KEY" | sudo tee -a $SMB_CREDENTIAL_FILE > /dev/null
else
echo "The credential file $SMB_CREDENTIAL_FILE already exists, and was not modified."
fi
# Change permissions on the credential file so only root can read or modify the password file.
sudo chmod 600 $SMB_CREDENTIAL_FILE
Sekarang Anda dapat memasang berbagi file dengan mount
perintah menggunakan file kredensial. Dalam contoh berikut, $SMB_PATH
perintah diisi menggunakan nama domain yang sepenuhnya memenuhi syarat untuk titik akhir file akun penyimpanan. Lihat opsi pemasangan untuk daftar opsi pemasangan SMB.
Catatan
Mulai dari kernel Linux versi 5.0, SMB 3.1.1 adalah protokol negosiasi default. Jika Anda menggunakan versi kernel Linux yang lebih lama dari 5.0, tentukan vers=3.1.1
dalam daftar opsi pemasangan.
# This command assumes you have logged in with az login
HTTP_ENDPOINT=$(az storage account show \
--resource-group $RESOURCE_GROUP_NAME \
--name $STORAGE_ACCOUNT_NAME \
--query "primaryEndpoints.file" --output tsv | tr -d '"')
SMB_PATH=$(echo $HTTP_ENDPOINT | cut -c7-${#HTTP_ENDPOINT})$FILE_SHARE_NAME
STORAGE_ACCOUNT_KEY=$(az storage account keys list \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--query "[0].value" --output tsv | tr -d '"')
sudo mount -t cifs $SMB_PATH $MNT_PATH -o credentials=$SMB_CREDENTIAL_FILE,serverino,nosharesock,actimeo=30,mfsymlinks
Anda juga dapat memasang berbagi file Azure yang sama ke beberapa titik pemasangan jika diinginkan.
Setelah selesai menggunakan berbagi file Azure, gunakan sudo umount $mntPath
untuk melepas berbagi.
Memasang berbagi file secara otomatis
Saat Anda memasang berbagi file di OS Linux, berbagi file jarak jauh Anda direpresentasikan sebagai folder di sistem file lokal Anda. Anda dapat memasang berbagi file ke mana saja pada sistem Anda. Contoh berikut dipasang pada jalur /media
. Anda dapat mengubah jalur ini ke jalur pilihan yang Anda inginkan dengan memodifikasi variabel $MNT_ROOT
.
MNT_ROOT="/media"
sudo mkdir -p $MNT_ROOT
Untuk memasang berbagi file Azure di Linux, gunakan nama akun penyimpanan sebagai nama pengguna berbagi file, dan kunci akun penyimpanan sebagai sandi. Karena kredensial akun penyimpanan mungkin berubah dari waktu ke waktu, Anda harus menyimpan kredensial untuk akun penyimpanan secara terpisah dari konfigurasi pemasangan.
Contoh berikut menunjukkan cara membuat file untuk menyimpan info masuk. Jangan lupa untuk mengganti <resource-group-name>
dan <storage-account-name>
dengan informasi yang sesuai untuk lingkungan Anda.
RESOURCE_GROUP_NAME="<resource-group-name>"
STORAGE_ACCOUNT_NAME="<storage-account-name>"
# Create a folder to store the credentials for this storage account and
# any other that you might set up.
CREDENTIAL_ROOT="/etc/smbcredentials"
sudo mkdir -p "/etc/smbcredentials"
# Get the storage account key for the indicated storage account.
# You must be logged in with az login and your user identity must have
# permissions to list the storage account keys for this command to work.
STORAGE_ACCOUNT_KEY=$(az storage account keys list \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $STORAGE_ACCOUNT_NAME \
--query "[0].value" --output tsv | tr -d '"')
# Create the credential file for this individual storage account
SMB_CREDENTIAL_FILE="$CREDENTIAL_ROOT/$STORAGE_ACCOUNT_NAME.cred"
if [ ! -f $SMB_CREDENTIAL_FILE ]; then
echo "username=$STORAGE_ACCOUNT_NAME" | sudo tee $SMB_CREDENTIAL_FILE > /dev/null
echo "password=$STORAGE_ACCOUNT_KEY" | sudo tee -a $SMB_CREDENTIAL_FILE > /dev/null
else
echo "The credential file $SMB_CREDENTIAL_FILE already exists, and was not modified."
fi
# Change permissions on the credential file so only root can read or modify the password file.
sudo chmod 600 $SMB_CREDENTIAL_FILE
Untuk memasang berbagi file secara otomatis, Anda memiliki pilihan antara menggunakan pemasangan statis melalui utilitas /etc/fstab
atau menggunakan pemasangan dinamis melalui utilitas autofs
.
Pemasangan statis dengan /etc/fstab
Buat folder untuk akun penyimpanan/berbagi file di bawah folder pemasangan Anda dengan menggunakan lingkungan sebelumnya. Ganti <file-share-name>
dengan nama yang sesuai dari berbagi file Azure Anda.
FILE_SHARE_NAME="<file-share-name>"
MNT_PATH="$MNT_ROOT/$STORAGE_ACCOUNT_NAME/$FILE_SHARE_NAME"
sudo mkdir -p $MNT_PATH
Terakhir, buat rekaman dalam file /etc/fstab
untuk berbagi file Azure Anda. Dalam contoh di bawah ini, file default Linux 0755 dan izin folder digunakan, yang berarti membaca, menulis, dan menjalankan untuk pemilik (berdasarkan file/direktori pemilik Linux), membaca dan menjalankan untuk pengguna dalam grup pemilik, serta membaca dan menjalankan untuk orang lain di sistem. Anda mungkin ingin mengatur izin alternatif uid
dan gid
atau dir_mode
dan pada file_mode
pemasangan sesuai keinginan. Untuk informasi selengkapnya tentang cara mengatur izin, lihat notasi numerik UNIX. Lihat opsi pemasangan untuk daftar opsi pemasangan SMB.
Tip
Jika Anda ingin kontainer Docker yang menjalankan aplikasi .NET Core dapat menulis ke berbagi file Azure, sertakan nobrl dalam opsi pemasangan SMB untuk menghindari pengiriman permintaan kunci rentang byte ke server.
HTTP_ENDPOINT=$(az storage account show \
--resource-group $RESOURCE_GROUP_NAME \
--name $STORAGE_ACCOUNT_NAME \
--query "primaryEndpoints.file" --output tsv | tr -d '"')
SMB_PATH=$(echo $HTTP_ENDPOINT | cut -c7-${#HTTP_ENDPOINT})$FILE_SHARE_NAME
if [ -z "$(grep $SMB_PATH\ $MNT_PATH /etc/fstab)" ]; then
echo "$SMB_PATH $MNT_PATH cifs _netdev,nofail,credentials=$SMB_CREDENTIAL_FILE,serverino,nosharesock,actimeo=30,mfsymlinks" | sudo tee -a /etc/fstab > /dev/null
else
echo "/etc/fstab was not modified to avoid conflicting entries as this Azure file share was already present. You might want to double check /etc/fstab to ensure the configuration is as desired."
fi
sudo mount -a
Catatan
Mulai dari kernel Linux versi 5.0, SMB 3.1.1 adalah protokol negosiasi default. Anda dapat menentukan versi protokol alternatif menggunakan opsi pemasangan vers
(versi protokol adalah 3.1.1
, 3.0
, dan 2.1
).
Pemasangan dinamis dengan autof
Untuk memasang berbagi file secara dinamis dengan utilitas autofs
, instal berbagi file menggunakan manajer paket pada distribusi Linux pilihan Anda.
Pada distribusi Ubuntu dan Debian, gunakan apt
manajer paket:
sudo apt update
sudo apt install autofs
Selanjutnya, update file konfigurasi autofs
. Lihat opsi pemasangan untuk daftar opsi pemasangan SMB.
FILE_SHARE_NAME="<file-share-name>"
HTTP_ENDPOINT=$(az storage account show \
--resource-group $RESOURCE_GROUP_NAME \
--name $STORAGE_ACCOUNT_NAME \
--query "primaryEndpoints.file" --output tsv | tr -d '"')
SMB_PATH=$(echo $HTTP_ENDPOINT | cut -c7-$(expr length $HTTP_ENDPOINT))$FILE_SHARE_NAME
echo "$FILE_SHARE_NAME -fstype=cifs,credentials=$SMB_CREDENTIAL_FILE,serverino,nosharesock,actimeo=30,mfsymlinks :$SMB_PATH" > /etc/auto.fileshares
echo "/fileshares /etc/auto.fileshares --timeout=60" > /etc/auto.master
Langkah terakhir adalah memulai ulang layanan autofs
.
sudo systemctl restart autofs
Opsi pemasangan
Anda dapat menggunakan opsi pemasangan berikut saat memasang berbagi file SMB Azure di Linux.
Opsi pemasangan | Nilai yang disarankan | Deskripsi |
---|---|---|
username= |
Nama akun penyimpanan | Wajib untuk autentikasi NTLMv2. |
password= |
Kunci utama akun penyimpanan | Wajib untuk autentikasi NTLMv2. |
password2= |
Kunci sekunder akun penyimpanan | Direkomendasikan jika rotasi kunci tanpa waktu henti diinginkan. |
mfsymlinks |
n/a | Disarankan. Memaksa pemasangan untuk mendukung tautan simbolis, memungkinkan aplikasi seperti git untuk mengkloning repos dengan symlink. |
actimeo= |
30-60 | Disarankan. Waktu (dalam detik) klien CIFS menyimpan atribut file atau direktori sebelum meminta informasi atribut dari server. Menggunakan nilai yang lebih rendah dari 30 detik dapat menyebabkan penurunan performa karena cache atribut untuk file dan direktori kedaluwarsa terlalu cepat. Sebaiknya atur actimeo antara 30 dan 60 detik. |
nosharesock |
n/a | Opsional. Memaksa klien untuk selalu membuat koneksi baru ke server meskipun memiliki koneksi yang ada ke pemasangan SMB. Ini dapat meningkatkan performa, karena setiap titik pemasangan akan menggunakan soket TCP yang berbeda. Dalam beberapa kasus, nosharesock dapat menurunkan performa karena tidak menyimpan cache file yang sama saat dibuka dari dua pemasangan dari klien yang sama. |
max_channels= |
4 | Disarankan saat menggunakan SMB Multichannel. Menentukan jumlah maksimum saluran (koneksi jaringan) ke berbagi file. Jika Anda menggunakan SMB Multichannel dan jumlah saluran melebihi empat, ini akan mengakibatkan performa yang buruk. |
remount |
n/a | Melepas berbagi file dan mengubah opsi pemasangan jika ditentukan. Gunakan dengan password2 opsi jika Anda ingin menentukan kata sandi alternatif untuk memperbaiki kata sandi kedaluwarsa setelah pemasangan asli. |
nobrl |
n/a | Direkomendasikan dalam skenario klien tunggal saat kunci penasihat diperlukan. Azure Files tidak mendukung kunci saran, dan pengaturan ini mencegah pengiriman permintaan kunci rentang byte ke server. |
snapshot= |
waktu | Pasang rekam jepret tertentu dari berbagi file. Waktu harus berupa bilangan bulat positif yang mengidentifikasi rekam jepret yang diminta (dalam unit 100 nanodetik yang telah berlalu sejak 1 Januari 1601, atau atau dapat ditentukan dalam format GMT misalnya @GMT-2024.03.27-20.52.19). |
closetimeo= |
5 | Mengonfigurasi batas waktu tutup yang ditangguhkan (menangani cache) dalam hitungan detik, atau menonaktifkannya dengan mengatur ke 0. Defaultnya adalah 5 detik. |
nostrictsync |
n/a | Jangan minta server untuk memerah pada fsync(). Beberapa server melakukan penulisan yang tidak di-buffer secara default, dalam hal ini pembilasan berlebihan. Opsi ini dapat meningkatkan performa untuk beban kerja di mana klien melakukan banyak kombinasi tulis + fsync kecil dan di mana latensi jaringan jauh lebih tinggi daripada latensi server. |
multiuser |
n/a | Memetakan akses pengguna ke kredensial individual saat mengakses server. Secara default, pemasangan CIFS hanya menggunakan satu set kredensial pengguna (info masuk pemasangan) saat mengakses berbagi. Dengan opsi ini, klien akan membuat sesi baru dengan server menggunakan kredensial pengguna setiap kali pengguna baru mengakses pemasangan. Akses lebih lanjut oleh pengguna tersebut juga akan menggunakan kredensial tersebut. Karena kernel tidak dapat meminta kata sandi, pemasangan multipengguna terbatas pada pemasangan menggunakan sec= opsi yang tidak memerlukan kata sandi. |
cifsacl |
n/a | Opsi ini digunakan untuk memetakan ACL CIFS/NTFS ke/dari bit izin Linux, memetakan SID ke/dari UID dan GID, dan mendapatkan dan mengatur Deskriptor Keamanan. Hanya didukung untuk autentikasi NTLMv2. |
idsfromsid,modefromsid |
n/a | Disarankan ketika klien perlu melakukan otorisasi yang diberlakukan klien. Mengaktifkan izin gaya Unix. Hanya berfungsi ketika UID/GID seragam di semua klien. Hanya didukung untuk autentikasi NTLMv2. |
sec= |
krb5 | Diperlukan untuk autentikasi Kerberos. Untuk mengaktifkan mode keamanan Kerberos, atur sec=krb5 . Anda harus menghilangkan nama pengguna dan kata sandi saat menggunakan opsi ini. Klien Linux harus bergabung dengan domain. Lihat Mengaktifkan autentikasi Direktori Aktif melalui SMB untuk klien Linux. |
uid= |
0 | Opsional. Mengatur uid yang akan memiliki semua file atau direktori pada sistem file yang dipasang ketika server tidak memberikan informasi kepemilikan. Ini dapat ditentukan sebagai nama pengguna atau uid numerik. Ketika tidak ditentukan, defaultnya adalah 0. |
gid= |
0 | Opsional. Mengatur gid yang akan memiliki semua file atau direktori pada sistem file yang dipasang ketika server tidak memberikan informasi kepemilikan. Ini dapat ditentukan sebagai nama grup atau gid numerik. Ketika tidak ditentukan, defaultnya adalah 0. |
file_mode= |
n/a | Opsional. Jika server tidak mendukung ekstensi CIFS Unix, ini akan mengambil alih mode file default. |
dir_mode= |
n/a | Opsional. Jika server tidak mendukung ekstensi CIFS Unix, ini akan mengambil alih mode default untuk direktori. |
handletimeout= |
n/a | Opsional. Waktu (dalam milidetik) di mana server harus mencadangkan handel file setelah failover menunggu klien tersambung kembali. |
Langkah berikutnya
Untuk informasi selengkapnya tentang menggunakan berbagi file SMB Azure dengan Linux, lihat: