Uma das muitas chamadas de sistema no idioma C existe “Umask”, Que é especialmente construído para a criação da máscara de criação de documentos. Ele define os privilégios ou direitos atribuídos a um arquivo ou diretório específico no momento da criação. É um controle de segurança da C Language para restringir outros processos do sistema para atribuir direitos extras a novas criações de arquivos.
A chamada do sistema de “Umask”Funciona no padrão de dígitos dentro do shell Linux. Vamos dar uma olhada em exemplos simples para demonstrar o “Umask“Chamada do sistema. Comece login no Ubuntu 20.04 Sistema. Abra o terminal do shell e defina o valor de máscara necessário para criar arquivos e pastas, diga "0002". Isso indica que usuários e grupos podem ler, escrever e executar o arquivo criado a partir de agora. Embora outros não possam escrever como “2" é para "escrever”.
Exemplo:
Vamos criar um novo arquivo de idioma C para explorar a chamada do sistema UMASK nele. O arquivo foi criado com o “tocar”Consulta na concha. Depois disso, o editor do GNU Nano foi usado para abrir e editar o arquivo recém -criado “desmascarar.c" com "Nano”Instrução.
O arquivo "Umask.c”Foi aberto no editor para uso. Adicionamos o código C mostrado a ele. Este código contém a biblioteca Posix na seção de arquivo de cabeçalho. Diferentes cabeçalhos de fluxo de entrada e saída e cabeçalhos do tipo de arquivo foram incluídos para fazer o código funcionar corretamente. Depois disso, o método principal foi inicializado. Dentro do método principal, definimos um descritor de arquivo “fd”Do tipo inteiro. Este código será usado para verificar a máscara antiga ou recente usada ou atribuída ao arquivo e pastas. Então, usamos a variável do tipo "mode_t" "antigo" para buscar o valor atual da máscara. Este valor antigo da máscara será impresso no shell usando o “printf" declaração. O "S_irwxg”A função de argumento foi passada para o método“Umask”Para obter o valor atual e salvá -lo na variável“ antiga ”para exibição.
O "se”A declaração foi usada para verificar se o descritor de arquivo“fd”Foi usado para criar um novo arquivo“novo.TXT”Com o valor da máscara menor que 0 ou não. Se a condição satisfazer, ela passará por uma exceção que a função de criação obteve um problema. O sistema imprimirá o valor da máscara atualmente atribuído a um novo arquivo “novo.TXT”Dentro da declaração else usando o“ls -l”Comando. O descritor de arquivo foi bloqueado e o arquivo foi desvinculado do sistema então. O arquivo foi salvo usando “Ctrl+s”E desiste usando“Ctrl+x”.
Vamos compilar o código C primeiro. Para compilação, você deve ter algum compilador suportado instalado em seu sistema Linux. Nós instalamos o compilador GCC. Então, use o comando gcc e o nome de um arquivo c, e.g., ““desmascarar.c”.
Agora o arquivo deve ser executado após a compilação para ver os resultados. O "a.fora”O comando foi executado no terminal para esse fim. A saída exibe a máscara antiga criada para os arquivos e pasta como “2”. Além disso, mostra os privilégios atribuídos ao arquivo “Novo.txt ”usando esta máscara conforme a saída.
Vamos mudar o valor da máscara para “777”Indicando“ sem direitos ”para arquivar e pastas a serem criadas.
Abra o mesmo arquivo e edite o nome de um arquivo como “novo.arquivo”Para criar um novo arquivo. O código restante é deixado inalterado.
Após a compilação do mesmo arquivo mais uma vez, recebemos o erro. Isso ocorre porque nosso valor atual de máscara é “777”Que indica nenhum direito de leitura, escreva e execução para qualquer usuário, grupo ou outros.
Vamos mudar o valor da máscara para a criação de arquivos e diretórios de agora em diante 0777.
Após a configuração do valor da máscara, vamos criar um diretório chamado “dois”. Ao verificar os privilégios para o diretório “dois”, Podemos ver que não contém direitos.
Conclusão:
Este artigo contém o funcionamento do “Umask ()“Chamada do sistema usando a linguagem C. O conceito do sistema Umask () foi explicado em detalhes. Demonstramos seu trabalho usando um exemplo de código simples para criar um arquivo e compilação no Ubuntu 20.04 Sistema Linux. O mesmo pode ser aplicado a um diretório também.