디렉토리에만 ls 허용

디렉토리에만 ls 허용

내 그룹에 속하지 않은 모든 사용자가 폴더에 대해 ls 작업만 수행할 수 있도록 폴더에 대한 권한을 어떻게 설정합니까? -와 r의 차이점을 이해하지 못합니다.

답변1

중요한 플래그는 디렉토리의 "실행" 플래그이며 실제로는 디렉토리의 "탐색 가능" 플래그입니다. 설정하지 않으면 경로에 디렉터리를 사용할 수 없습니다. 따라서 1) 디렉토리에 CD를 넣을 수 없으며, 2) 디렉토리에 있는 파일을 사용할 수 없습니다.

디렉터리와 파일로 테스트 ritg를 설정해 보겠습니다.

>>mkdir listonly
>>touch listonly/uselessfile

여태까지는 그런대로 잘됐다:

>>ls listonly/
uselessfile

디렉터리의 실행 가능 플래그를 변경합니다.

>>chmod -x listonly

더 이상 CD를 ​​통해 액세스할 수 없습니다.

>>cd listonly
bash: cd: listonly: Permission denied

파일은 다음을 사용할 때 볼 수 있습니다 ls.

>>ls listonly/
uselessfile

그러나 많은 경우 ls별칭을 사용하면 각 파일의 메타데이터(플래그, 타임스탬프, 크기 등)를 확인해야 하는 몇 가지 옵션이 추가되는데, 경로에 디렉터리가 필요하기 때문에 이 작업을 수행할 수 없습니다(나에게는 그랬습니다 ls --color=auto'). 따라서 일반 형식을 사용해야 합니다 ls. 그렇지 않으면 보기 흉한 오류가 있는 파일을 얻게 됩니다.

>>ls listonly/
ls: cannot access 'listonly/uselessfile': Permission denied
uselessfile

파일 브라우저는 일반적으로 작업 디렉터리를 대상 디렉터리로 변경하여 내용을 나열하므로 GUI 인터페이스에서는 제대로 작동하지 않을 수 있습니다.

답변2

예:

#change current directory to /tmp/
vodka@vodka-PC:~$ cd /tmp/

#create my_folder directory in tmp
vodka@vodka-PC:/tmp$ mkdir my_folder

#chnage directory permissions to 775 
(all people can show dir content and make cd, 
but can not remove or create new files)
vodka@vodka-PC:/tmp$ chmod 775 my_folder/

#check permissions
vodka@vodka-PC:/tmp$ ls -ld my_folder
drwxrwxr-x 2 vodka vodka 4096 окт 20 11:26 my_folder

#create new test file
nano ./my_folder/test_file.txt

#chage file permission to 770 (only owner and member of groups can show file content and modify it)
vodka@vodka-PC:/tmp$ chmod 770 ./my_folder/test_file.txt

#test it. Switch to postgres user and show dir content. We see files in directory
vodka@vodka-PC:/tmp$ sudo su - postgres
postgres@vodka-PC:~$ ls -l /tmp/my_folder/
-rwxrwx--- 1 vodka vodka 4 окт 20 11:27 test_file.txt
#try to show file content, remove or create new files in dir
cat: /tmp/my_folder/test_file.txt: Permission denied
postgres@vodka-PC:~$ >/tmp/my_folder/test_file_2.txt
-bash: /tmp/my_folder/test_file_2.txt: Permission denied
postgres@vodka-PC:~$ rm /tmp/my_folder/test_file.txt
rm: remove write-protected regular file '/tmp/my_folder/test_file.txt'? y
rm: cannot remove '/tmp/my_folder/test_file.txt': Permission denied

따라서 다른 사용자는 파일 목록만 표시할 수 있습니다.

관련 정보