다른 사용자/그룹을 사용하여 특정 폴더에서 파일 생성/편집

다른 사용자/그룹을 사용하여 특정 폴더에서 파일 생성/편집

다음 시나리오가 가능한지 알고 싶습니다.

저는 www-admin이라는 사용자이고 www-admin 그룹에 속해 있습니다. 저도 sudoer입니다.

폴더에 생성된 모든 파일에 그룹 과 사용자가 /var/www/domain포함되기를 원합니다 .domaindomain

내가 사용자로서 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 의미 체계를 사용하고 그룹에만 의존하여 최종 목표를 달성할 수 있습니다.

관련 정보