chmod g+s .;
Este comando define o ID do grupo (setgid) no diretório atual, escrito como .
.
Isso significa que todos os novos arquivos e subdiretórios criados no diretório atual herdam o ID do grupo do diretório, em vez do ID do grupo principal do usuário que criou o arquivo. Isso também será passado para novos subdiretórios criados no diretório atual.
g+s
afeta o ID do grupo do arquivo, mas não afeta o ID do proprietário.
Observe que isso se aplica apenas aos arquivos recém-criados . Os arquivos que são movidos ( mv
) para o diretório não são afetados pela configuração setgid. Os arquivos copiados cp -p
também não são afetados.
Exemplo
touch un;
chgrp canard .;
chmod g+s .;
touch deux ;
Nesse caso, deux
pertencerá ao grupo, canard
mas un
pertencerá ao grupo do usuário que o criou, seja o que for.
Nota secundária sobre o uso de ponto e vírgula em comandos do shell
Diferente de c
ou perl
, um comando shell só precisa ser seguido por um ponto e vírgula se houver outro comando shell na mesma linha de comando. Portanto, considere a seguinte linha de comando:
chgrp canard .; chmod g+s .;
O ponto e vírgula final é supérfluo e pode ser removido:
chgrp canard .; chmod g+s .
Além disso, se colocarmos os dois comandos em linhas separadas, o ponto e vírgula restante será desnecessário:
chgrp canard .
chmod g+s .
cp
) são de fato recém-criados. Se eles não herdarem a permissão do grupo, o programa de cópia estará jogando, como copiar para um arquivo temporário e depois movê-lo para o diretório de destino.cp -p
que substitui a configuração setgid.cp -p
substitui a configuração setgid? Em todas as implementações Unix existentes? O POSIX diz que não é especificado se uma falha na cópia do ID do usuário ou do grupo em cp -p resulta em uma mensagem de diagnóstico! No entanto, os bits S_SUID e S_SGID, respectivamente, precisam ser limpos nessa situação (por exemplo, se um arquivo for definido como bob, mas a propriedade do bob não puder ser copiada para que o arquivo seja de propriedade de janet, não faça com que seja setuid Janet.)cp -p
substitui a configuração setgid?" De acordo com a especificação POSIX, é o que deve fazer. Faz isso em todos os sistemas Unix que eu usei. Você citou a parte da especificação referente ao que fazer para proteger a segurança no caso em que o ID do grupo não pode ser duplicado. Eu nunca me deparei com uma situação tão "impossível", não é?Você pode alterar as permissões de arquivo com o comando chmod. No Unix, as permissões de arquivo, que estabelecem quem pode ter diferentes tipos de acesso a um arquivo, são especificadas por classes de acesso e tipos de acesso. Classes de acesso são grupos de usuários e cada um pode receber tipos de acesso específicos
Unix / Linux possui usuários e grupos de usuários que podem ser atribuídos para acesso a arquivos
as opções g + s são as seguintes:
g - as permissões que outros usuários do grupo de arquivos têm para isso
s - define o ID do usuário ou grupo na execução
Aqui está um exemplo de uso:
(permita que todos leiam, gravem e executem um arquivo específico e ative o ID do grupo)
Para definir / modificar as permissões de um arquivo, você precisa usar o programa chmod. Obviamente, somente o proprietário de um arquivo pode usar chmod para alterar as permissões de um arquivo. O chmod possui a seguinte sintaxe: arquivo (s) de modo chmod [opções] A parte 'mode' especifica as novas permissões para o (s) arquivo (s) que se segue como argumentos. Um modo especifica quais permissões do usuário devem ser alteradas e, posteriormente, quais tipos de acesso devem ser alterados. Digamos, por exemplo: chmod ax socktest.pl
Isso significa que o bit de execução deve ser limpo (-) para todos os usuários. (proprietário, grupo e o resto do mundo) As permissões começam com uma carta especificando quais usuários devem ser afetados pela alteração; pode ser um dos seguintes:
Isto é seguido por uma instrução de mudança que consiste em um + (bit definido) ou - (bit limpo) e a letra correspondente ao bit que deve ser alterado. Vamos ver alguns exemplos:
Números estranhos ... Você pode ter encontrado coisas como o chmod 755 em algum arquivo e, é claro, ficará se perguntando o que é isso. O problema é que você pode alterar todo o padrão de permissão de um arquivo de uma só vez, usando um número como o deste exemplo. Todo modo tem um número de código correspondente e, como veremos, existe uma maneira muito simples de descobrir qual número corresponde a qualquer modo. Cada um dos três dígitos no número do modo corresponde a um dos três trigêmeos de permissão. (u, g e o) Todo bit de permissão em um trigêmeo corresponde a um valor: 4 para r, 2 para w, 1 para x. Se o bit de permissão você adicionar esse valor ao número do trigêmeo de permissão. Se estiver desmarcada, você não adiciona nada. (Alguns de vocês podem perceber que, de fato,
Portanto, 755 é uma maneira concisa de dizer 'Não me importo se outras pessoas lerem ou executarem este arquivo, mas apenas eu devo modificá-lo' e 777 significa 'todo mundo tem acesso total a esse arquivo'
referência perfeita
fonte
O resultado do comando ls dependerá do umask.
g + s definirá sgid para o arquivo. Confira aqui mais informações sobre o SUID SGID
portanto, se sua umask, por exemplo, for 022, o resultado será algo como:
fonte
No Linux, uma das opções de montagem padrão para ext? fs é 'nogrpid | sysvgroups '. Portanto, o primeiro toque em un cria um arquivo com o ID do grupo igual a fsgid do processo de criação em que fsgid = egid.
chmod g + s., faz com que a criação de arquivo / diretório subsequente herde o ID do grupo da pasta pai e, se a coisa criada for um diretório, ele também recebe g + s definido como pai.
Aqui, toque em deux, cria deux, com grupo canard.
A semântica muda se a opção mount for 'grpid | bsdgroups ', nesse caso, a nova criação de arquivo / diretório herdaria a identificação do grupo de sua pasta pai, mesmo sem definir g + s para o pai.
fonte