SMB Azure-fájlmegosztások csatlakoztatása Linux-ügyfeleken
Az Azure-fájlmegosztások az SMB-kernel ügyféllel csatlakoztathatók Linux-disztribúciókon.
Az Azure-fájlmegosztások Linux rendszeren való csatlakoztatásának ajánlott módja az SMB 3.1.1 használata. Alapértelmezés szerint az Azure Files titkosítást igényel az átvitel során, amelyet az SMB 3.0-s és újabb verziók támogatnak. Az Azure Files támogatja az SMB 2.1-et is, amely nem támogatja az átvitel közbeni titkosítást, de biztonsági okokból nem csatlakoztathat Azure-fájlmegosztásokat az SMB 2.1-sel egy másik Azure-régióból vagy a helyszínen. Hacsak az alkalmazása nem igényel kifejezetten SMB 2.1-et, használja inkább az SMB 3.1.1-et. Az SMB 2.1 támogatása a Linux kernel 3.7-es verziójához lett hozzáadva, így ha a Linux kernel egy verzióját használja a 3.7 után, akkor az SMB 2.1-es verzióját kell támogatnia.
Disztribúció | SMB 3.1.1 (Ajánlott) | SMB 3.0 |
---|---|---|
Linux-kernel verziója |
|
|
Ubuntu | AES-128-GCM titkosítás: 18.04.5 LTS+ | AES-128-CCM titkosítás: 16.04.4 LTS+ |
Red Hat Enterprise Linux (RHEL) |
|
7.5+ |
Debian | Alapszintű: 10+ | AES-128-CCM titkosítás: 10+ |
SUSE Linux Enterprise Server | AES-128-GCM titkosítás: 15 SP2+ | AES-128-CCM titkosítás: 12 SP2+ |
Ha az Ön által használt Linux-disztribúció nem szerepel a fenti táblázatban, a Linux-kernel verzióját az uname
paranccsal ellenőrizheti:
uname -r
Feljegyzés
A cikkben szereplő összes csatlakoztatási szkript az alapértelmezett 0755 Linux-fájl- és mappaengedélyek használatával csatlakoztatja az SMB-fájlmegosztásokat. Ez azt jelenti, hogy a fájl/könyvtár tulajdonosa olvasása, írása és végrehajtása, a tulajdonoscsoport felhasználóinak olvasása és végrehajtása, valamint más felhasználók olvasása és végrehajtása. A szervezet biztonsági szabályzataitól függően előfordulhat, hogy alternatív uid
/gid
vagy dir_mode
file_mode
engedélyeket szeretne beállítani a csatlakoztatási beállításokban. További információ az engedélyek beállításáról: UNIX numerikus jelölés.
A következőre érvényes:
Fájlmegosztás típusa | SMB | NFS |
---|---|---|
Standard szintű fájlmegosztások (GPv2), LRS/ZRS | ||
Standard szintű fájlmegosztások (GPv2), GRS/GZRS | ||
Prémium fájlmegosztások (FileStorage), LRS/ZRS |
Előfeltételek
- Győződjön meg arról, hogy a cifs-utils csomag telepítve van. Telepítse a cifs-utils csomagot a csomagkezelővel a választott Linux-disztribúcióra.
Az Ubuntu és a Debian esetén használja a csomagkezelőt apt
:
sudo apt update
sudo apt install cifs-utils
Más disztribúciókban használja a megfelelő csomagkezelőt vagy fordítást a forrásból.
Az Azure Parancssori felület (CLI) legújabb verziója. Az Azure CLI telepítésével kapcsolatos további információkért tekintse meg az Azure CLI telepítését és az operációs rendszer kiválasztását ismertető témakört. Ha inkább az Azure PowerShell-modult szeretné használni a PowerShell 6+-ban, akkor előfordulhat, hogy A cikkben szereplő utasítások azonban az Azure CLI-hez tartoznak.
Győződjön meg arról, hogy a 445-ös port nyitva van: az SMB a 445-ös TCP-porton keresztül kommunikál – győződjön meg arról, hogy a tűzfal vagy az internetszolgáltató nem blokkolja a 445-ös TCP-portot az ügyfélszámítógépről. Cserélje le
<your-resource-group>
, majd<your-storage-account>
futtassa a következő szkriptet: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
Ha a kapcsolat sikeres volt, a következő kimenethez hasonlót kell látnia:
Connection to <your-storage-account> 445 port [tcp/microsoft-ds] succeeded!
Ha nem tudja megnyitni a 445-ös portot a vállalati hálózaton, vagy egy internetszolgáltató letiltja, a 445-ös porton VPN-kapcsolat vagy ExpressRoute használatával dolgozhat. További információért lásd: Hálózati megfontolások az Azure fájlmegosztás közvetlen eléréséhez.
Az Azure-fájlmegosztás csatlakoztatása igény szerint csatlakoztatással
Amikor linuxos operációs rendszerre csatlakoztat egy fájlmegosztást, a távoli fájlmegosztás mappaként jelenik meg a helyi fájlrendszerben. A rendszer bármely pontjára csatlakoztathatja a fájlmegosztásokat. Az alábbi példa az /media
elérési út alá csatlakozik. Ezt módosíthatja a kívánt elérési útra a $MNT_ROOT
változó módosításával.
Cserélje le és <storage-account-name>
<file-share-name>
írja be <resource-group-name>
a környezetének megfelelő információkat:
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
Ezután inicializálja a hitelesítőadat-fájlt az alábbi szkript futtatásával.
# 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
Most már csatlakoztathatja a fájlmegosztást a mount
hitelesítőadat-fájl használatával a parancs használatával. Az alábbi példában a parancs a $SMB_PATH
tárfiók fájlvégpontjának teljes tartománynevével lesz feltöltve.
Feljegyzés
A Linux kernel 5.0-s verziójától kezdve az SMB 3.1.1 az alapértelmezett egyeztetett protokoll. Ha a Linux kernel 5.0-snál régebbi verzióját használja, adja meg vers=3.1.1
a csatlakoztatási beállítások listáját.
# 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
Igény szerint több csatlakoztatási pontra is csatlakoztathatja ugyanazt az Azure-fájlmegosztást. Ha végzett az Azure-fájlmegosztással, a megosztás leválasztásához használja sudo umount $mntPath
.
Fájlmegosztások automatikus csatlakoztatása
Amikor linuxos operációs rendszerre csatlakoztat egy fájlmegosztást, a távoli fájlmegosztás mappaként jelenik meg a helyi fájlrendszerben. A rendszer bármely pontjára csatlakoztathatja a fájlmegosztásokat. Az alábbi példa az /media
elérési út alá csatlakozik. Ezt módosíthatja a kívánt elérési útra a $MNT_ROOT
változó módosításával.
MNT_ROOT="/media"
sudo mkdir -p $MNT_ROOT
Azure-fájlmegosztás linuxos csatlakoztatásához használja a tárfiók nevét a fájlmegosztás felhasználóneveként, jelszóként pedig a tárfiókkulcsot. Mivel a tárfiók hitelesítő adatai idővel változhatnak, a tárfiók hitelesítő adatait a csatlakoztatási konfigurációtól elkülönítve kell tárolnia.
Az alábbi példa bemutatja, hogyan hozhat létre fájlt a hitelesítő adatok tárolására. Ne felejtse el lecserélni <resource-group-name>
a <storage-account-name>
környezetének megfelelő információkat.
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
A fájlmegosztás automatikus csatlakoztatásához választhat a statikus csatlakoztatás segédprogramon keresztüli használata vagy a /etc/fstab
segédprogramon keresztüli autofs
dinamikus csatlakoztatás között.
Statikus csatlakoztatás /etc/fstab használatával
A korábbi környezet használatával hozzon létre egy mappát a tárfiókhoz/fájlmegosztáshoz a csatlakoztatási mappa alatt. Cserélje le <file-share-name>
az Azure-fájlmegosztás megfelelő nevére.
FILE_SHARE_NAME="<file-share-name>"
MNT_PATH="$MNT_ROOT/$STORAGE_ACCOUNT_NAME/$FILE_SHARE_NAME"
sudo mkdir -p $MNT_PATH
Végül hozzon létre egy rekordot a fájlban az /etc/fstab
Azure-fájlmegosztáshoz. Az alábbi parancsban az alapértelmezett 0755-ös Linux-fájl- és mappaengedélyek lesznek használatban, ami azt jelenti, hogy a tulajdonos (a fájl/könyvtár Linux-tulajdonosa alapján) olvasási, írási és végrehajtási jogosultságokat használ, a tulajdonoscsoport felhasználói számára olvasást és végrehajtást, valamint a rendszer többi felhasználójának olvasását és végrehajtását. Előfordulhat, hogy igény szerint alternatív uid
és gid
vagy dir_mode
file_mode
csatlakoztatási engedélyeket szeretne beállítani. További információ az engedélyek beállításáról: UNIX numerikus jelölés.
Tipp.
Ha azt szeretné, hogy a .NET Core-alkalmazásokat futtató Docker-tárolók írni tudjanak az Azure-fájlmegosztásba, az SMB csatlakoztatási beállításai között adja meg a nobrlt , hogy elkerülje a bájttartomány-zárolási kérelmek kiszolgálóra küldését.
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
Feljegyzés
A Linux kernel 5.0-s verziójától kezdve az SMB 3.1.1 az alapértelmezett egyeztetett protokoll. A csatlakoztatási beállítással vers
alternatív protokollverziókat is megadhat (a protokollverziók a következők3.1.1
3.0
: és 2.1
).
Dinamikus csatlakoztatás autofokkal
Ha dinamikusan szeretne csatlakoztatni egy fájlmegosztást a autofs
segédprogrammal, telepítse azt a csomagkezelővel a választott Linux-disztribúcióra.
Ubuntu- és Debian-disztribúciók esetén használja a csomagkezelőt apt
:
sudo apt update
sudo apt install autofs
Ezután frissítse a autofs
konfigurációs fájlokat.
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
Az utolsó lépés a szolgáltatás újraindítása autofs
.
sudo systemctl restart autofs
Következő lépések
Az alábbi hivatkozások további információkat tartalmaznak az Azure Filesról: