Por que o diretório var não é específico do usuário?

2

Sou bastante novo no mundo do UNIX, então sinta-se à vontade para me informar se a minha pergunta é boba.

O chamado Padrão da Hierarquia do Sistema de Arquivos indica que o diretório /var deve continuar dados como logs e caches incluindo, mas não limitados a pacotes locais:

/var contains variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files.

...

/var is specified here in order to make it possible to mount /usr read-only. Everything that once went into /usr that is written to during system operation (as opposed to installation and software maintenance) must be in /var

Estou pensando principalmente como ele deve funcionar no sistema multiusuário local. /var é o tipo de diretório global de um sistema e todos os dados e logs de cache de todos os usuários parecem ser compartilhados entre eles. Não é considerado errado de alguma forma? Quero dizer que programas (pacotes) sendo lançados em nome de diferentes usuários usarão o mesmo cache, sem falar no fato de que todo usuário local pode ler logs e procurar dados de cache uns dos outros. Por favor me ajude a entender esse conceito. Obrigado.

    
por The Dreams Wind 12.06.2017 / 22:26

3 respostas

2

/var is kind of global directory for a system, and all cache-data and logs of all users appear to be shared among them.

Isso está parcialmente incorreto. Nem todos os cache e logs são armazenados em /var , e o que é armazenado lá não é necessariamente compartilhado por todos os usuários. Aplicativos e / ou o próprio sistema operacional armazenado em /var .

A única exceção é um diretório que é efetivamente compartilhado e gravável por todos os usuários: /var/tmp . Usuários e / ou aplicativos decidindo armazenar algo aqui ainda podem proteger os subdiretórios e arquivos que eles criam com permissões de arquivos unix.

I mean that programs (packages) being launched on behalf of different users will use the same cache, let alone the fact that all local user can read logs and look through cache-data of each other.

Não, usuários diferentes geralmente usam cache diferente. Existem também casos em que um cache comum é um sinal de adição.

Quando dados confidenciais / pessoais são armazenados em /var , esses dados são protegidos pelo aplicativo para que os usuários não recebam o direito de ver os dados de outras pessoas; por exemplo. o spool de correio não é legível por usuários (não raiz).

    
por 13.06.2017 / 01:14
3

O diretório /var é para logs e caches do system . Logs de usuários individuais (raros) e caches (freqüentes) são mantidos no diretório pessoal do usuário.

    
por 12.06.2017 / 22:34
2

A maioria dos problemas subjacentes pode ser explorada com um único exemplo, como a impressora. Alice realmente não quer que o lpr (1) bloqueie até que Joe termine de imprimir sua tese. O sistema não quer que Alice exclua seu arquivo antes de ser impresso. A solução óbvia é colocar uma cópia do arquivo em um diretório de spool até que esteja em segurança no papel.

Tradicionalmente, os trabalhos de impressão foram enfileirados em / usr / spool / lp. O problema, como observado, é que isso efetivamente proíbe a montagem / usr somente leitura. Tenha em mente que o problema se estende a todas as filas (mail, uucp, etc) e todos os logs do sistema. Isso causa um problema secundário, a saber, que o tamanho de / usr é totalmente independente do tamanho da instalação do sistema operacional. Imagine que você esteja provisionando um novo sistema com 35 MB de binários. Quão grande você precisa para fazer a partição / usr? Pergunta de truque! 35 MB, mais tempo necessário para reter os logs vezes o uso médio de e-mail, impressoras, newsreaders.

Movendo tudo para / var resolve perfeitamente o problema somente leitura e faz incursões significativas nos pesadelos administrativos. Por um lado, permite a fácil medição de quanto espaço os dados estão usando. Também é um pouco menos doloroso estender ou substituir uma única partição do que se preocupar com / usr / spool, / usr / log, etc.

O armazenamento do estado do sistema distribuído entre os diretórios home não lhe compra nada, mas aumenta a complexidade. Em vez de um único diretório global para gerenciar permissões, você tem centenas de outras. Além disso, você pode adicionar a sobrecarga de varredura contínua em todos esses diretórios.

Menos óbvio é o fato de os diretórios pessoais não serem específicos do sistema. Os montados em rede são bastante comuns. É provável que, ao imprimir um arquivo, você queira apenas que ele seja impresso no local onde você está conectado, e não em todas as máquinas nas quais seu diretório pessoal está montado. A disponibilidade também é um problema, pois os diretórios pessoais podem desaparecer se o servidor de arquivos pirar. Ou para adicionar um toque mais moderno, se o diretório inicial estiver criptografado e o sistema não puder lê-lo.

Historicamente, o armazenamento global serviu de cache para informações públicas. Na ausência de um servidor de notícias, os artigos usenet eram baixados em lotes e armazenados em um local central. Afinal, não há motivo para duplicar o grande feed de notícias em vários usuários. Filas centralizadas também servem como um buffer para informações de entrada. Considere a fila de mensagens, que pode não ser capaz de depositar mensagens em seu diretório pessoal criptografado. (Disponibilidade novamente) Ou o caso em que você recebe uma tonelada de spam enquanto está de férias. O sistema deve descartar todas as mensagens depois que você exceder sua cota de disco ou salvá-las e deixar que você as classifique depois?

    
por 13.06.2017 / 04:43