Bagaimana saya bisa memberikan akses tulis folder ke semua pengguna di linux?

191

Saya menginstal apache2 di Ubuntu sekarang, dan memperhatikan bahwa folder / var / www dilindungi. Saya bisa melakukan sudosemuanya tetapi saya lebih suka memberikannya akses tulis.

Bagaimana saya bisa melakukan ini?

Saya mencoba sudo chmod 7777 /var/wwwtetapi tidak berhasil.

Carson Myers
sumber
Apakah ini server yang dapat diakses publik, atau tidak memiliki koneksi langsung ke internet? Jika yang pertama penting bagi Anda untuk mempertimbangkan keputusan keamanan - server di internet terus-menerus diserang (lihat di / var / log / pesan atau yang setara).
kwutchak
ini hanya laptop saya, tidak dapat diakses dari internet.
Carson Myers

Jawaban:

321

Untuk membagikan yang terbaik kepada banyak pengguna yang seharusnya bisa menulis /var/www, itu harus ditetapkan sebagai grup umum. Misalnya grup default untuk konten web di Ubuntu dan Debian adalah www-data. Pastikan semua pengguna yang memerlukan akses tulis /var/wwwberada di grup ini.

sudo usermod -a -G www-data <some_user>

Kemudian atur izin yang benar di / var / www.

sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

Selain itu, Anda harus membuat direktori dan semua direktori di bawahnya "set GID", sehingga semua baru file dan direktori yang dibuat di bawah /var/wwwdimiliki oleh www-datakelompok.

sudo find /var/www -type d -exec chmod 2775 {} \;    

Temukan semua file /var/wwwdan tambahkan izin baca dan tulis untuk pemilik dan grup:

sudo find /var/www -type f -exec chmod ug+rw {} \;

Anda mungkin harus keluar dan masuk kembali untuk dapat membuat perubahan jika Anda mengedit izin untuk akun Anda sendiri.

jtimberman
sumber
2
itu cukup membosankan ... Saya tidak bisa hanya memberikan akses kepada pengguna, seolah-olah itu folder lain?
Carson Myers
9
Itu adalah bagaimana Anda memberikan akses ke sana. Lebih cepat untuk menyalin dan menempelkan perintah daripada mencoba menavigasi melalui dialog manajer file GUI untuk melakukan hal yang sama. Jangka panjang itu membantu Anda jika Anda membaca halaman manual untuk chmod dan chgrp, setidaknya ("man chmod").
jtimberman
mungkin saya tidak mengerti perintah pertama kali saya membacanya, dan hasil edit Anda membuatnya lebih jelas.
Carson Myers
1
+1 untuk panduan untuk memaksa izin apache. berfungsi dengan baik dengan umask 027. Jika ada sesuatu yang membutuhkan akses tulis, semudah chmod g + w dir /
LiraNuna
1
Mengapa perintah izin grup Anda sudo chmod -R g+wdan tidak g+rwatau g+rwX?
detly
31

Ada cara yang lebih sederhana untuk melakukan ini, coba lakukan perintah ini.

sudo chmod -R 757 /var/www

Pada dasarnya, chmodperintah mengubah izin dan -Rsakelar memengaruhi semua pengguna. Maka itu hanya memberikan izin yang benar untuk digunakan.

Krishna Modi
sumber
3
Bisakah Anda memberi wawasan tentang apa yang dilakukan perintah untuk OP?
n0pe
11
-1 karena kurangnya penjelasan. Selain itu, chmod $permissions -R $filetidak valid ...
Blacklight Shining
1
itu adalah pilihan maka izin bukan sebaliknya
Moataz Elmasry
2
sudo chmod -R 757 /var/www
Bwyss
tolong seseorang yang berpengalaman menyarankan sunting dengan penjelasan singkat tentang ini.
Adi Prasetyo
29

Baca + Tulis:

sudo chmod -R a+rw /var/www

Baca + Tulis + Jalankan:

sudo chmod -R a+rwx /var/www
paivaric
sumber
7

Anda juga dapat meniru apa yang disarankan jtimberman menggunakan daftar kontrol akses . The setfacl perintah menerima -s untuk menggantikan ACL yang ada atau -m untuk memodifikasi; -R untuk membuat ACL direktori rekursif; dan -d untuk menjadikan pengaturan yang ditentukan sebagai default, yang berguna jika Anda mengantisipasi akun pengguna yang akan datang.

Ini hanya mengatur izin seperti yang Anda lakukan untuk pengguna, grup, lainnya, dan mask menggunakan chmod:

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY

Dan ini bisa menjadi cara Anda melakukannya untuk pengguna tertentu atau grupnya:

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY

Dan tentu saja, kekuatannya adalah Anda dapat menetapkan pengguna tertentu, banyak pengguna, dll., Semua tanpa harus mengubah pengaturan grup Anda. Dan tidak seperti chmod, jika Anda ingin beberapa groupies memiliki akses ke satu direktori dan groupies lainnya hanya memiliki akses ke yang lain, sebenarnya dimungkinkan dengan setfacl. Terakhir, untuk melihat ACL direktori, jalankan getfacl :

getfacl DIRECTORY

Dan Anda dapat menentukan -R untuk melihat ACL untuk subdirektori atau -d untuk melihat default.

Nikhil Chelliah
sumber
2

Jawaban cepat & mudah -

Sebuah. Tambahkan ( -a ) pengguna Anda ( user_name ) ke grup ( -G ) www-data .

sudo usermod -a -G www-data user_name

b. Berikan Grup ( g ) izin yang sama ( = ) sebagai Pengguna yang memiliki ( u ) dari / var / www secara Rekursif ( -R ).

sudo chmod -R g=u /var/www

Penjelasan: Apache 2 pada Debian / Ubuntu menetapkan www-data Pengguna & Grup sebagai Pemilik / var / www . Izin default untuk Pengguna adalah "Lihat & Ubah Konten", namun Grup hanya dapat "Melihat Konten". Jadi menambahkan diri Anda ke Grup www-data dan memberikannya izin yang sama dengan Pengguna wwww-data, adalah cara cepat dan mudah untuk berkembang. Saya melakukan ini untuk semua lingkungan Pengembangan Web localhost (PC / Laptop) saya.

pengguna1138
sumber
1

Saya biasanya menggunakan

chmod g+w /folder/ -R

Ini hampir menjelaskan sendiri.

Ia menambahkan semua orang di group /folder/untuk memiliki wakses ritus ( +w), -Radalah untuk rekursi untuk sub-folder.

Arda
sumber
-3

Bisakah kamu mencoba chmod 0777 /var/www?

Sebuah kata peringatan: jika Anda membiarkan semua orang mengakses folder ini, itu berarti para peretas dapat mengakses folder ini jika mereka mendapatkan akses ke sistem Anda. Itu sebabnya lebih baik untuk membuat grup pengguna yang diizinkan, dan memberikan akses tulis grup itu.

stalepretzel
sumber
jadi mengapa menawarkan ini sebagai solusi, dan kemudian segera mendiskreditkannya? -1 suara
Tisch
-3

Pertama, Anda memasukkan jalur folder tertentu, lalu menggunakan perintah ini ...

chmod -R 777 foldername
chown username:username foldername 
marimuthu
sumber
7
Wow, itu buruk! Anda tidak memberikan 777 dengan -R - terutama jika orang yang mengajukan pertanyaan adalah pemula dan tidak memahami risikonya.
Merujuk kembali
Cukup benar @ recluze.
vgoff