Bash가 파일에 대해 (분명히) 상충되는 정보를 제공하는 이유는 무엇입니까?

Bash가 파일에 대해 (분명히) 상충되는 정보를 제공하는 이유는 무엇입니까?

배경

RHEL 5 클러스터를 개발 중입니다. 내 Fortran 프로그램이 이 파일을 읽을 수 있기를 원합니다./home/bob/inputs/input_1

  1. Bob에게 다음 내용을 모두 읽을 수 있는 권한을 요청합니다 inputs.

    [bob@server]$ chmod -R a+r /home/bob/inputs/*
    
  2. 공유 디렉터리에 연결했습니다.

    [david@server]$ ln -s /home/bob/inputs/ /home/share/inputs/
    
  3. 내 (Fortran) 프로그램은 읽기를 시도 /home/share/inputs/input_1하고 다음과 같이 말합니다.

    File /home/share/inputs/input_1 not found!
    
  4. 나는 파일을 직접 찾아보았습니다 a+rwx. (Bob은 그 과정에서 권한을 부여받았습니다.)

    [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) inputs_1존재하고 b) 모든 사용자가 rwx권한을 가지고 있다는 결론을 내립니다.

  5. 나는 읽으려고 노력한다:

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

    그리고 그것은 존재하지 않는다고 들었습니다.

  6. 대상 파일을 찾고 있는데 /home/bob/inputs/input_1권한이 거부되었습니다.

    [david@server]$ls -ltrh /home/bob/inputs/input_1
    ls: /home/bob/inputs/input_1 Permission denied
    
  7. ls디렉토리 내용을 보면 이상한 일이 발생합니다.

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

    Bob이 이렇게 하면 다음과 같은 결과를 얻게 됩니다.

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

질문:

  • (나에게) 분명히 일관성이 없는 이 행동에 대한 간단한 설명이 있습니까?
  • 난 어디로 가야 해?

답변1

실행 권한이 필요합니다 /home/bob/inputs. 다음을 통해 이를 설정할 수 있습니다.

chmod a+x /home/bob/inputs

답변2

달리기 ls -ld /home/bob/inputs/. bob은 디렉토리에 대한 읽기 권한을 부여하지만 실행 권한은 부여하지 않는다는 것을 알게 될 것입니다 drwxr--r--. 즉, 디렉토리에서 읽기 권한을 사용하면 파일 목록을 볼 수 있고 실행 권한을 사용하면 파일에 액세스할 수 있습니다. 디렉토리에. 드문 경우지만 디렉터리를 실행 가능하게 만드는 것이 유용하지만 그 반대는 쓸모가 없습니다. 거의 항상 디렉토리는 액세스 가능(읽기 및 실행 가능)하거나 액세스 불가능(읽기 가능 또는 실행 불가능)합니다.

바라보다디렉터리를 열려면 실행(X) 권한이 필요한 이유는 무엇입니까?더 많은 설명을 원하시면.

해결 방법: Bob을 실행시키십시오 chmod a+rx ~/inputs.

관련 정보