디렉터리를 생성하는 데 필요한 권한

디렉터리를 생성하는 데 필요한 권한

기존 디렉터리 트리 아래에 하위 디렉터리를 만들려고 합니다. 중요한 하위 디렉터리를 만드는 것이 디렉터리의 권한뿐인지, 아니면 상위 디렉터리도 생성되는 디렉터리의 권한에 영향을 미치는지 궁금합니다.

저는 이 작업을 프로그래밍 방식으로 수행할 것이므로 광범위한 시나리오를 다루었는지 확인해야 합니다.

답변1

예, 중요합니다. 디렉터리를 생성하려면 상위 디렉터리에 쓸 수 있어야 합니다. 디렉토리를 생성하는 것은 파일을 생성하는 것과 같습니다(결국,모든 것이 파일이다) 따라서 상위 항목에 대한 쓰기 권한이 필요합니다. 또한 상위 디렉터리에 액세스할 수 있어야 합니다. 즉, 트리의 모든 디렉터리에 대한 액세스를 수행해야 합니다.

$ sudo tree -pgu 
.
└── [drwxr-xr-x terdon terdon]  dir1
    └── [drwx------ bob      bob     ]  dir2
        └── [drwxr-xr-x terdon terdon]  dir3

    

위의 예에서 dir2는 에 속합니다 bob. 즉, cd해당 항목이나 cd해당 하위 디렉터리에 들어갈 수 없습니다 dir3.

$ cd dir1/dir2/
bash: cd: dir1/dir2/: Permission denied
$ cd dir1/dir2/dir3
bash: cd: dir1/dir2/dir3: Permission denied

    

나 자신에게 실행 액세스 권한을 부여하면 에서 dir2이동할 수 있지만 여전히 다음 위치에 파일/디렉터리를 만들 수 있는 권한이 없습니다 .dir2dir2/dir3dir2

$ sudo tree -pgu 
.
└── [drwxr-xr-x terdon terdon]  dir1
    └── [drwx--x--x bob      bob     ]  dir2
        └── [drwxr-xr-x terdon terdon]  dir3

$ cd dir1/dir2/
$ ls
ls: cannot open directory '.': Permission denied
$ touch file
touch: cannot touch 'file': Permission denied

위에서 볼 수 있듯이 디렉토리에 들어갈 수는 있지만 읽기 액세스 권한이 없기 때문에 내용을 나열할 수 없으며 쓰기 액세스 권한이 없기 때문에 거기에 아무것도 만들 수 없습니다. 

따라서 디렉터리 내에 새 파일이나 디렉터리를 만들려면 다음을 수행해야 합니다.

  • 대상 디렉터리의 각 상위 디렉터리에 대한 권한을 실행합니다.

  • 대상 디렉터리에 대한 실행 및 쓰기 권한입니다. 

관련 정보