다음 시나리오가 가능한지 알고 싶습니다.
저는 www-admin이라는 사용자이고 www-admin 그룹에 속해 있습니다. 저도 sudoer입니다.
폴더에 생성된 모든 파일에 그룹 과 사용자가 /var/www/domain
포함되기를 원합니다 .domain
domain
내가 사용자로서 www-admin
모든 도메인 내에서 파일을 생성하고 편집하는 경우 /var/www/domain
: domains.
가능합니까?
답변1
디렉토리를 생성하는 프로세스의 유효 그룹 ID에 관계없이 생성된 파일이 특정 그룹에 속하도록 디렉토리를 설정할 수 있습니다. 이를 BSD 의미론이라고 하며 이를 활성화하려면 디렉터리에 대해 SGID 비트를 설정해야 합니다.
chgrp domain /var/www/domain
chmod g+s /var/www/domain
이는 이미 에 있는 파일 및 디렉토리 그룹을 변경하지 않으므로 /var/www/domain
이를 수동으로 처리해야 합니다(예: 위와 함께) -R
. chgrp
이 디렉토리 내에 이후에 생성된 모든 하위 디렉토리도 SGID를 상속하여 해당 하위 디렉토리에 대한 BSD 의미 체계를 자동으로 활성화합니다.
그러나 소유자에게는 동일한 의미가 불가능합니다.
/var/www/domain
소유자 및 그룹에 대해 이를 달성해야 하는 경우 파일을 생성하는 코드가 유효한 사용자 domain
및 유효한 그룹 으로 실행되는지 확인해야 할 수 있습니다 domain
. sudo
이를 수행하려면 다음 방법을 사용할 수 있습니다 .
sudo -u domain -g domain your_command
domain
기본 사용자 그룹인 경우 domain
다음과 같이 충분합니다.
sudo -u domain your_command
이 솔루션은 소유자와 그룹을 쉽게 처리하므로 BSD 의미 체계가 필요하지 않습니다.
파일을 생성하는 프로세스의 유효 사용자 및 그룹을 변경하고 싶지 않은 경우(예: 관련되지 않은 다른 많은 기능을 수행하는 대규모 서버이기 때문에) 파일을 생성하는 기능의 일부를 외부화하고 해당 파일을 별도의 프로세스로 분리하여 유효 UID 및 GID를 그에 따라 변경할 수 있습니다. 또는 BSD 의미 체계를 사용하고 그룹에만 의존하여 최종 목표를 달성할 수 있습니다.