Whats cara termudah untuk mengedit dan menambahkan file ke "/ var / www"?

145

Setelah menginstal server web, apakah ada cara sederhana untuk mengatur pengguna yang dapat menggunakan antarmuka grafis untuk menyalin file dan direktori ke server web lokal / var / www

Saya memberi diri saya hak administratif di Ubuntu tetapi masih tidak mengizinkan salinan.

k_graham
sumber
Terkait: askubuntu.com/questions/45496/…
Marco Ceppi
Saya mencoba melakukan apa yang dikatakan Marcos Roriz Junior. Saya menyalin dan menempel ketika Marcos menulis dan mengubah nama pengguna menjadi nama pengguna saya. Tapi saya tidak bisa menyimpannya di / etc / apache2 / sites-available karena saya tidak mengizinkan saya untuk menyimpannya di folder itu. ???

Jawaban:

222

Jika Anda membuat / var / www dapat ditulis oleh grupnya dan menambahkan pengguna ke grup, pengguna itu tidak harus menggunakan sudo. Coba ini:

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

Pengguna kemudian harus dapat mengedit / var / www / file tanpa kerumitan.

Baris pertama menambahkan pengguna ke grup data-www, baris kedua membersihkan semua file dengan kepemilikan yang kacau, dan yang ketiga membuatnya agar semua pengguna yang merupakan anggota grup data-www dapat membaca dan menulis semua file dalam / var / www.

Jika Anda masuk karena <username>Anda harus keluar dan masuk kembali agar keanggotaan grup berlaku.

Azendale
sumber
37
Saya melakukan ini, ditambah beberapa putaran: 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 logout dan login lagi untuk mengambil grup baru Anda. Saya melakukan ini chmod g+suntuk memaksa file dan direktori baru untuk mengambil pemilik grup (www-data), memastikan bahwa perubahan izin saya menyebar.
Don Faulkner
15
@ DonFaulkner Untuk alasan keamanan, mungkin lebih baik tetap /var/wwwdimiliki oleh root: root, jadi alih-alih sudo chgrp -R www-data /var/wwwlebih baik sudo chgrp -R www-data /var/www/*.
Desmond Hume
2
Cukup aneh, setelah menjalankan 3 perintah itu, beberapa sub-folder dan file saya (seperti composer.jsondan LICENSE) ditampilkan menggunakan ikon biner. Membuka composer.jsondalam editor teks menunjukkan file kosong dan yang terburuk adalah bahwa saya tidak dapat menelusuri beberapa sub-folder juga, saya bahkan mencoba perintah tambahan seperti yang disarankan oleh @ DonFaulkner dan masih belum berhasil. Jika saya menggunakan terminal sebagai root, semuanya sudah sebagaimana mestinya. Adakah yang tahu mengapa ini terjadi?
Alix Axel
5
@itsol Anda harus keluar lalu masuk agar bisa berfungsi.
jini
1
@ DonFaulkner - Maukah Anda menguraikan bagaimana memiliki file yang dimiliki oleh root mungkin menjadi vektor serangan? (Saya baru mengenal semua ini, dan saya bingung karena beberapa orang tampaknya mendukung pendekatan keamanan yang tidak diragukan lagi, yang sudah di-root, sementara yang lain dengan tegas mengatakan jangan-miliki-dengan-root. )
Andrew Cheong
25

Anda dapat chown, yang change yang owner dari folder itu. Ini akan memungkinkan Anda untuk mengubah pengguna dan grup folder, memungkinkan pengguna Anda untuk menambah / menghapus file di dalamnya. Untuk melakukannya, ganti yourusernamedengan nama Anda dan jalankan:

sudo chown yourusername.users /var/www

Dan itu saja.


Namun, saya lebih suka membuat virtualhost di folder rumah saya, itu jauh lebih mudah.

Pada dasarnya ini memungkinkan Anda untuk menggunakan folder apa pun sebagai folder penyajian apache. Untuk menunjukkannya sesederhana itu, mari kita asumsikan bahwa nama pengguna Anda adalah nama pengguna dan folder yang ingin Anda layani adalah / home / nama pengguna / www

Buat file berikut (misalnya mywebprojects) di / etc / apache2 / sistes-available menggantikan nama pengguna dan path folder (pada dasarnya hanya salin dan tempel dan ganti di #CHANGE HERE):

<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>

Sekarang mari kita buat wwwfolder, tambahkan hello world yang sederhana, nonaktifkan situs web default ( /var/www), aktifkan situs web kami mywebprojectsdan mulai ulang apache.

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

Dan itu, sekarang Anda tidak perlu pergi ke /var/www, Anda cukup menambahkan file ke www(atau diberikan nama lain Anda) dan sudah ada di sana :).

Marcos Roriz Junior
sumber
persis apa yang saya lakukan. Satu plus untuk ini adalah Anda dapat mengubah direktori ke drive bersama sehingga semua file akan tersedia saat di-boot di Windows / OSX.
Jason
9

Metode 1:

  • Tekan ALT+ F2dan masukkan gksudo nautilus lalu klik Jalankan.

    teks alternatif

  • Ini akan membuka nautilus dengan root previleges.
  • Goto Filesystem var www dan sekarang Anda dapat menambah / menyalin / menempel file Anda.

Metode 2:

  • Instal nautilus-gksu Instal nautilus-gksu
  • Setelah menginstal ketik nautilus -qdi terminal Anda untuk menyegarkan menu klik kanan.
  • Sekarang Anda akan menemukan entri 'Buka sebagai administrator' di menu klik kanan nautilus Anda.
  • Ketika Anda perlu membuka file apa pun dengan izin root, Anda hanya perlu klik kanan pada file / folder itu dan pilih 'Buka sebagai Administrator'.
  • Ini akan membuka file / folder itu dengan izin root.

    teks alternatif

karthick87
sumber
1
Ini jelas cara yang tepat untuk pergi! Saya bertanya-tanya mengapa ini bukan jawaban yang dipilih. Metode lain melibatkan mengacaukan izin dan saya tidak akan mengambil risiko sistem saya dengan melakukannya. +1 untuk jawaban Anda.
itsol
5
@itsols: Saya benar-benar tidak setuju - Anda mempertaruhkan sistem Anda dengan memberikan Nautilus akses root lengkap ke sistem file Anda alih-alih mengonfigurasi izin untuk mengizinkan akses /var/www. Satu dorongan tombol yang tidak disengaja [delete]dan Anda bisa berakhir dengan sistem yang tidak bisa di-boot.
Nathan Osman
@ GeorgeEdison Tapi ini hanya untuk mengatur izin. Dan setelah ini selesai, kami menutup nautilus dan bekerja seperti biasa. Apakah ini benar-benar seburuk itu? Maafkan saya atas ketidaktahuan saya di sini. Meskipun menjadi pengguna Ubuntu sejak versi 5.x, saya masih menemukan pengaturan mesin pengembangan yang cukup menantang dan sepertinya tidak ada cara yang jelas untuk melakukannya (bagi saya, setidaknya ...
itsols
@itsols: Bagian kedua dari jawaban ini adalah metode yang disukai dan yang saya gunakan.
Nathan Osman
6

Ini bisa sesederhana sudo usermod -a -G developers $usernamemenggunakan ACL.

Namun, itu butuh sedikit usaha untuk memulainya. Setidaknya ini untuk Ubuntu 10.10. Pertama-tama pasang sistem file dengan opsi acl di / etc / fstab.

sudo vim /etc/fstab

UUID = default xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4, acl 0 1

sudo mount -o remount,acl /

Kemudian buat grup tempat pengguna dapat memiliki untuk tujuan ini.

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

Pengguna harus keluar dan masuk lagi untuk menjadi anggota grup pengembang.

Tentu saja, jangan lakukan ini jika Anda memiliki konten di direktori / var / www yang Anda inginkan, tetapi hanya untuk menggambarkan pengaturannya untuk memulai:

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

Kemudian ganti referensi ke "/ var / www" dengan "/ var / www / public" di file konfigurasi dan muat ulang.

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

Jika kami ingin membatasi hapus dan ganti nama dari semua kecuali pengguna yang membuat file:

sudo chmod +t /var/www/public

Dengan cara ini, jika kita ingin membuat direktori untuk kerangka kerja yang ada di luar root dokumen Apache atau mungkin membuat direktori server yang dapat ditulis, itu masih mudah.

Direktori log yang dapat ditulis oleh Apache:

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

Direktori perpustakaan yang dapat dibaca oleh Apache:

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

sumber
Bisakah Anda menjelaskan ada apa dengan UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-line? Apakah ini dimaksudkan untuk ditambahkan secara harfiah atau ingin pengguna menemukan garis dan mengedit opsi di belakang?
MadMike
Mengapa Anda tidak melewatkan sudo rm -rf /var/wwwlangkah-. Sepertinya tidak perlu.
MadMike
@ MadMike itu dimaksudkan untuk diajukan dengan digit heksadesimal. Untuk mengetahui label berbagai partisi Anda, jalankansudo blkid
Azendale
1
@ Azendale Ketika saya menulis komentar itu dimaksudkan sebagai saran tentang cara meningkatkan jawaban. Hari ini saya tahu saya harus menyarankan ini lebih langsung. Sukai: Silakan tambahkan bagaimana cara mengisi UUID=xxxxbagian seperti dengan a sudo blkid.
MadMike
0

Cara termudah untuk dilakukan adalah mengikuti langkah-langkah yang diberikan di bawah ini: -

  1. Tekan Alt+ Ctrl+ Tdan terminal akan terbuka dan ketik sudo -sdan login dengan kata sandi Anda.
  2. Sekarang Anda masuk sebagai root.
  3. Sekarang ketik nautilusdan akan membuka folder beranda untuk Anda sebagai root. Jadi sekarang Anda dapat dengan mudah mengedit file dan melakukan apa pun yang Anda inginkan.

Semoga ini membantu. :)

Mitayshh Dhaggai
sumber
1
Untuk mendapatkan shell root yang cocok untuk menjalankan aplikasi grafis seperti Nautilus, sudo -ilebih disukai sudo -skarena alasan yang sama sudo -Hlebih disukai daripada sudomenjalankan aplikasi grafis tunggal. ( sudo -stidak mengatur ulang HOME, sehingga pengguna dapat memperoleh file konfigurasi di direktori home mereka yang seharusnya menjadi milik mereka tetapi milik root sebagai gantinya .)
Eliah Kagan
Saya sangat tidak menyarankan menggunakan akun root, terutama di server. sudo menyediakan lebih dari kontrol akses yang memadai sementara memungkinkan sysadmin untuk membuat kebijakan untuk memastikan devs dan desainer tidak menyerahkan pistol untuk menembak kaki mereka sendiri (dan perusahaan mereka!)
Shayne
0

/var/www folderdimiliki oleh root .. Anda harus mengubah kepemilikan menjadi nama pengguna Anda sendiri untuk memodifikasi file dalam folder ini. Untuk ini, Anda dapat mencoba perintah berikut ..

sudo -i // untuk mengubah ke root konsol

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

Sekarang kepemilikan folder /var/www/html willdiberikan kepada pengguna scott. Sekarang scott dapat menyalin / memindahkan file di folder ini.

Anoop
sumber
-1

Jika Anda menggunakan versi server, coba webmin. Ini memiliki UI web dan manajer file yang hebat. Entah itu atau Filezilla

John Hallquist
sumber
4
Bisakah Anda menjelaskan "Jika Anda menggunakan versi server"? Paket apa pun yang dapat diinstal pada Ubuntu Server dapat diinstal pada versi desktop Ubuntu.
Eliah Kagan