'chmod g + s' comando

35

Olá, quero entender o papel do comando chmod g+s no Unix.

Eu também gostaria de saber o que faz nesse contexto específico:

cd /home/canard;
touch un;
chgrp canard .;
chmod g+s .;
touch deux ;

Eu entendo todas as funções de comandos, exceto chmod g+s , e quero saber as diferenças entre os arquivos un e deux resultantes dessa série de comandos.

    
por otus 31.01.2015 / 19:31

4 respostas

49

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, mas não afeta o ID do proprietário.

Observe que isso se aplica somente a arquivos recém-criados . Arquivos que são movidos ( mv ) para o diretório não são afetados pela configuração do setgid. Os arquivos que são copiados com 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 lá o que for.

Uso de ponto e vírgula

Ao contrário de c ou perl , um comando shell só precisa ser seguido por um ponto-e-vírgula se houver outro comando shell seguindo-o na linha de comando same . Assim, 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 .
    
por 31.01.2015 / 20:48
6

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. As classes de acesso são grupos de usuários, e cada um pode receber tipos de acesso específicos

O Unix / Linux tem 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 do arquivo têm para ele

s - define o ID do usuário ou do grupo na execução

aqui está uma amostra de uso:

chmod =rwx,g+s filename

(permita que todos leiam, escrevam e executem um arquivo em particular e ative o ID do grupo)

Para definir / modificar as permissões de um arquivo, você precisa usar o programa chmod. Naturalmente, apenas o proprietário de um arquivo pode usar chmod para alterar as permissões de um arquivo. chmod tem a seguinte sintaxe: chmod [options] mode file (s) A parte 'mode' especifica as novas permissões para o (s) arquivo (s) que seguem como argumentos. Um modo especifica quais permissões do usuário devem ser alteradas e, posteriormente, quais tipos de acesso devem ser alterados. Vamos dizer por exemplo:     chmod a-x 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 letra especificando quais usuários devem ser afetados pela alteração, isso pode ser um dos seguintes:

u the owner user
g the owner group
o others (neither u, nor g)
a all users

Isto é seguido por uma instrução de alteração que consiste em um + (set bit) ou - (clear bit) e a letra correspondente ao bit que deve ser mudado. Vamos ver alguns exemplos:

$ ls -l socktest.pl 
-rwxr-xr-x   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod a-x socktest.pl 
$ ls -l socktest.pl 
-rw-r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod g+w socktest.pl 
$ ls -l socktest.pl 
-rw-rw-r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod ug+x socktest.pl 
$ ls -l socktest.pl 
-rwxrwxr--   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod ug-wx socktest.pl 
$ ls -l socktest.pl 
-r--r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

Números estranhos ... Você pode ter encontrado coisas como chmod 755 somefile e, claro, você estará se perguntando o que é isso. A única coisa é que você pode alterar o padrão inteiro de permissões de um arquivo de uma só vez usando um número como o deste exemplo. Cada 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 do número de modo corresponde a um dos três trigêmeos de permissão. (u, g e o) Cada bit de permissão em um trio corresponde a um valor: 4 para r, 2 para w, 1 para x. Se a permissão mordeu, você adiciona esse valor ao número do trio de permissão. Se estiver desmarcado, você não adiciona nada. (Alguns de vocês podem notar que, na verdade, o número para um trio é o valor octal correspondente ao padrão de três bits - se você não sabe o que é um valor octal, isso realmente não importa, apenas siga as instruções Então, se um arquivo tem permissões rwxr-xr-x, nós fazemos o seguinte cálculo:

Triplet for u: rwx => 4 + 2 + 1 = 7

Triplet for g: r-x => 4 + 0 + 1 = 5

Triplet for o: r-x => 4 + 0 + 1 = 5

Which makes : 755

Assim, 755 é uma maneira concisa de dizer "não me importo que outras pessoas leiam ou executem este arquivo, mas somente eu deveria ser capaz de modificá-lo" e 777 significa "todo mundo tem acesso total a esse arquivo"

referência perfeita

    
por 31.01.2015 / 20:00
0

O resultado do comando ls dependerá de umask.

g + s irá definir sgid para o arquivo. Verifique aqui para obter informações mais detalhadas sobre o SUID SGID

então se o seu umask por exemplo é 022, o resultado será algo como:

-rw-r--r--    1 romeo    canard     0 Jan 31 20:58 deux
-rw-r-Sr--    1 romeo    UsersGrp   0 Jan 31 20:58 un
    
por 31.01.2015 / 20:00
0

No Linux, uma das opções de montagem padrão para ext? fs é 'nogrpid | sysvgroups '. Então o primeiro toque un, cria um arquivo com id de grupo igual ao fsgid do processo de criação em que fsgid = egid.

chmod g + s., faz com que a criação subseqüente do arquivo / dir herde o id do grupo da pasta pai e se a coisa criada for um dir, ele também terá g + s definido como pai.

Aqui toque em deux, cria deux, com grupo canard.

A semântica muda se a opção de montagem for 'grpid | bsdgroups 'nesse caso, a nova criação de arquivo / dir herdaria o id de grupo de sua pasta pai mesmo sem configurar g + s para o pai em si.

    
por 01.02.2015 / 07:00