Pergunta sobre inode e comando de permissão

0

Alguém pode me dizer se isso é verdadeiro ou falso?

O inode de um arquivo tem os endereços dos blocos que contêm o conteúdo do arquivo?

Também para o comando de permissão, havia uma pergunta perguntando se eu tinha o direito de alterar as permissões para o arquivo existente, onde a condição de proprietário (r, w) g (r). Então eu pensei que é aplicável para chmod 640 filename.txt e chmod u+rw g+r filename.txt , mas aparentemente apenas o 640 está correto. Alguém sabe por que o u + rw não faz parte da resposta?

    
por user37427 18.04.2013 / 14:41

3 respostas

3

Se eu entendi sua pergunta corretamente, eu diria que isso depende. Um Inode normalmente pode vincular a 12 blocos de dados, do artigo da wikipedia :

In the past, the structure may have consisted of eleven or thirteen 
pointers, but most modern file systems use fifteen pointers. These 
pointers consist of (assuming 15 pointers in the inode): 

- Twelve pointers that directly point to blocks of the file's data 
     (direct pointers) 
- One singly indirect pointer (a pointer that points to a block of 
     pointers that then point to blocks of the file's data) 
- One doubly indirect pointer (a pointer that points to a block of 
     pointers that point to other blocks of pointers that then point to 
     blocks of the file's data) 
- One triply indirect pointer (a pointer that points to a block of 
     pointers that point to other blocks of pointers that point to other 
     blocks of pointers that then point to blocks of the file's data)

Assim, enquanto o arquivo for < 12 blocos de dados * (o tamanho do bloco) e o Inode liga-se diretamente aos blocos de dados. Se o arquivo for > 12 blocos então estará usando uma combinação de blocos indiretos e blocos indiretos duplos.

Vocêpodeverquantosblocosumarquivoestáconsumindousandoocomandostat:

comandostatstat#1

%stat/bin/lsFile:'/bin/ls'Size:117144Blocks:232IOBlock:4096regularfileDevice:fd00h/64768dInode:2496176Links:1Access:(0755/-rwxr-xr-x)Uid:(0/root)Gid:(0/root)Access:2013-04-1716:24:20.593606056-0400Modify:2010-11-0307:43:02.000000000-0400Change:2011-09-0920:25:22.133239242-0400

comandostatstat#2

%stat/etc/httpd/conf/httpd.confFile:'/etc/httpd/conf/httpd.conf'Size:34417Blocks:72IOBlock:4096regularfileDevice:fd00h/64768dInode:3147109Links:1Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)Access:2012-09-2621:04:47.303641015-0400Modify:2010-10-2706:01:44.000000000-0400Change:2010-12-1819:30:00.719999998-0500

perguntachmod

Quantoaoseuproblemacomchmod,acreditoquevocêprecisasepararsuaspermissõessimbólicas(u+rg+r)comumavírgula,nãoumespaço,daseguinteforma:

%chmodu+rw,g+rfilename.txt

referências

Aquiestãoalgunsrecursosadicionaissobreinodesquevocêpodequererlerparaobterummelhorentendimentosobreinodes.

por 18.04.2013 / 15:38
1

O inode normalmente armazena ponteiros para os blocos de dados com ponteiros diretos. Se isso não for suficiente, serão usados indicadores indiretos e duplamente indiretos.

Assim, apenas para arquivos menores (12 blocos) ele realmente tem os endereços dos blocos com o conteúdo do arquivo.

    
por 18.04.2013 / 15:31
0

Sim, o inode contém a lista dos blocos que "hospedam" o arquivo no disco. Basicamente, o inode contém todas as informações sobre um arquivo, exceto seu nome - o nome é "emparelhado" junto com inode-numbers nos diretórios (um tipo dos chamados "arquivos especiais").

Você está um pouco incerto na segunda questão ... Você é o proprietário do arquivo ou não? Se você é o dono; sim, então você pode alterar a permissão do arquivo.

Dependendo de como as permissões são definidas antes (o umask), você pode estar certo ou pode estar errado. Você adiciona rw-permission ao proprietário e lê permissão para o grupo, mas não remove nenhuma permissão existente de outras pessoas. Nem você remove qualquer permissão de execução. Pode ser melhor usar "=" em vez de "+" (ou "-"), pois "=" define a permissão para algo explícito.

Um caminho mais correto seria:

chmod u=rw,g=r,o= file

ou alternativamente:

chmod a=,u+rw,g+r file (Here you first set all rights to nothing)

Embora, neste caso, seja provavelmente mais simples usar:

chmod 640 file

Com um pouco de prática, não é tão difícil calcular uma permissão em octal ...

    
por 18.04.2013 / 15:40

Tags