저는 PHP 애플리케이션으로 sqlite3을 사용하고 있습니다. 내가 사용하는 함수는 PHP에 내장된 Sqlite3 패키지에서 가져온 것입니다.
테스트를 위해 DB를 다시 시작하는 등 일반적인 CRUD 작업을 수행하지 않습니다. 여기에는 테이블 삭제 및 더미 데이터 재삽입이 포함됩니다.
DB 파일에 대한 파일 권한은 sudo chmod a+rw
및 입니다 sudo chown $USER:www-data
.
이것은 모두 좋습니다.
하지만 적어도 하루에 한 번은 쓰기 금지 오류가 발생합니다. 데이터베이스를 보면 권한과 소유권이 변경되었습니다.
사용자 및 그룹을 로 변경 $USER:$USER
하고 파일 권한을 다음으로 변경합니다.-rw-r--r--
이 동작의 원인은 무엇입니까?
운영 체제: 데비안 12
답변1
sqlite3은 데이터베이스에서 작동할 때 복사본을 만들고 업데이트한 다음 원본 복사본을 삭제하고 이름을 바꿉니다.
이런 일이 발생하면 권한이 기본값으로 재설정됩니다. 다음을 수행하여 기본값을 변경할 수 있습니다.
- 기본 그룹을 설정하려면 상위 디렉터리의 그룹을 변경하고 그룹을 붙여넣습니다
sudo chmod g+s .
(.
없는 경우 상위 디렉터리의 이름으로 바꿉니다). 이렇게 하면 해당 디렉터리에 생성된 모든 파일이 해당 디렉터리의 그룹을 상속하게 됩니다. - 기본 그룹 쓰기 권한을 설정하려면 umask를 변경하세요. umask 000 또는 umask 002(현재는 아마도 022)가 필요할 수 있습니다. 이 작업은 PHP 프로세스 시작 시(또는 시작하기 전에) 수행해야 할 수도 있습니다.