Sempre tem que chown ao adicionar novo arquivo? Centos 6


2

Sempre que carrego um novo arquivo no meu servidor, é necessário que chown -R apache:apache /direle seja acessível.

Existe uma maneira mais fácil de contornar isso?


Este é o seu próprio servidor? Então precisamos saber qual servidor ftp você está executando. Em todo servidor ftp, você pode alterar a configuração para que os arquivos enviados obtenham o usuário certo: grupo e permissões. Também é possível trabalhar com permissão herdada do diretório pai ou com a ACL (Lista de Controle de Acesso), mas é muito mais fácil configurá-lo no servidor ftp.
Rik

A menos que você está FTPing em seu servidor como o usuário apache:apacheentão sim, você precisa fazer isso, seja manualmente ou através de algum tipo de FTP configuração cliente / servidor
Jobbo

@Jobbo Como posso carregar o usuário apache: apache?
Travis

@ Travis Você pode acessar o ftp com o nome de usuário apache(se você tiver uma senha para isso). Caso contrário, você precisará alterar a configuração do seu servidor ftp. Este é o seu próprio servidor? E qual servidor-daemon você está executando? VSFTPD ou algo mais?
Rik

@Rik Estou usando o vsftpd Este também é o meu servidor. Tenho acesso root e carreguei tudo como root.
Travis

Respostas:


2

Provavelmente, o que é realmente necessário para que os arquivos estejam acessíveis é que seu grupo esteja definido apache. Você pode configurá-lo facilmente por padrão para novos arquivos criados executando:

find /path/to/root/directory/of/website -type d -print0 | xargs -0 chmod g+s

Isso definirá o setgidsinalizador em todos os subdiretórios também. Com esse sinalizador definido, qualquer novo arquivo criado lá herdará o grupo do diretório pai. ( -print0e as -0opções são projetadas para manipular espaços corretamente nos nomes de arquivos)

Verifique se as propriedades dos arquivos estão corretas antes de executá-lo. Se não tiver certeza, poderá corrigi-lo da mesma maneira:

find /path/to/root/directory/of/website -print0 | xargs -0 chown apache:apache

E que tal um novo diretório que ele cria com o programa ftp?
Rik

Eles também devem herdar, desde que o programa ftp não altere explicitamente o grupo.
Levans

Sim, isso funciona. Eu acho que fiquei confuso com a parte "user". Isso não pode ser herdado sem o uso de ACLs. Mas apenas para a parte do grupo, o setgidtrabalho é bom (+1). Se o programa ftp definir o grupo ... bem ... então não há mais nada a fazer, altere sua configuração. Acabei de testá-lo com VSFTPD e com isso funciona. (O grupo não está definido como o definido na vsftpd.conf mas leva-lo a partir de seu diretório pai)
Rik

@ Levans quando executo esse comando, emito 'find /var/www/travisingram.net/public_html -type d | xargs chmod g + s 'e as permissões não são afetadas. Outra maneira que eu sei que isso não mudou é no WordPress, sempre que eu atualizar / instalar um plug-in, será necessário FTP ou SFTP. Agora, se foi jogado com apache: apache, eu não deveria ver isso. Eu não fiz o comando corretamente? Estou executando o vsftpd
Travis

@ Travis você está executando este comando com direitos suficientes (como rootusuário)? Ao exibir as permissões de arquivo (com ls -l), você verá um em Svez de xpara permissões de grupo nos diretórios.
Levans

0

Aqui está o que você poderia fazer com o VSFTPD:

Você pode definir as seguintes 2 opções em você vsftpd.conf:

guest_enable=YES
guest_username=apache

guest_enable, se ativado, garante que todos os arquivos sejam carregados como usuário / grupo apache.

Observe que isso só funcionará para arquivos enviados via FTP. Se você copiar um arquivo no próprio Linux para o diretório www, isso não ajustará as permissões .


É por isso que, se você também está acessando esse diretório pelo sistema de arquivos, é melhor usar o chmod g+smétodo que Levans sugeriu.
(ie)

find /var/www/site/public_html -print0 | xargs -0 chown apache:apache
find /var/www/site/public_html -type d -print0 | xargs -0 chmod g+s

guest_enable
Se ativado, todos os logons não anônimos são classificados como logons "convidados". Um login de convidado é remapeado para o usuário especificado na configuração guest_username.

Padrão: NÃO

guest_username
Consulte a configuração booleana guest_enable para obter uma descrição do que constitui um login de convidado. Essa configuração é o nome de usuário real para o qual os usuários convidados são mapeados.

Padrão: ftp


O apache teria a mesma senha do root? Acho que não, decidiu tentar antes de eu perguntar. Então, é sem senha aberta para uso geral? Sorta confuso aqui.
Travis

Você não deve usar o root para acessar o ftp. Existe uma configuração de nome de usuário ftp para ele. Mas não importa com qual usuário você se conecta (você pode configurar os usuários ftp na configuração), você precisa dizer ao programa ftp para gravar os arquivos apache:apacheporque o servidor da web precisa de acesso. (. Mesmo se apache usuário não tem acesso senha / ftp os arquivos ainda pode ser escrita com o usuário enquanto vsftpd atribui a esse usuário que é onde essas linhas são para)
Rik

E somente se você ativou o anônimo, qualquer pessoa poderá fazer login sem uma senha. Se estiver desativado, você poderá fazer login com os usuários aos quais você ativou o acesso ao ftp. Pode ser do Linux padrão usado para um login.txt simples, onde você define usuários e senhas. Isso depende do seu arquivo de configuração. guest_enabledé um pouco confuso porque não tem nada a ver com o acesso 'convidado', mas faz com que o vsftpd escreva um usuário diferente (remapeamento) para usuários 'normais'.
Rik

como posso definir senhas para isso? Não conheço os comandos específicos para o vsftpd.
Travis

Vi você postar sobre essa outra pergunta que fiz anteriormente. Eu esqueci de fazer uma pergunta anterior. Eu descobri que tinha esse realmente depois que o criei. Enfim, acabei de removê-lo.
Travis
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.