Qual é a maneira mais simples de editar e adicionar arquivos ao “/ var / www”?

145

Após a instalação do servidor da web, existe uma maneira simples de configurar um usuário capaz de usar a interface gráfica para copiar arquivos e diretórios no servidor da web local / var / www

Eu me dei privilégios administrativos no Ubuntu, mas ele ainda não permite cópias.

k_graham
fonte
Relacionado: askubuntu.com/questions/45496/…
Marco Ceppi
2
Relacionado (mais seguro): Como evitar o uso do sudo ao trabalhar em / var / www?
Lekensteyn
Tentei fazer o que Marcos Roriz Junior disse. Copiei e colei quando Marcos escreveu e alterou o nome de usuário para o meu nome de usuário. Mas não consigo salvá-lo em / etc / apache2 / sites-available, porque não me permite salvar nessa pasta. ???

Respostas:

222

Se você tornar / var / www gravável por seu grupo e adicionar o usuário ao grupo, esse usuário não precisará usar o sudo. Tente o seguinte:

sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www

O usuário deve poder editar / var / www / files sem problemas.

A primeira linha adiciona o usuário ao grupo www-data, a segunda linha limpa todos os arquivos com propriedade desarrumada ea terceira faz com que todos os usuários membros do grupo www-data possam ler e gravar todos os arquivos em / var / www.

Se você estiver conectado, <username>precisará sair e fazer login novamente para que a associação ao grupo entre em vigor.

Azendale
fonte
37
Eu faço isso, além de algumas reviravoltas: sudo adduser <username> www-data; sudo chgrp -R www-data /var/www; sudo chmod -R g+rw /var/www; find /var/www -type d -print0 | sudo xargs -0 chmod g+s efetue logout e efetue login novamente para pegar seu novo grupo. Faço isso chmod g+spara forçar novos arquivos e diretórios a buscar o proprietário do grupo (www-data), certificando-me de que minhas permissões sejam alteradas.
Don Faulkner
15
@ DonFaulkner Por razões de segurança, é melhor manter a /var/wwwpropriedade do root: root, então sudo chgrp -R www-data /var/wwwé melhor que seja sudo chgrp -R www-data /var/www/*.
Desmond Hume
2
Curiosamente, depois de executar esses 3 comandos, algumas das minhas subpastas e arquivos (como composer.jsone LICENSE) são exibidas usando o ícone binário. Abrir o composer.jsoneditor de texto mostra um arquivo em branco e o pior é que também não consigo navegar por algumas das subpastas; tentei o comando adicional sugerido por @DonFaulkner e ainda não tive sorte. Se eu usar o terminal como root, tudo está como deveria ser. Alguém tem alguma idéia de por que isso acontece?
Alix Axel
5
@itsols, você precisa sair e fazer login para que funcione.
jini
11
@ DonFaulkner - Você se importaria de elaborar como ter arquivos pertencentes ao root pode ser um vetor de ataque? (Eu sou novo em tudo isso e estou confuso porque alguns parecem advogar uma abordagem de segurança quando em dúvida, por raiz pela raiz, enquanto outros dizem firmemente que não são por raiz. )
Andrew Cheong
25

Você pode chown, isto é, chalterar a ownpasta dessa pasta. Isso permitirá que você altere o usuário e o grupo da pasta, permitindo que o usuário adicione / remova arquivos nela. Para fazer isso, substitua yourusernamepelo seu nome e execute:

sudo chown yourusername.users /var/www

E é isso.


No entanto, prefiro criar um host virtual na minha pasta pessoal, é muito mais fácil.

Basicamente, ele permite que você use qualquer pasta como uma pasta servindo apache. Para mostrar como é simples, vamos supor que seu nome de usuário seja nome de usuário e que a pasta que você deseja exibir seja / home / nome de usuário / www

Crie o seguinte arquivo (por exemplo mywebprojects) em / etc / apache2 / sistes-available substituindo o nome de usuário e o caminho da pasta (basicamente apenas copie e cole e substitua em #MUDAR AQUI):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    # CHANGE HERE
    DocumentRoot /home/username/www

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    # CHANGE HERE
    <Directory /home/username/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Agora vamos criar a wwwpasta, adicionar um olá simples, desativar o site padrão ( /var/www), ativar nosso site mywebprojectse reiniciar o apache.

mkdir ~/www 
echo "<html><h1>Hello World</h1></html>" > ~/www/test.html
sudo a2dissite default #
sudo a2ensite mywebprojects
sudo service apache2 restart

E agora, agora você não precisa ir /var/www, basta adicionar arquivos ao seu www(ou outro nome) e ele já está lá :).

Marcos Roriz Junior
fonte
exatamente o que eu fiz. Uma vantagem disso é que você pode alterar o diretório para uma unidade compartilhada para que todos os arquivos estejam disponíveis quando inicializados no Windows / OSX.
Jason
9

Método 1:

  • Pressione ALT+ F2e digite gksudo nautilus e clique em Executar.

    texto alternativo

  • Ele abrirá o nautilus com privilégios de root.
  • Vá para Sistema de arquivos var www e agora você pode adicionar / copiar / colar seus arquivos.

Método 2:

  • Instale o nautilus-gksu Instale o nautilus-gksu
  • Após a instalação, digite nautilus -qseu terminal para atualizar os menus do botão direito.
  • Agora você encontrará a entrada 'Abrir como administrador' no menu de atalho do nautilus.
  • Quando você precisar abrir qualquer arquivo com permissão root, basta clicar com o botão direito do mouse nesse arquivo / pasta e selecionar 'Abrir como administrador'.
  • Ele abrirá esse arquivo / pasta com permissão root.

    texto alternativo

karthick87
fonte
11
Este é definitivamente o caminho certo a seguir! Eu me pergunto por que essa não foi a resposta selecionada. Os outros métodos envolvem mexer nas permissões e eu não arriscaria meu sistema ao fazê-lo. +1 para sua resposta.
itsols
5
@itsols: Eu discordo completamente - você arrisca seu sistema ao conceder ao Nautilus acesso root completo ao seu sistema de arquivos em vez de configurar corretamente as permissões para permitir o acesso /var/www. Um toque acidental da [delete]tecla e você pode acabar com um sistema não inicializável.
Nathan Osman
@ GeorgeEdison Mas isso é apenas para definir a permissão. E depois disso, fechamos o nautilus e trabalhamos como de costume. Isso é realmente tão ruim assim? Desculpe-me pela minha ignorância aqui. Apesar de ser um usuário do Ubuntu desde a versão 5.x, ainda acho a configuração de uma máquina de desenvolvimento bastante desafiadora e parece não haver uma maneira clara de fazê-lo (para mim, pelo menos ...
itsols
@itsols: A segunda parte desta resposta é o método preferido e é o que eu uso.
Nathan Osman
6

Pode ser tão simples quanto sudo usermod -a -G developers $usernameusar ACL.

Isso leva um pouco de trabalho, no entanto, para começar. Isto é para o Ubuntu 10.10, pelo menos. Primeiro monte os sistemas de arquivos com a opção acl em / etc / fstab.

sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / padrões ext4, acl 0 1

sudo mount -o remount,acl /

Em seguida, faça um grupo ao qual um usuário possa pertencer para essa finalidade.

sudo groupadd developers
sudo usermod -a -G developers $username

O usuário precisa sair e entrar novamente para se tornar um membro do grupo de desenvolvedores.

Obviamente, não faça isso se você tiver conteúdo no diretório / var / www que deseja, mas apenas para ilustrar a configuração para iniciar:

sudo rm -rf /var/www
sudo mkdir -p /var/www/public
sudo chown -R root:developers /var/www/public
sudo chmod 0775 /var/www/public
sudo chmod g+s /var/www/public
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public

Em seguida, substitua as referências a "/ var / www" por "/ var / www / public" em um arquivo de configuração e recarregue.

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

Se quisermos restringir a exclusão e renomeação de todos, exceto o usuário que criou o arquivo:

sudo chmod +t /var/www/public

Dessa forma, se queremos criar diretórios para estruturas existentes fora da raiz do documento Apache ou talvez criar diretórios graváveis ​​no servidor, ainda é fácil.

Diretório de logs graváveis ​​pelo Apache:

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs

Diretório de biblioteca legível pelo Apache:

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/logs
sudo chmod 0750 /var/www/logs

fonte
Você poderia explicar o que há com a UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxlinha? Ele deve ser adicionado literalmente ou deseja que o usuário encontre a linha e edite as opções por trás?
madmike
Por que você não pula o sudo rm -rf /var/wwwpasso? Realmente não parece necessário.
21313 MadMike
@MadMike deve ser arquivado com dígitos hexadecimais. Para descobrir o que seus várias partições são rotulados, executesudo blkid
Azendale
11
Azendale @ Quando escrevi o comentário, ele foi concebido como uma sugestão de como melhorar a resposta. Hoje eu sei que devo sugerir isso muito mais diretamente. Like: Por favor, adicione como preencher a UUID=xxxxparte -com como a sudo blkid.
21314 MadMike
0

A maneira mais fácil de fazer é seguir os passos abaixo: -

  1. Pressione Alt+ Ctrl+ Te o terminal abrirá e digite sudo -se faça login com sua senha.
  2. Agora você está logado como root.
  3. Agora digite nautiluse ele abrirá a pasta inicial para você como root. Então agora você pode editar facilmente os arquivos e fazer o que quiser.

Espero que isto ajude. :)

Mitayshh Dhaggai
fonte
11
Para obter um shell de root adequado para executar aplicações gráficas como o Nautilus, sudo -ié preferível sudo -s, pelo mesmo motivo sudo -Hé preferível sudopara a execução de um aplicativo gráfica única. ( sudo -sNão repõe HOME, assim o usuário pode obter arquivos de configuração em seu diretório home que devem lhes pertencem, mas pertencem a raiz em vez .)
Elias Kagan
Eu desencorajo fortemente o uso da conta root, especialmente em servidores. sudo fornece mais de controles de acesso adequadas ao mesmo tempo permitindo que o administrador do sistema para a política de artesanato para garantir devs e os designers não são entregues uma arma para atirar o seu próprio pé (e suas empresas!)
Shayne
0

/var/www folderpertence à raiz. você deve alterar a propriedade para seu próprio nome de usuário para modificar os arquivos nesta pasta. Para isso, você pode tentar os seguintes comandos.

sudo -i // para mudar para o console raiz

sudo chown -R <username> <path> // for eg. sudo chown -R scott /var/www/html (scott is the username, -R indicates recrusive)

Agora a propriedade da pasta /var/www/html willserá atribuída ao usuário scott. Agora, scott pode copiar / mover arquivos nesta pasta.

Anoop
fonte
-1

Se você estiver usando a versão do servidor, tente webmin. Possui uma excelente interface de usuário da web e gerenciador de arquivos. Ou isso ou o Filezilla

John Hallquist
fonte
4
Você pode explicar "Se você está usando a versão do servidor"? Qualquer pacote que possa ser instalado no Ubuntu Server pode ser instalado na versão desktop do Ubuntu.
Eliah Kagan