Ao enviar SCP para o meu servidor Fedora, um usuário continua recebendo erros por não conseguir modificar os carimbos de data / hora do arquivo ("tempo definido: operação não permitida"). O usuário não é o proprietário do arquivo, mas não podemos chown
arquivos para esse usuário por razões de segurança. O usuário pode sudo
, mas como isso está acontecendo através de um cliente SCP / FTP, também não há como fazer isso. E, finalmente, não queremos dar a esse usuário acesso root, apenas para permitir que ele use uma sincronização como rsync ou WinSCP que precise definir carimbos de data e hora.
O usuário faz parte de um grupo com rw
permissões totais em todos os arquivos e diretórios relevantes. Alguma idéia de como conceder permissão do usuário a touch -t
esses arquivos específicos sem chown
enviá-los a ele?
Informações adicionais Tudo isso tem a ver com a ativação do desenvolvimento do PHP em um cenário de desenvolvedor único (ou seja: sem o SCM). Estou tentando trabalhar com o Eclipse ou o NetBeans para trabalhar em uma cópia local do site baseado em PHP (WordPress), permitindo ao usuário "instantaneamente" visualizar suas alterações no servidor de desenvolvimento. O usuário estará trabalhando remotamente. Até o momento, todas as tentativas de sincronização automática falharam - mesmo usando o WinSCP no modo "watch folder", onde monitora uma pasta local e tenta carregar qualquer alteração até o erro do diretório remoto, porque sempre tenta definir a data / data / hora .
O usuário tem acesso ao sudo, mas foi-me dito que não é realmente uma boa ideia trabalhar com 'root', por isso não estava disposto a fazer login como root para fazer esse trabalho. Além disso, não deveria ser necessário. Eu gostaria que outro não-usuário pudesse fazer a mesma coisa - usando as informações da conta, estabelecendo uma conexão FTP e trabalhando remotamente via sincronização. Portanto, a solução precisa funcionar para alguém sem acesso root.
O que me surpreende é quanta dificuldade estou tendo. Todos esses softwares (NetBeans, Eclipse, WinSCP) foram projetados para permitir a sincronização e todos tentam escrever o registro de data e hora. Então deve ser possível. O WinSCP tem a opção de desativar "definir data e hora", mas essa opção fica indisponível (sempre "ativada") quando você seleciona a pasta de monitoramento / sincronização. Portanto, é tem que ser algo que é bastante normal.
Dado que sou um completo idiota no que diz respeito ao Linux, e sou o dev "administrador do servidor", posso apenas assumir que é algo idiota que estou fazendo ou que (configurado) (mis).
Resumo Em poucas palavras, desejo que qualquer usuário com acesso r / w de grupo a um diretório possa alterar o registro de data e hora nos arquivos desse diretório via SCP.
fonte
root
grupo: oroot
grupo não possui permissões especiais, apenas oroot
usuário.Respostas:
Por que não funciona
Quando você tenta alterar a hora da modificação de um arquivo
touch
ou, geralmente, com a chamada do sistema subjacenteutime
, há dois casos.Por que isso normalmente não importa
--omit-dir-times
(-O
).Soluções
Ok, pare aí mesmo. Só porque existe um único desenvolvedor, não significa que você não deve usar o SCM. Você deveria estar usando o SCM. Peça ao desenvolvedor que faça o check-in de um arquivo e dê a ele uma maneira de pressionar um botão "deploy" para fazer o check-out dos arquivos do SCM no diretório ativo.
Não existe absolutamente nenhuma razão técnica para você não estar usando o SCM, mas pode haver uma razão humana. Se a pessoa que trabalha nesses arquivos se autodenomina "desenvolvedor", deve usar o SCM. Mas se for uma pessoa não técnica que envia documentos, o SCM pode ser muito complicado. Então continue enviando os arquivos por FTP ou SSH. Existem três maneiras de isso funcionar.
rsync
tem uma opção para não sincronizar os horários. Scp não, a menos que você diga. Eu não conheço o WinSCP, mas provavelmente também pode.apache
usuário, a abordagem usual seria permitir que o usuário SSH acesse comoapache
. A abordagem fácil é fazer com que o usuário crie uma chave privada SSH e adicione a chave pública correspondente~apache/.ssh/authorized_keys
. Isso significa que o usuário poderá executar comandos arbitrários como oapache
usuário. Como você concorda em conceder direitos ao usuário sudo de qualquer maneira, isso não importa no seu caso. É possível, mas não tão fácil, colocar mais restrições (você precisa de uma entrada separada do banco de dados do usuário com um nome diferente, o mesmo ID do usuário, um shell restrito e uma prisão chroot; detalhes em uma pergunta separada, embora isso já possa estar coberto neste site ou na falha do servidor ).¹ Ou, para um arquivo vazio, escreva um byte e depois trunque.
² Exceto complicações adicionais, mas nenhuma que eu saiba se aplica aqui.
fonte
apache
- eles poderiam definir horários. Veja minha resposta revisada para a solução certa e algumas abaixo do ideal.Você pode configurar o rsync para usar o sudo na extremidade remota da seguinte maneira:
fonte
sudo rsync
é muito difícil restringir a permissão . Eu o sugeri apenas porque o OP disse que o usuário já tinha acesso ao sudo.