Por que o bash está me dando (aparentemente) informações conflitantes sobre um arquivo?

3

Antecedentes

Estou trabalhando em um cluster do RHEL 5. Eu quero que meu programa Fortran leia o arquivo /home/bob/inputs/input_1

  1. Pedi a Bob que me desse permissão para ler todo o conteúdo de inputs :

    [bob@server]$ chmod -R a+r /home/bob/inputs/*
    
  2. Eu os vinculei a um diretório compartilhado:

    [david@server]$ ln -s /home/bob/inputs/ /home/share/inputs/
    
  3. O programa My (Fortran) tentou ler /home/share/inputs/input_1 e disse:

    File /home/share/inputs/input_1 not found!
    
  4. Eu tentei localizar o arquivo eu mesmo (no processo, bob deu a+rwx permissões):

    [david@server]$ls -ltrh /home/share/inputs/input_1
    lrwxrwxrwx 1 bob bob 33 Oct 25 15:42 /home/share/inputs/input_1 -> /home/bob/inputs/input_1
    

    A partir disso, concluí que a) inputs_1 existe eb) todos os usuários têm rwx de permissão.

  5. Eu tentei ler:

    [david@server]$ more /home/share/inputs/input_1 
    /home/share/inputs/input_1: No such file or directory
    

    E me disseram que não existe.

  6. Eu procuro o arquivo de destino /home/bob/inputs/input_1 , mas não tenho permissão.

    [david@server]$ls -ltrh /home/bob/inputs/input_1
    ls: /home/bob/inputs/input_1 Permission denied
    
  7. Algo bizzare acontece se eu ls o conteúdo do diretório:

    [david@server]$ls -ltrh /home/bob/inputs/
    ?--------- ? ? ? ?            ? input_1
    ?--------- ? ? ? ?            ? input_2
    ?--------- ? ? ? ?            ? input_3
    ... (n-4 lines omitted) 
    ?--------- ? ? ? ?            ? input_n
    

    embora se bob fizer isso, ele fica:

    -rwxrwxrwx 1 bob bob  269 May 24  input_1
    ... (n-2 lines omitted) 
    -rwxrwxrwx 1 bob bob 2.0K Jan 19  input_n
    

Perguntas:

  • Existe uma explicação simples para esse comportamento inconsistente aparentemente (para mim)?
  • Para onde eu vou daqui?
por David LeBauer 26.10.2012 / 21:52

2 respostas

4

Você precisa executar permissões em /home/bob/inputs . Você pode configurá-lo com:

chmod a+x /home/bob/inputs
    
por 26.10.2012 / 22:21
3

Execute ls -ld /home/bob/inputs/ . Acho que você verá que bob lhe deu permissão de leitura no diretório, mas não permissão de execução, ou seja, algo como drwxr--r-- . Em um diretório, a permissão de leitura permite ver a lista de arquivos enquanto a permissão de execução permite acessar arquivos no diretório. Existem raras circunstâncias em que é útil tornar um diretório executável e não legível; o contrário é bem inútil. Quase o tempo todo, um diretório deve ser acessível (legível e executável) ou não acessível (nem legível nem executável).

Veja Por que os diretórios precisam o executável (X) permissão para ser aberto? para mais explicações.

Solução: peça ao bob para executar chmod a+rx ~/inputs .

    
por 27.10.2012 / 00:59