docker-compose up -d --build
프로젝트를 실행하려면 명령을 실행해야 합니다 . 일부 컨테이너는 볼륨에 파일을 기록하며, 이 볼륨은 내 홈 폴더 내의 하위 폴더에 마운트됩니다.
나중에 내 사용자와 함께 이 폴더를 삭제하고 싶지만 technical
docker가 내가 알지 못하거나 내 시스템에 없는 다른 사용자로 하위 폴더를 생성하기 때문에 "sudo" 명령 없이는 폴더를 삭제할 수 없습니다.
technical@mysystem $ ls -l ~
drwxr-xr-x. 5 polkitd root 4096 Apr 21 16:18 data_1
drwxr-xr-x. 5 33 tape 4096 Apr 21 16:18 data_2
예: 33
내 시스템에서는 알 수 없는 사용자이고 tape
그룹은 알 수 없는 그룹입니다(docker에서 사용한다고 가정합니다).
technical@mysystem $ groups
technical wheel docker
technical@mysystem $ awk -F':' '{ print $1}' /etc/passwd | paste -sd " "
root bin daemon adm lp sync shutdown halt mail operator games ftp nobody systemd-network dbus polkitd sshd postfix technical
폴더에서 setuid
or 비트를 사용해 보았지만 setgid
결과는 동일합니다. docker 콘텐츠가 포함된 폴더를 삭제하려고 하면 sudo 권한 없이는 이 작업을 수행할 수 없다는 오류가 발생합니다.
technical@mysystem $ rm -R data_1/
rm: cannot remove ‘data_1/myfile’: Permission denied
질문:
- 이러한 폴더를 처리하는 올바른 방법은 무엇입니까?
technical
내 사용자(권한 없이)로 이러한 폴더(docker로 작성된)의 내용을 어떻게 삭제할 수 있습니까sudo
?- 이를 달성하려면 폴더에 어떤 권한을 설정해야 합니까?
- 이러한 파일/항목은 Linux 파일 시스템의 어디에 배치되어야 합니까?
- 이 상황에서 따라야 할 모범 사례와 패턴은 무엇입니까?
답변1
안타깝게도 Linux가 시스템 권한을 처리하는 방식으로 인해 읽기 및 실행 권한만 설정하기 때문에 현재 사용자 및 그룹으로 이러한 파일을 수정할 수 없습니다. 문제를 있는 그대로 해결하려면 루트 액세스가 필요합니다. 루트가 되면 다음 명령을 실행하여 파일이나 폴더의 소유권을 변경할 수 있습니다.chown technical:technical data1
이제 위의 사항이 옵션이 아니라고 가정하면 자신만의 폴더를 만들고 권한을 설정할 수 있습니다. 기술 그룹의 사용자가 사용할 수 있는 폴더를 생성하려면 기술 사용자로서 다음 명령을 실행하면 됩니다. mkdir data3
이렇게 하면 data3이라는 폴더가 생성되며 런타임 사용자와 그룹 모두 "기술"이어야 합니다.ls -l data3
폴더와 파일의 배치는 사용자에게 달려 있으며 일반적으로 시스템의 기존 데이터 흐름(있는 경우)을 따르는 것이 가장 좋습니다. 개인적으로 저는 이와 같은 파일을 /home/technical/Documents에 넣어서 기억하고 액세스하기가 더 쉽도록 하고 싶습니다. 특히 그룹에서 파일에 액세스하는 유일한 사람이 아닌 경우에는 더욱 그렇습니다.
모범 사례에 따르면 기술 그룹이 소유한 모든 파일은 해당 그룹의 구성원만을 위한 것입니다. 그룹이 사용할 파일이 포함된 폴더에 권한을 설정하면 이 작업을 수행할 수 있습니다. 이렇게 하면 setfacl -d -m g:technical:rw /home/technical/Docmuents
지정된 폴더에 생성된 새 파일에만 읽기 및 쓰기 권한이 적용됩니다. 물론 쓰기 액세스 권한을 추가하거나 rwx
그룹에 부여하지 않으려는 권한을 제거할 수도 있습니다.
불행히도 나는 docker에 대한 경험이 없지만 다른 서비스처럼 들리며 새 파일이 생성되는 위치와 해당 파일의 소유자를 지정하는 구성 파일이 있습니다. 이것이 귀하의 서버라면 추가 조사를 통해 이를 변경할 수 있습니다.