A exclusão de um diretório requer permissão de gravação em seu pai. As permissões e propriedade do diretório são irrelevantes. Portanto, se você quiser impedir a exclusão de /home/theuser/web , é necessário e suficiente¹ para garantir que o usuário não tenha permissão de gravação em /home/theuser .
Observe que quando você escreve "a chown root:root ajuda aqui", isso é no diretório pai para impedir sua exclusão, e no próprio diretório para impedir a adição ou removendo arquivos (mas não modificando arquivos existentes).
Note também que para tornar /home/theuser/web/log somente leitura de uma maneira útil, não é suficiente garantir que o usuário não tenha permissão de gravação (e não possua o diretório). Se o usuário tiver permissão para gravar em /home/theuser/web (ou /home/theuser ou /home ou / ), eles poderão renomear /home/theuser/web/log (ou /home/theuser/web , etc.) e criar um novo diretório log , que eles possuiriam.
Para /home/theuser/web/www e /home/theuser/web/www/public , você pode tornar www e www/public de propriedade de root, mas conceda ao usuário permissões de gravação e defina o bit adesivo em www . Quando um diretório tem o bit sticky, há um requisito adicional para remover arquivos dentro dele (incluindo subdiretórios imediatos - os diretórios são um tipo de arquivo): um usuário pode remover apenas os arquivos que possui. Dessa forma, public só será removível pelo seu proprietário (root), mas qualquer outra coisa pode ser livremente manipulada pelo usuário.
chown root:root web/www web/www/public
chmod u=rwx,go= web/www web/www/public
chmod +t web/www
setfacl -m u:theuser:rwx web/www web/www/public
Note que pode ser qualquer propriedade que não seja do usuário, não precisa ser raiz.
¹ Sob suposições razoáveis, ou seja, todos os direitos de passagem necessários, nenhuma regra relevante do SELinux, etc.