<Anterior | Conteúdo | Próxima>
3.4.2. As ferramentas
3.4.2.1. O comando chmod
Uma consequência normal da aplicação de permissões de arquivo estritas, e às vezes um incômodo, é que os direitos de acesso precisarão ser alterados por todos os tipos de razões. Nós usamos o chmod comando para fazer isso e, eventualmente, para chmod tornou-se um verbo inglês quase aceitável, significando a mudança do modo de acesso de um arquivo. O chmod O comando pode ser usado com opções alfanuméricas ou numéricas, como você preferir.
O exemplo abaixo usa opções alfanuméricas para resolver um problema que normalmente ocorre com novos usuários:
asim: ~> ./Olá
bash: ./hello: mau intérprete: permissão negada
asim: ~> olá gato
#! / Bin / bash
echo "Olá, mundo"
asim: ~> ls -l olá
-rw-rw-r-- 1 asim asim 32 de 15 de janeiro 16:29 olá asim: ~> chmod u + x olá
asim: ~> ./Olá
Olá Mundo
asim: ~> ls -l olá
-rwxrw-r-- 1 asim asim 32 de 15 de janeiro de 16:29 olá *
asim: ~> ./Olá
bash: ./hello: mau intérprete: permissão negada
asim: ~> olá gato
#! / Bin / bash
echo "Olá, mundo"
asim: ~> ls -l olá
-rw-rw-r-- 1 asim asim 32 de 15 de janeiro 16:29 olá asim: ~> chmod u + x olá
asim: ~> ./Olá
Olá Mundo
asim: ~> ls -l olá
-rwxrw-r-- 1 asim asim 32 de 15 de janeiro de 16:29 olá *
A + e - operadores são usados para conceder ou negar um determinado direito a um determinado grupo. Combinações separadas por vírgulas são permitidas. As páginas Info e man contêm exemplos úteis. Aqui está outro, que torna o arquivo do exemplo anterior um arquivo privado para o usuário assim:
asim: ~> chmod u + rwx, go-rwx olá
asim: ~> ls -l | Olá | ||
-rwx ------ | 1 sim | assim | 32 de 15 de janeiro de 16:29 olá * |
O tipo de problema que resulta em uma mensagem de erro informando que a permissão foi negada em algum lugar geralmente é um problema com direitos de acesso na maioria dos casos. Além disso, comentários como "Funcionou ontem" e "Quando executo como root, funciona" são provavelmente causados por permissões de arquivo incorretas.
Ao usar chmod com argumentos numéricos, os valores para cada direito de acesso concedido devem ser contados juntos por grupo. Assim, obtemos um número de 3 dígitos, que é o valor simbólico das configurações chmod tem que fazer. A tabela a seguir lista as combinações mais comuns:
Tabela 3-9. Proteção de arquivo com chmod
Command | Significado |
chmod 400 lima | Para proteger um arquivo contra sobregravação acidental. |
chmod 500 anuário | Para se proteger de remover, renomear ou mover arquivos acidentalmente deste diretório. |
chmod 600 lima | Um arquivo privado que só pode ser alterado pelo usuário que inseriu este comando. |
chmod 644 lima | Um arquivo publicamente legível que só pode ser alterado pelo usuário emissor. |
chmod 660 lima | Os usuários pertencentes ao seu grupo podem alterar este arquivo, outros não têm nenhum acesso a ele. |
chmod 700 lima | Protege um arquivo contra qualquer acesso de outros usuários, enquanto o usuário emissor ainda tem acesso total. |
chmod 755 anuário | Para arquivos que devem ser lidos e executáveis por outras pessoas, mas apenas alteráveis pelo usuário emissor. |
chmod 775 lima | Modo padrão de compartilhamento de arquivos para um grupo. |
chmod 777 lima | Todos podem fazer tudo com este arquivo. |
Se você inserir um número com menos de três dígitos como argumento para chmod, os caracteres omitidos são substituídos por zeros a partir da esquerda. Na verdade, há um quarto dígito nos sistemas Linux, que precede os três primeiros e define modos de acesso especiais. Tudo sobre esses e muitos outros está localizado nas páginas de informações.
3.4.2.2. Conectando-se a outro grupo
Quando você digita id na linha de comando, você obtém uma lista de todos os grupos aos quais você possivelmente pode pertencer, precedida por seu nome de usuário e ID e o nome do grupo e ID ao qual você está conectado no momento. No entanto, em muitos sistemas Linux, você só pode estar conectado ativamente a um grupo por vez. Por padrão, este ativo ou grupo primário é aquele que você recebe do / Etc / passwd Arquivo. O quarto campo deste arquivo contém o ID do grupo primário dos usuários, que é pesquisado no / etc / group Arquivo. Um exemplo:
asim: ~> id
uid=501(asim) gid=501(asim) groups=100(users),501(asim),3400(web)
asim: ~> grep assim / Etc / passwd
asim: x: 501: 501: Asim El Baraka: / home / asim: / bin / bash
asim: ~> grep 501 / etc / group
asim: x: 501:
asim: ~> id
uid=501(asim) gid=501(asim) groups=100(users),501(asim),3400(web)
asim: ~> grep assim / Etc / passwd
asim: x: 501: 501: Asim El Baraka: / home / asim: / bin / bash
asim: ~> grep 501 / etc / group
asim: x: 501:
O quarto campo na linha de / Etc / passwd contém o valor "501", que representa o grupo assim no exemplo acima. A partir de / etc / group podemos obter o nome correspondente a este ID de grupo. Ao conectar-se inicialmente ao sistema, este é o grupo que assim pertencerá a.
Esquema de grupo privado do usuário
A fim de permitir mais flexibilidade, a maioria dos sistemas Linux seguem os chamados esquema de grupo privado do usuário, que atribui cada usuário principalmente a seu próprio grupo. Este grupo é um grupo que contém apenas este usuário em particular, daí o nome "grupo privado". Normalmente, este grupo tem o mesmo nome que o nome de login do usuário, o que pode ser um pouco confuso.
Além de seu próprio grupo privado, o usuário assim também pode estar nos grupos usuários e web. Como esses grupos são secundários para esse usuário, ele precisará usar o novogrp para entrar em qualquer um desses grupos (use gpasswd para definir a senha do grupo primeiro). No exemplo, assim precisa criar arquivos que são propriedade do grupo web.
asim: / var / www / html> novogrp web
asim: / var / www / html> id
uid=501(asim) gid=3400(web) groups=100(users),501(asim),3400(web)
asim: / var / www / html> novogrp web
asim: / var / www / html> id
uid=501(asim) gid=3400(web) groups=100(users),501(asim),3400(web)
Quando assim cria novos arquivos agora, eles serão propriedade do grupo web em vez de ser propriedade do grupo assim:
asim: / var / www / html> teste de toque
asim: / var / www / html> ls -l teste
-rw-rw-r-- 1 asim web 0 Jun 10 15:38 teste
asim: / var / www / html> teste de toque
asim: / var / www / html> ls -l teste
-rw-rw-r-- 1 asim web 0 Jun 10 15:38 teste
O login em um novo grupo evita que você tenha que usar chown (consulte a Seção 3.4.2.4) ou ligando para o administrador do sistema para alterar suas propriedades.
Veja a página de manual para novogrp para obter mais informações.
3.4.2.3. A máscara de arquivo
Quando um novo arquivo é salvo em algum lugar, primeiro é submetido ao procedimento de segurança padrão. Arquivos sem permissões não existem no Linux. A permissão de arquivo padrão é determinada pelo máscara para a criação de um novo arquivo. O valor desta máscara pode ser exibido usando o umask comando:
bert: ~> umask
0002
bert: ~> umask
0002
Em vez de adicionar os valores simbólicos uns aos outros, como acontece com chmod, para calcular a permissão em um novo arquivo, eles precisam ser subtraídos do total de direitos de acesso possíveis. No exemplo acima, no entanto, vemos 4 valores exibidos, mas existem apenas 3 categorias de permissão: usuário, grupo e de outros. O primeiro zero faz parte das configurações especiais de atributos de arquivo, que discutiremos na Seção 3.4.2.4 e na Seção 4.1.6. Pode ser que este primeiro zero não seja exibido em seu sistema ao entrar no umask comando, e que você vê apenas 3 números que representam a máscara de criação de arquivo padrão.
Cada sistema do tipo UNIX possui uma função de sistema para a criação de novos arquivos, que é acionada sempre que um usuário utiliza um programa que cria novos arquivos, por exemplo, ao baixar um arquivo da Internet, ao salvar um novo documento de texto e assim por diante. Esta função cria novos arquivos e novos diretórios. A permissão total de leitura, gravação e execução é concedida a todos ao criar um novo diretório. Ao criar um novo arquivo, esta função concederá permissões de leitura e gravação para todos, mas definirá as permissões de execução como nenhuma para todas as categorias de usuário. Isso, antes de a máscara ser aplicada, um diretório tem permissões 777 or rwxrwxrwx, um arquivo simples 666 or rw-rw-rw-.
A umask o valor é subtraído dessas permissões padrão depois que a função cria o novo arquivo ou diretório. Assim, um diretório terá permissões de 775 por padrão, um arquivo 664, se o valor da máscara for (0) 002. Isso é demonstrado no exemplo abaixo:
bert: ~> mkdir novodir
bert: ~> ls -ld novodir
drwxrwxr-x 2 bert bert
4096 28 de fevereiro 13:45 newdir /
bert: ~> mkdir novodir
bert: ~> ls -ld novodir
drwxrwxr-x 2 bert bert
bert: ~> toque em newfile
bert: ~> ls -l novo arquivo
-rw-rw-r-- 1 bert bert
0 28 de fevereiro 13:52 newfile
bert: ~> toque em newfile
bert: ~> ls -l novo arquivo
-rw-rw-r-- 1 bert bert
Arquivos versus diretórios
Um diretório obtém mais permissões por padrão: ele sempre tem o executar permissão. Se não fosse assim, não seria acessível. Experimente fazer o chmodding em um diretório 644!
Se você entrar em outro grupo usando o novogrp comando, a máscara permanece inalterada. Portanto, se for definido como 002, os arquivos e diretórios que você criar enquanto estiver no novo grupo também estarão acessíveis aos outros membros desse grupo; você não tem que usar chmod.
A raiz o usuário geralmente tem permissões de criação de arquivo padrão mais restritas:
[root @ estoban root] # umask 022
[root @ estoban root] # umask 022
Esses padrões são definidos em todo o sistema nos arquivos de configuração de recursos do shell, por exemplo / Etc / bashrc or
/ etc / profile. Você pode alterá-los em seu próprio arquivo de configuração de shell, consulte o Capítulo 7 sobre como personalizar seu ambiente de shell.
3.4.2.4. Alterar a propriedade do usuário e do grupo
Quando um arquivo pertence a um usuário ou grupo errado, o erro pode ser reparado com o chown (alterar proprietário) e chgrp (alterar grupo) comandos. Alterar a propriedade do arquivo é uma tarefa administrativa frequente do sistema em ambientes onde os arquivos precisam ser compartilhados em um grupo. Ambos os comandos são muito flexíveis, como você pode descobrir usando o --Socorro opção.
A chown pode ser aplicado para alterar a propriedade do usuário e do grupo de um arquivo, enquanto chgrp apenas muda a propriedade do grupo. Obviamente, o sistema verificará se o usuário que está emitindo um desses comandos tem permissões suficientes para o (s) arquivo (s) que deseja alterar.
Para alterar apenas a propriedade do usuário de um arquivo, use esta sintaxe:
chown novo_usuário lima
Se você usar dois-pontos após o nome do usuário (consulte as páginas de informações), a propriedade do grupo também será alterada para o grupo primário do usuário que está emitindo o comando. Em um sistema Linux, cada usuário tem seu próprio grupo, portanto, este formulário pode ser usado para tornar os arquivos privados:
jacky: ~> id
uid = 1304 (jacky) gid = (1304) grupos = 1304 (jacky), 2034 (pprojeto)
jacky: ~> ls -l meu_report
-rw-rw-r-- 1 projeto jacky 29387 15 de janeiro 09:34 my_report jacky: ~> chown jacky: meu_relatório
jacky: ~> chmod ou my_report
jacky: ~> ls -l meu_report
-rw-rw ---- 1 jacky jacky 29387 15 de janeiro 09:34 meu_report
jacky: ~> id
uid = 1304 (jacky) gid = (1304) grupos = 1304 (jacky), 2034 (pprojeto)
jacky: ~> ls -l meu_report
-rw-rw-r-- 1 projeto jacky 29387 15 de janeiro 09:34 my_report jacky: ~> chown jacky: meu_relatório
jacky: ~> chmod ou my_report
jacky: ~> ls -l meu_report
-rw-rw ---- 1 jacky jacky 29387 15 de janeiro 09:34 meu_report
If jacky gostaria de compartilhar este arquivo, sem ter que dar permissão a todos para gravá-lo, ele pode usar o
comando chgrp:
jacky: ~> ls -l relatório-20020115.xls
-rw-rw ---- 1 jacky jacky 45635 15 de janeiro 09:35 relatório-20020115.xls jacky: ~> relatório do projeto chgrp-20020115.xls
jacky: ~> chmod o = report-20020115.xls
jacky: ~> ls -l relatório-20020115.xls
-rw-rw ---- 1 projeto jacky 45635 15 de janeiro 09:35 relatório-20020115.xls
jacky: ~> ls -l relatório-20020115.xls
-rw-rw ---- 1 jacky jacky 45635 15 de janeiro 09:35 relatório-20020115.xls jacky: ~> relatório do projeto chgrp-20020115.xls
jacky: ~> chmod o = report-20020115.xls
jacky: ~> ls -l relatório-20020115.xls
-rw-rw ---- 1 projeto jacky 45635 15 de janeiro 09:35 relatório-20020115.xls
Dessa forma, os usuários do grupo projeto poderá trabalhar neste arquivo. Os usuários que não estão neste grupo não têm nenhuma relação com ele.
Ambos chown e chgrp pode ser usado para alterar a propriedade recursivamente, usando o -R opção. Nesse caso, todos os arquivos e subdiretórios subjacentes de um determinado diretório pertencerão ao determinado usuário e / ou grupo.
restrições
Na maioria dos sistemas, o uso do chown e chgrp os comandos são restritos para usuários não privilegiados. Se você não for o administrador do sistema, você não pode alterar as propriedades do usuário ou grupo por razões de segurança. Se o uso desses comandos não fosse restrito, usuários mal-intencionados poderiam atribuir a propriedade de arquivos a outros usuários e / ou grupos e alterar o comportamento dos ambientes desses usuários e até mesmo causar danos aos arquivos de outros usuários.
3.4.2.5. Modos especiais
Para que o administrador do sistema não se preocupe em resolver problemas de permissão o tempo todo, direitos especiais de acesso podem ser concedidos a diretórios inteiros ou a programas separados. Existem três modos especiais:
• Modo sticky bit: Após a execução de um trabalho, o comando é mantido na memória do sistema. Originalmente, esse era um recurso muito usado para economizar memória: grandes trabalhos são carregados na memória apenas uma vez. Mas hoje em dia a memória é barata e existem técnicas melhores para gerenciá-la, por isso ela não é mais usada por seus recursos de otimização em arquivos únicos. Quando aplicado a um diretório inteiro, entretanto, o sticky bit tem um significado diferente. Nesse caso, um usuário só pode alterar arquivos neste diretório quando for o proprietário do arquivo ou quando o arquivo tiver as permissões apropriadas. Este recurso é usado em diretórios como
/ var / tmp, que devem ser acessíveis a todos, mas onde não é apropriado que os usuários alterem ou excluam os dados uns dos outros. O bit pegajoso é indicado por um t no final do campo de permissão de arquivo:
marca: ~> ls -ld / var / tmp
drwxrwxrwt 19 raiz raiz
8192 16 de janeiro 10:37 / var / tmp /
marca: ~> ls -ld / var / tmp
drwxrwxrwt 19 raiz raiz
O sticky bit é definido usando o comando chmod o + t anuário. A origem histórica do "t" está no UNIX ' salvar acesso de texto recurso.
. SUID (definir ID do usuário) e SGID (definir ID do grupo): representado pelo caractere s no campo de permissão do usuário ou grupo. Quando este modo é definido em um arquivo executável, ele será executado com as permissões do usuário e do grupo no arquivo em vez de com as do usuário que está emitindo o comando, dando acesso aos recursos do sistema. Discutiremos isso com mais detalhes no Capítulo 4.
• SGID (definir ID do grupo) em um diretório: neste caso especial, todos os arquivos criados no diretório terão o mesmo proprietário do grupo que o próprio diretório (enquanto o comportamento normal seria que os novos arquivos fossem propriedade dos usuários que os criaram). Dessa forma, os usuários não precisam se preocupar com a propriedade dos arquivos ao compartilhar diretórios:
mimi: ~> ls -ld / opt / docs
drwxrws --- 4 usuários root
4096 25 de julho de 2001 docs /
mimi: ~> ls -ld / opt / docs
drwxrws --- 4 usuários root
mimi: ~> ls -l / opt / docs
-rw-rw ---- 1 usuários mimi
345672 30 de agosto de 2001-Council.doc
mimi: ~> ls -l / opt / docs
-rw-rw ---- 1 usuários mimi
Esta é a maneira padrão de compartilhar arquivos no UNIX.
Os arquivos existentes permanecem inalterados!
Os arquivos que estão sendo movidos para um diretório SGID, mas foram criados em outro lugar, mantêm o usuário original e o proprietário do grupo. Isso pode ser confuso.