1. Descrição do Problema & Contexto
Durante a execução do pipeline ./c2f project:update-all [REDACTED]-local --confirmar-remoto, a etapa 1/8 (Sincronização Core) conclui com sucesso, mas a etapa 2/8 (Atualização de Banco de Dados) falha imediatamente com o seguinte erro retornado pelo SSH:
[2026-09-17 17:03:42] Running database updates...
[2026-09-17 17:03:42] Project deploy: resources will be overwritten and marked with '[REDACTED]-local'
✖ ERROR bash: line 1: cd: [REDACTED] Permission denied
[ERROR] An error occurred during database updates.Causa Raiz Mapeada
-
No HestiaCP / Linux multi-tenant, os diretórios de cada tenant (ex:
[REDACTED]) possuem permissões restritas (ex:750ou700, pertencentes ao usuário[REDACTED]). -
A conexão SSH é autenticada com o usuário de infraestrutura/desenvolvedor (
[REDACTED]). -
Na biblioteca
ai-workspace/en/scripts/lib/project-transport.sh, a funçãoproject_transport_remote_exec()monta o comando da seguinte forma:"$PT_SSH_BIN" "${PT_SSH_OPTS[@]}" "$PT_SSH_TARGET" \ "cd $(printf '%q' "$PT_REMOTE_PATH") && $remote_cmd"onde
$remote_cmdvirasudo -u [REDACTED] php .... -
Como o
cdé executado antes da elevação comsudo, o shell do usuáriootaviotenta navegar para[REDACTED]sem permissão de travessia/leitura na pasta do tenant, abortando comcd: Permission denied. -
A mudança de diretório (
cd) e a execução do comando PHP precisam ocorrer dentro do contexto elevado do usuário alvo (ex:sudo -u $PT_SSH_RUN_AS sh -c "cd $(printf '%q' "$PT_REMOTE_PATH") && $remote_cmd"ou comando encapsulado).
2. Escopo Técnico de Alterações
Módulo 1: Biblioteca de Transporte (ai-workspace/en/scripts/lib/project-transport.sh)
-
Em
project_transport_remote_exec():-
Garantir que a troca de diretório (
cd "$PT_REMOTE_PATH") seja executada dentro da casca do usuário configurado emssh_run_as/PT_SSH_RUN_AS(usandosudo -u $PT_SSH_RUN_AS sh -c "cd ... && ..."ousudo -u $PT_SSH_RUN_AS -- bash -c ...), permitindo acesso transparente a diretórios restritos do tenant. -
Preservar compatibilidade quando
PT_SSH_RUN_ASnão estiver definido (execução direta sob o usuário [REDACTED]).
-
Módulo 2: Testes Automatizados
-
Em
tests/Unit/PHP/ProjectSshDeployReq034Test.php:-
Atualizar/adicionar asserções garantindo que
project_transport_remote_execencapsule ocde o comando remoto sob osudo -uquandossh_run_asestiver preenchido.
-
Módulo 3: Governança & Skills
-
Em
.codex/skills/c2f-shell-and-windows-traps/SKILL.md(e nos 4 espelhos):-
Documentar a armadilha de
cdprévio sem elevação em ambientes multi-tenant SSH e a necessidade de encapsulamento comsudo -u.
-
3. Critérios de Validação e Aceite
-
Execução Remota sem Erro de Permissão:
-
A etapa 2/8 (Atualização do Banco) de
./c2f project:update-all [REDACTED]-local --confirmar-remotoexecuta o script PHP remoto com sucesso sem falhar porcd: Permission denied.
-
-
Suíte de Testes 100% Verde:
-
bash -nsem erros nos scripts shell. -
PHPUnit 100% passando.
-
-
Evidências Registradas:
-
Registrar evidências em
sdd/implementation/BATCH-172.md,BATCH-INDEX.mdeCURRENT.md.
-