Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berbagi file Azure dapat dipasang dalam distribusi Linux menggunakan klien kernel SMB.
Artikel ini memperlihatkan cara memasang berbagi file SMB Azure menggunakan autentikasi NTLMv2 (kunci akun penyimpanan). Menggunakan autentikasi berbasis identitas lebih disukai karena alasan keamanan. Lihat Mengaktifkan autentikasi Direktori Aktif melalui SMB untuk klien Linux yang mengakses Azure Files.
Berlaku untuk
Model manajemen | Model tagihan | Peringkat media | Pemborosan | Usaha Kecil dan Menengah (UKM) | Network File System (NFS) |
---|---|---|---|---|---|
Microsoft.Storage | Versi 2 yang telah disediakan | HDD (standar) | Lokal (LRS) |
![]() |
![]() |
Microsoft.Storage | Versi 2 yang telah disediakan | HDD (standar) | Zona (ZRS) |
![]() |
![]() |
Microsoft.Storage | Versi 2 yang telah disediakan | HDD (standar) | Geo (GRS) |
![]() |
![]() |
Microsoft.Storage | Versi 2 yang telah disediakan | HDD (standar) | GeoZone (GZRS) |
![]() |
![]() |
Microsoft.Storage | Versi 1 yang telah disediakan | SSD (kelas atas) | Lokal (LRS) |
![]() |
![]() |
Microsoft.Storage | Versi 1 yang telah disediakan | SSD (kelas atas) | Zona (ZRS) |
![]() |
![]() |
Microsoft.Storage | Bayar per penggunaan | HDD (standar) | Lokal (LRS) |
![]() |
![]() |
Microsoft.Storage | Bayar per penggunaan | HDD (standar) | Zona (ZRS) |
![]() |
![]() |
Microsoft.Storage | Bayar per penggunaan | HDD (standar) | Geo (GRS) |
![]() |
![]() |
Microsoft.Storage | Bayar per penggunaan | HDD (standar) | GeoZone (GZRS) |
![]() |
![]() |
Protokol
Secara default, Azure Files memberlakukan enkripsi saat transit. Enkripsi SMB tersedia dimulai dengan SMB 3.0. Azure Files juga mendukung SMB 2.1, yang tidak mendukung enkripsi SMB. Akibatnya, Azure Files tidak mengizinkan pemasangan berbagi file menggunakan SMB 2.1 dari wilayah Azure lain atau dari lokasi lokal, tanpa konfigurasi jaringan tambahan, karena alasan keamanan. Anda harus menggunakan SMB 3.1.1 kecuali aplikasi Anda secara khusus memerlukan versi yang lebih lama.
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+ |
Server Perusahaan SUSE Linux | Enkripsi AES-128-GCM: 15 SP2+ | Enkripsi AES-128-CCM: 12 SP2+ |
Jika distribusi Linux Anda tidak tercantum dalam tabel, Anda dapat memeriksa versi kernel Linux dengan uname
perintah :
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
<your-resource-group>
dan<your-storage-account>
lalu jalankan 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!
Anda dapat menggunakan koneksi VPN atau ExpressRoute jika port 445 diblokir di jaringan Anda. Untuk informasi selengkapnya, lihat Pertimbangan jaringan untuk akses berbagi file Azure langsung.
Perizinan
Semua skrip pemasangan dalam artikel ini 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 daftarnya.
Dukungan untuk izin dengan gaya Unix
Anda juga bisa mendapatkan dukungan izin bergaya Unix untuk berbagi file Azure SMB dengan menggunakan kontrol akses yang ditegakkan di sisi klien dan menambahkan opsi pemasangan modefromsid,idsfromsid
ke dalam perintah pemasangan Anda. Agar ini berfungsi:
- Semua klien yang mengakses bagian yang dibagikan perlu melakukan pemasangan menggunakan
modefromsid,idsfromsid
- UID/GID harus seragam di semua klien
- Klien harus menjalankan salah satu distro Linux yang didukung berikut: Ubuntu 20.04+, SLES 15 SP3+
Pasang berbagi file Azure secara on-demand dengan perintah mount
Saat Anda memasang berbagi file di OS Linux, berbagi file jarak jauh Anda direpresentasikan sebagai folder di sistem file lokal Anda. Anda dapat memasang file shares ke mana saja di 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 menggunakan perintah mount
dengan file kredensial. Dalam contoh berikut, perintah $SMB_PATH
diisi dengan menggunakan nama domain lengkap untuk titik akhir file akun penyimpanan. Lihat opsi mount untuk daftar opsi mount 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 share file Azure, gunakan sudo umount $mntPath
untuk melepaskan kait share tersebut.
Mengakses pembagian 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 file shares ke mana saja di 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
Gunakan nama akun penyimpanan sebagai nama pengguna berbagi file, dan kunci akun penyimpanan sebagai kata 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 menggunakan /etc/fstab
Dengan menggunakan lingkungan sebelumnya, buatlah folder untuk akun penyimpanan/berbagi file di dalam folder pemasangan Anda. 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 file_mode
pada pemasangan sesuai keinginan. Untuk informasi selengkapnya tentang cara mengatur izin, lihat notasi numerik UNIX. Lihat opsi mount untuk daftar opsi mount SMB.
Tips
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 sistem file secara dinamis dengan autofs
Untuk memasang berbagi file secara dinamis dengan utilitas autofs
, instal utilitas tersebut 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, perbarui file konfigurasi autofs
. Lihat opsi mount untuk daftar opsi mount 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= |
Akun penyimpanan: kunci sekunder | Direkomendasikan jika rotasi kunci tanpa waktu henti diinginkan. |
mfsymlinks |
N/a | Disarankan. Memaksa pemasangan untuk mendukung tautan simbolis, memungkinkan aplikasi seperti git untuk mengkloning repositori dengan tautan simbolis. |
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 telah ada ke mount SMB. Ini dapat meningkatkan performa, karena setiap titik pemasangan menggunakan soket TCP yang berbeda. Dalam beberapa kasus, nosharesock dapat mengurangi kinerja karena tidak menyimpan cache file yang sama saat dibuka dari dua mount pada klien yang sama. |
max_channels= |
4 | Disarankan saat menggunakan SMB Multichannel. Menentukan jumlah maksimum saluran (koneksi jaringan) ke berbagi file. Menggunakan SMB Multichannel dengan lebih dari empat saluran menghasilkan performa yang buruk. |
remount |
N/a | Memasang ulang berkas bersama 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 untuk skenario klien tunggal ketika kunci saran 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 jangka waktu penutupan yang ditunda (penanganan cache) dalam hitungan detik, atau menonaktifkannya dengan mengatur ke 0. Pengaturan bawaan adalah 5 detik. |
nostrictsync |
N/a | Jangan minta server untuk mengosongkan pada fsync(). Beberapa server melakukan penulisan yang tidak di-buffer secara default, dalam hal ini pembilasan menjadi redundan. 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 bawaan, pemasangan CIFS hanya menggunakan satu set kredensial pengguna (kredensial pemasangan) saat mengakses saham. Dengan opsi ini, klien akan membuat sesi baru dengan server menggunakan kredensial pengguna setiap kali pengguna baru mengakses titik pemasangan. Akses lebih lanjut oleh pengguna tersebut juga 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 dipaksakan oleh klien. Mengaktifkan perizinan yang bergaya Unix. Hanya berfungsi ketika Nomor Identifikasi Unik (UID/GID) seragam di semua klien. Hanya didukung untuk autentikasi NTLMv2. |
cruid= |
uid atau nama pengguna | Opsional. Mengatur uid pemilik cache kredensial. Ini terutama berguna dengan sec=krb5 . Defaultnya adalah uid nyata dari proses yang melakukan pemasangan. Sebaiknya atur parameter ini ke uid atau nama pengguna pengguna yang memiliki tiket Kerberos yang diperlukan dalam file cache kredensial default mereka. Ini mengarahkan upcall untuk mencari cache kredensial yang dimiliki oleh pengguna tersebut. |
sec= |
krb5 | Diperlukan untuk autentikasi Kerberos. Untuk mengaktifkan mode keamanan Kerberos, atur sec=krb5 . Contoh: sudo mount -t cifs $SMB_PATH $MNT_PATH -o sec=krb5,cruid=$UID,serverino,nosharesock,actimeo=30,mfsymlinks . Anda harus menghilangkan nama pengguna dan kata sandi saat menggunakan opsi ini. Klien Linux harus bergabung ke dalam domain. Lihat Mengaktifkan autentikasi Direktori Aktif melalui SMB untuk klien Linux. |
uid= |
0 | Opsional. Mengatur uid yang 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 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 menyimpan penanda file setelah failover sambil menunggu klien terhubung kembali. |
Langkah berikutnya
Untuk informasi selengkapnya tentang menggunakan berbagi file SMB Azure dengan Linux, lihat: