Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As partilhas de ficheiros do Azure podem ser montadas em distribuições do Linux com o cliente do kernel do SMB.
Este artigo mostra como montar um compartilhamento de arquivos do Azure SMB usando a autenticação NTLMv2 (chave de conta de armazenamento). O uso da autenticação baseada em identidade é preferível por motivos de segurança. Consulte Habilitar a autenticação do Active Directory sobre SMB para clientes Linux que acessem o Azure Files.
Aplica-se a
Modelo de gestão | Modelo de faturação | Nível de média | Redundância | PME | Sistema de Arquivos de Rede (NFS) |
---|---|---|---|---|---|
Microsoft.Armazenamento | Provisionado v2 | HDD (padrão) | Localização (LRS) |
![]() |
![]() |
Microsoft.Armazenamento | Provisionado v2 | HDD (padrão) | Zona (ZRS) |
![]() |
![]() |
Microsoft.Armazenamento | Provisionado v2 | HDD (padrão) | Geo (GRS) |
![]() |
![]() |
Microsoft.Armazenamento | Provisionado v2 | HDD (padrão) | GeoZona (GZRS) |
![]() |
![]() |
Microsoft.Armazenamento | Provisionado versão 1 | SSD (de qualidade superior) | Localização (LRS) |
![]() |
![]() |
Microsoft.Armazenamento | Provisionado versão 1 | SSD (de qualidade superior) | Zona (ZRS) |
![]() |
![]() |
Microsoft.Armazenamento | Pagamento conforme o consumo | HDD (padrão) | Localização (LRS) |
![]() |
![]() |
Microsoft.Armazenamento | Pagamento conforme o consumo | HDD (padrão) | Zona (ZRS) |
![]() |
![]() |
Microsoft.Armazenamento | Pagamento conforme o consumo | HDD (padrão) | Geo (GRS) |
![]() |
![]() |
Microsoft.Armazenamento | Pagamento conforme o consumo | HDD (padrão) | GeoZona (GZRS) |
![]() |
![]() |
Protocolos
Por predefinição, o Azure Files aplica a encriptação em trânsito. A cifração SMB está disponível a partir do SMB 3.0. O Azure Files também suporta SMB 2.1, que não oferece suporte à criptografia SMB. Como resultado, o Azure Files não permite que as partilhas de ficheiros sejam montadas utilizando SMB 2.1 a partir de outra região do Azure ou nas instalações, sem configuração adicional de rede, por motivos de segurança. Deverá utilizar SMB 3.1.1, a menos que a sua aplicação exija especificamente uma versão mais antiga.
Distribuição | SMB 3.1.1 (Recomendado) | SMB 3,0 |
---|---|---|
Versão de kernel do Linux |
|
|
Ubuntu | Encriptação AES-128-GCM: 18.04.5 LTS e posterior | Encriptação AES-128-CCM: 16.04.4 LTS e posterior |
Red Hat Enterprise Linux (RHEL) |
|
7.5 ou superior |
Debian | Básico: 10 ou mais | Encriptação AES-128-CCM: 10 e posterior |
Servidor SUSE Linux Enterprise | Encriptação AES-128-GCM: 15 SP2 e posterior | Encriptação AES-128-CCM: 12 SP2 e posterior |
Se sua distribuição Linux não estiver listada na tabela, você pode verificar a versão do kernel Linux com o comando #D0:
uname -r
Pré-requisitos
- Verifique se o pacote cifs-utils está instalado. Instale a versão mais recente do pacote cifs-utils usando o gerenciador de pacotes na distribuição Linux de sua escolha.
No Ubuntu e Debian, use o gerenciador de apt
pacotes:
sudo apt update
sudo apt install cifs-utils
Em outras distribuições, use o gerenciador de pacotes apropriado ou compile a partir do código-fonte.
A versão mais recente da CLI (Interface de Linha de Comando) do Azure. Para obter mais informações sobre como instalar a CLI do Azure, consulte Instalar a CLI do Azure e selecione seu sistema operacional. Se preferir usar o módulo do Azure PowerShell no PowerShell 6+, você pode; no entanto, as instruções neste artigo são para a CLI do Azure.
Certifique-se de que a porta 445 está aberta: o SMB comunica através da porta TCP 445 - certifique-se de que a sua firewall ou ISP não está a bloquear a porta TCP 445 do computador cliente. Substitua
<your-resource-group>
e<your-storage-account>
execute o seguinte script: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
Se a ligação tiver sido bem-sucedida, deverá ver um resultado semelhante ao seguinte:
Connection to <your-storage-account> 445 port [tcp/microsoft-ds] succeeded!
Pode utilizar uma ligação VPN ou ExpressRoute se a porta 445 estiver bloqueada na sua rede. Para obter mais informações, consulte Considerações sobre a rede para acesso direto à partilha de ficheiros do Azure.
Permissões
Todos os scripts de montagem neste artigo montam as partilhas de ficheiros utilizando as permissões de ficheiros e pastas padrão do Linux 0755. Isso significa ler, gravar e executar para o proprietário do arquivo/diretório, ler e executar para usuários no grupo de proprietários e ler e executar para outros usuários. Dependendo das políticas de segurança da sua organização, convém definir permissões alternativas uid
/gid
ou dir_mode
e file_mode
nas opções de montagem. Para obter mais informações sobre como definir permissões, consulte Notação simbólica Unix. Consulte as opções de montagem para obter uma lista de opções de montagem.
Suporte a permissões no estilo Unix
Você também pode obter suporte a permissões no estilo Unix para compartilhamentos de arquivos SMB Azure usando o controle de acesso imposto pelo cliente e adicionando modefromsid,idsfromsid
opções de montagem ao seu comando mount. Para que isso funcione:
- Todos os clientes que acedem ao recurso partilhado precisam de montar utilizando
modefromsid,idsfromsid
- Os UIDs/GIDs devem ser uniformes em todos os clientes
- Os clientes devem estar executando uma das seguintes distros Linux suportadas: Ubuntu 20.04+, SLES 15 SP3+
Monte a partilha de ficheiros do Azure a pedido com o comando mount.
Quando você monta um compartilhamento de arquivos em um sistema operacional Linux, seu compartilhamento de arquivos remoto é representado como uma pasta em seu sistema de arquivos local. Você pode montar compartilhamentos de arquivos em qualquer lugar do seu sistema. O exemplo a seguir é montado no caminho /media
. Você pode alterar isso para o caminho desejado modificando a $MNT_ROOT
variável.
Substitua <resource-group-name>
, <storage-account-name>
e <file-share-name>
com as informações apropriadas para o seu ambiente:
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
Em seguida, inicialize o arquivo de credenciais executando o script a seguir.
# 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
Agora você pode montar o compartilhamento de arquivos com o mount
comando usando o arquivo de credenciais. No exemplo seguinte, o comando $SMB_PATH
é preenchido usando o nome de domínio totalmente qualificado para o ponto final de ficheiro da conta de armazenamento. Veja opções de montagem para uma lista de opções de montagem SMB.
Nota
A partir da versão 5.0 do kernel Linux, o SMB 3.1.1 é o protocolo negociado padrão. Se você estiver usando uma versão do kernel Linux anterior à 5.0, especifique vers=3.1.1
na lista de opções de montagem.
# 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
Você também pode montar o mesmo compartilhamento de arquivos do Azure em vários pontos de montagem, se desejar.
Quando terminar de usar o compartilhamento de arquivos do Azure, use sudo umount $mntPath
para desmontar o compartilhamento.
Montar automaticamente partilhas de ficheiros
Quando você monta um compartilhamento de arquivos em um sistema operacional Linux, seu compartilhamento de arquivos remoto é representado como uma pasta em seu sistema de arquivos local. Você pode montar compartilhamentos de arquivos em qualquer lugar do seu sistema. O exemplo a seguir é montado no caminho /media
. Você pode alterar isso para o caminho desejado modificando a $MNT_ROOT
variável.
MNT_ROOT="/media"
sudo mkdir -p $MNT_ROOT
Use o nome da conta de armazenamento como o nome de usuário do compartilhamento de arquivos e a chave da conta de armazenamento como a senha. Como as credenciais da conta de armazenamento podem mudar com o tempo, você deve armazenar as credenciais da conta de armazenamento separadamente da configuração de montagem.
O exemplo a seguir mostra como criar um arquivo para armazenar as credenciais. Lembre-se de substituir <resource-group-name>
e <storage-account-name>
com as informações apropriadas para o seu ambiente.
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
Para montar automaticamente um compartilhamento de arquivos, você pode escolher entre usar uma montagem estática através do /etc/fstab
utilitário ou usar uma montagem dinâmica através do autofs
utilitário.
Montagem estática com /etc/fstab
Usando o ambiente anterior, crie uma pasta para sua conta de armazenamento/compartilhamento de arquivos em sua pasta de montagem. Substitua <file-share-name>
pelo nome apropriado do seu compartilhamento de arquivos do Azure.
FILE_SHARE_NAME="<file-share-name>"
MNT_PATH="$MNT_ROOT/$STORAGE_ACCOUNT_NAME/$FILE_SHARE_NAME"
sudo mkdir -p $MNT_PATH
Por fim, crie um registro no /etc/fstab
arquivo para seu compartilhamento de arquivos do Azure. No comando abaixo, as permissões padrão de arquivo e pasta do Linux 0755 são usadas, o que significa ler, gravar e executar para o proprietário (com base no proprietário do arquivo/diretório Linux), ler e executar para usuários no grupo de proprietários e ler e executar para outros no sistema. Você pode querer definir permissões alternativas uid
e gid
, ou dir_mode
e file_mode
na montagem, conforme desejado. Para obter mais informações sobre como definir permissões, consulte Notação numérica UNIX. Veja opções de montagem para uma lista de opções de montagem SMB.
Sugestão
Se você quiser que os contêineres do Docker que executam aplicativos .NET Core possam gravar no compartilhamento de arquivos do Azure, inclua nobrl nas opções de montagem SMB para evitar o envio de solicitações de bloqueio de intervalo de bytes para o servidor.
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
Nota
A partir da versão 5.0 do kernel Linux, o SMB 3.1.1 é o protocolo negociado padrão. Pode especificar versões alternativas do protocolo usando a opção de montagem vers
(as versões do protocolo são 3.1.1
, 3.0
, e 2.1
).
Montagem dinâmica com autofs
Para montar dinamicamente um compartilhamento de arquivos com o autofs
utilitário, instale-o usando o gerenciador de pacotes na distribuição Linux de sua escolha.
Nas distribuições Ubuntu e Debian, use o gerenciador de apt
pacotes:
sudo apt update
sudo apt install autofs
Em seguida, atualize os arquivos de autofs
configuração. Veja opções de montagem para uma lista de opções de montagem 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
A etapa final é reiniciar o autofs
serviço.
sudo systemctl restart autofs
Opções de montagem
Você pode usar as seguintes opções de montagem ao montar compartilhamentos de arquivos SMB Azure no Linux.
Opção de montagem | Valor recomendado | Descrição |
---|---|---|
username= |
Nome da conta de armazenamento | Obrigatório para autenticação NTLMv2. |
password= |
Chave primária da conta de armazenamento | Obrigatório para autenticação NTLMv2. |
password2= |
Chave secundária da conta de armazenamento | Recomendado quando é desejável uma rotação de chaves sem tempo de inatividade. |
mfsymlinks |
não aplicável | Recomendado. Força a montagem a suportar links simbólicos, permitindo que aplicações como o Git clonem repositórios com links simbólicos. |
actimeo= |
30-60 | Recomendado. O tempo (em segundos) em que o cliente CIFS armazena em cache atributos de um arquivo ou diretório antes de solicitar informações de atributos de um servidor. Usar um valor inferior a 30 segundos pode causar degradação do desempenho porque os caches de atributos para arquivos e diretórios expiram muito rapidamente. Recomendamos definir actimeo entre 30 e 60 segundos. |
nosharesock |
não aplicável | Opcional. Força o cliente a sempre fazer uma nova conexão com o servidor, mesmo que ele tenha uma conexão existente com a montagem SMB. Isto pode melhorar o desempenho, pois cada ponto de montagem usa um socket TCP diferente. Em alguns casos, nosharesock pode degradar o desempenho devido a não armazenar em cache o mesmo arquivo quando aberto a partir de duas montagens do mesmo cliente. |
max_channels= |
4 | Recomendado ao usar SMB Multichannel. Especifica o número máximo de canais (conexões de rede) para o compartilhamento de arquivos. Usar SMB Multichannel com mais de quatro canais resulta em baixo desempenho. |
remount |
não aplicável | Remonta a partilha de ficheiros e altera as opções de montagem, se especificado. Use com a password2 opção nos casos em que você deseja especificar uma senha alternativa para corrigir uma senha expirada após a montagem original. |
nobrl |
não aplicável | Recomendado em cenários de cliente único quando bloqueios consultivos são necessários. Os Arquivos do Azure não oferecem suporte a bloqueios de aviso e essa configuração impede o envio de solicitações de bloqueio de intervalo de bytes para o servidor. |
snapshot= |
Tempo | Monte um instantâneo específico da partilha de ficheiros. O tempo deve ser um inteiro positivo que identifique o instantâneo solicitado (em unidades de 100 nanossegundos decorridas desde 1º de janeiro de 1601 ou, alternativamente, pode ser especificado no formato GMT, por exemplo. @GMT-2024.03.27-20.52.19) |
closetimeo= |
5 | Configura o tempo limite de fechamento adiado (manipular cache) em segundos ou o desabilita definindo como 0. O padrão é 5 segundos. |
nostrictsync |
não aplicável | Não peça ao servidor para esvaziar no fsync(). Alguns servidores realizam gravações não bufferizadas por padrão, caso em que a descarga é redundante. Essa opção pode melhorar o desempenho para cargas de trabalho em que um cliente está executando muitas combinações pequenas de gravação + fsync e onde a latência da rede é muito maior do que a latência do servidor. |
multiuser |
não aplicável | Mapeie os acessos do usuário a credenciais individuais ao acessar o servidor. Por padrão, as montagens CIFS usam apenas um único conjunto de credenciais de usuário (as credenciais de montagem) ao acessar um compartilhamento. Com essa opção, o cliente cria uma nova sessão com o servidor usando as credenciais do usuário sempre que um novo usuário acessa a montagem. Acessos adicionais por esse utilizador também usam essas credenciais. Dado que o kernel não consegue solicitar senhas, as montagens multiusuário estão limitadas a utilizar opções que não exigem senhas. |
cifsacl |
não aplicável | Esta opção é usada para mapear ACLs de CIFS/NTFS para/de bits de permissão Linux, mapear SIDs para/de UIDs e GIDs, e obter e definir descritores de segurança. Apenas suportado para autenticação NTLMv2. |
idsfromsid,modefromsid |
não aplicável | Recomendado quando o cliente precisa fazer autorização imposta pelo cliente. Habilita permissões no estilo Unix. Só é eficaz quando os UIDs/GIDs são uniformes entre todos os clientes. Apenas suportado para autenticação NTLMv2. |
cruid= |
uid ou nome de utilizador | Opcional. Define o uid do proprietário do cache de credenciais. Isso é útil principalmente com sec=krb5 . O padrão é o UID real do processo que executa a montagem. Recomendamos definir esse parâmetro como uid ou nome de usuário do usuário que tem os tíquetes Kerberos necessários em seu arquivo de cache de credenciais padrão. Isso direciona o upcall para procurar um cache de credenciais de propriedade desse usuário. |
sec= |
KRB5 | Necessário para autenticação Kerberos. Para ativar o modo de segurança Kerberos, defina sec=krb5 . Exemplo: sudo mount -t cifs $SMB_PATH $MNT_PATH -o sec=krb5,cruid=$UID,serverino,nosharesock,actimeo=30,mfsymlinks . Você deve omitir nome de usuário e senha ao usar essa opção. O cliente Linux deve ser associado ao domínio. Consulte Habilitar a autenticação do Active Directory via SMB para clientes Linux. |
uid= |
0 | Opcional. Define o uid que possui todos os ficheiros ou diretórios no sistema de ficheiros montado quando o servidor não fornece informações de propriedade. Ele pode ser especificado como um nome de usuário ou um uid numérico. Quando não especificado, o padrão é 0. |
gid= |
0 | Opcional. Define o gid que possui todos os ficheiros ou diretórios no sistema de ficheiros montado quando o servidor não fornece informações de propriedade. Ele pode ser especificado como um nome de grupo ou um gid numérico. Quando não especificado, o padrão é 0. |
file_mode= |
não aplicável | Opcional. Se o servidor não suportar as extensões CIFS Unix, isso substituirá o modo de arquivo padrão. |
dir_mode= |
não aplicável | Opcional. Se o servidor não suportar as extensões CIFS Unix, isso substituirá o modo padrão para diretórios. |
handletimeout= |
não aplicável | Opcional. O tempo (em milissegundos) para o qual o servidor deve reservar o identificador de arquivo após um failover aguardando que o cliente se reconecte. |
Próximo passo
Para obter mais informações sobre como usar compartilhamentos de arquivos do SMB Azure com Linux, consulte: