Bagaimana saya bisa chmod 777 semua subfolder dari / var / www?

54

Saya menjalankan server web dan server FTP, di mana /var/wwwterikat /home/user/www.

Saya mengatur kedua direktori chmod 777(yang baik karena hanya untuk pengujian).

Saya dapat mengunggah file ke dalamnya /home/user/www, tetapi setiap kali saya membuat direktori baru, saya harus selalu berjalan chmod 777di folder itu.

Kalau tidak, ketika saya mencoba menjelajahinya, saya mendapatkan pesan kesalahan

Anda tidak memiliki izin untuk mengakses / menguji / di server ini.

Adakah cara agar semua folder di dalamnya /var/wwwdapat diakses oleh siapa saja? Atau bisakah izin mereka diatur secara otomatis ke 777? Sangat menyebalkan bahwa saya harus mengetik chmod 777setiap waktu.

pengguna1645034
sumber
12
Hanya akan meninggalkan ini di sini, PERTIMBANGKAN TIDAK MENGGUNAKAN 777 PADA SERVER WEB . Pertanyaan yang lebih baik untuk ditanyakan adalah "Bagaimana saya bisa membuat server web saya bekerja tanpa menggunakan 777 izin?"
Marco Ceppi
12
maaf itu adalah praktik yang buruk dan saya menolak untuk menjawab ini :) Hope eveyone setuju :)
Rinzwind

Jawaban:

90

Ini adalah praktik buruk, tetapi mudah-mudahan Anda hanya menggunakan ini untuk pengembangan, atau Anda punya alasan bagus lainnya. Anda dapat menentukan izin saat Anda membuat direktori menggunakan -mopsi:

mkdir -m 777 dirname

Atau Anda dapat mengatur izin secara rekursif.

sudo chmod -R 777 /var/www

Sebelum menggunakan salah satu dari ini, pertimbangkan apakah Anda ingin sistem file Anda dapat diakses.


Sunting: Seperti yang disebutkan oleh Rinzwind di sini adalah cara yang lebih baik untuk mencapai apa yang Anda inginkan.

Periksa grup apa yang memiliki /var/wwwdirektori Anda dan tambahkan pengguna Anda ke grup itu.

sudo adduser yourusername group

Kelompoknya mungkin www-data.

Maka Anda akan baik-baik saja dengan mengatur izin Anda ke 775.

Dan
sumber
4
Ini sesuai dengan yang Anda minta, tetapi tolong baca ini dulu. Mengapa / var / www tidak memiliki chmod 777 . Benar- benar tidak dianjurkan berlatih.
Warren Hill
8
Tolong jangan membantu orang dengan metode yang merupakan praktik buruk. Saya lebih suka jika Anda menjelaskan cara melakukannya: dengan menambahkan penggunanya ke grup www-data atau apache;)
Rinzwind
4
Pendidikan didahulukan. Membantu orang merusak mesin mereka bukanlah cara Linux. Jadi saya sangat tidak setuju dengan Anda.
Rinzwind
2
Penanya memang mengatakan ini hanya untuk pengujian. Saya pasti bisa mengerti ingin sisi pengembangan Anda agar mudah diakses sehingga Anda dapat bekerja lebih cepat. Saya akan memberinya keuntungan dari keraguan, bahwa ia tidak cukup bodoh untuk melakukan ini dengan server produksi.
Dan
1
@ dan08 Ada cara yang lebih baik untuk menguji, termasuk menggunakan direktori home Anda. Lihat askubuntu.com/questions/46331/… dan kimbriggs.com/computers/computer-notes/linux-notes/… . Ada cara aman untuk mencapai tujuan ini;)
Panther
7

File dan direktori di Unix mungkin memiliki tiga jenis izin: baca ( r), tulis ( w), dan jalankan ( x). Setiap izin dapat onatau offuntuk masing-masing dari tiga kategori pengguna: pemilik file atau direktori; orang lain dalam kelompok yang sama dengan pemiliknya; dan yang lainnya. Untuk mengubah mode file, gunakan perintah chmod. Bentuk umumnya adalah chmod X @ Y file1 file2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 
Lokesh Kumar Bandi
sumber
3

Pengumuman layanan publik:


Jangan pernah menggunakan chmod 777 untuk memperbaiki masalah


  • Ini adalah risiko keamanan utama jika Anda menjalankan layanan apa pun yang tersedia untuk umum, terutama aplikasi web (mis. PHP).

    Model keamanan OS mengasumsikan bahwa banyak layanan (seperti server web Anda) berjalan dengan hak istimewa yang dikurangi, untuk mencegah mereka dapat memodifikasi file. Mengatur 777 pada file akan merusak desain ini.

    Pengguna jarak jauh dapat menulis ke atau mengunggah file dan kemudian menipu server (atau proses lain pada sistem Anda) agar membaca atau mengeksekusi mereka. Skrip atau perangkat lunak mungkin memiliki kekurangan yang memungkinkan ini. Sangat sulit untuk mengunci setiap cara ini bisa terjadi jika ada direktori yang dapat ditulis oleh dunia.

  • Digunakan dalam direktori sistem tertentu (/ usr, / etc, / var, dan sebagainya), ini dapat merusak sistem Anda dengan cara yang mengejutkan.

    Beberapa file sistem esensial memerlukan izin khusus seperti izin setuid / setgid agar dapat dijalankan. Misalnya, sudo. Hindari mengubah izin file apa pun pada direktori dan file yang diatur oleh sistem itu sendiri.

  • Tidak ada cara untuk membatalkannya dan mendapatkan kembali semua izin lama.

    Artinya, jika Anda memiliki file dan folder dengan berbagai izin berbeda sebelumnya, tidak ada cara untuk kembali ke izin khusus itu - hanya untuk mengubah semuanya ke hal yang sama, yang dapat kehilangan pengaturan izin khusus apa pun yang diperlukan pada file tertentu.

  • Selalu ada cara yang lebih tepat untuk mencapai apa yang ingin Anda capai.

Dalam hal ini, sepertinya Anda hanya ingin server web Anda dapat membaca direktori. Memberi izin yang bisa ditulis dunia adalah jauh lebih banyak daripada yang harus Anda lakukan.

Lacak mengapa server web tidak dapat membaca direktori itu (petunjuk: itu mungkin karena direktori home Anda tidak dapat dibaca dunia. World-readable jauh lebih aman daripada yang bisa ditulis oleh dunia - setel direktori home Anda ke sesuatu seperti 755, atau pindahkan www dir itu ke luar rumah Anda ke suatu tempat seperti / var / www atau / srv).

thomasrutter
sumber
0

Ini tidak berhasil bagi saya.

sudo chmod -f 777 /path/to/your/file/or/directory

Saya harus menggunakan -fjuga.

sudo chmod -R -f 777 /path/to/your/file/or/directory
Janaka Pushpakumara
sumber
0

Jika Anda ingin menyalin izin dan atau kepemilikan dari file lain yang Anda puas, Anda dapat melakukannya dengan menggunakan sudo chmod --referensi = path / ke / file / ke / jalur referensi / ke / file / Anda / ingin / ke / mengubah / permissino / ke

Dan Anda dapat melakukan hal yang sama untuk kepemilikan file juga.

Amir Khalil
sumber