Tips setting permission web server Linux
Kembali ada yang berkonsultasi lewat email dan hal yang ditanyakan adalah mengenai permission di Linux yang kita manfaatkan sebagai web server. Ini bisa Nginx, Apache, LiteSpeed, Hiawatha, dan sebagainya. Apapun yang kita install dan jalankan dalam VPS maka akan membutuhkan ijin untuk mengakses atau memodifikasi folder dan file didalamnya. Dan ini bukan sembarangan juga mengaturnya karena akan berpengaruh akan keamanan sistem dan kemampuan web server yang kita pakai.
Tujuannya nanti agar direktori dan file hanya bisa diakses dan diedit oleh aplikasi yang berhak, karena itu harus benar kita setting permissionnya. Daripada nanti menyesal karena server hosting kita dapat dengan mudah dibobol hacker disebabkan sistem perijinan yang terlalu longgar.
Oke, yang pertama anda harus tahu apa nama user untuk web server yang digunakan. Secara umum Nginx biasanya nginx
, Apache menggunakan www-data
, dan yang lainnya bisa jadi root
atau nobody
. Pakai perintah top
untuk melihat sebuah software menggunakan username apa untuk prosesnya.
top - 19:57:32 up 41 days, 2:06, 1 user, load average: 0.01, 0.00, 0.00
Tasks: 18 total, 1 running, 17 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 524288k total, 236288k used, 288000k free, 0k buffers
Swap: 65536k total, 9280k used, 56256k free, 190020k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 2896 112 4 S 0.0 0.0 0:00.16 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd/48963
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper/48963
552 root 20 0 8632 568 464 S 0.0 0.1 0:00.80 sshd
1108 root 20 0 7752 1444 1220 S 0.0 0.3 6:31.46 litespeed
1109 root 20 0 7580 276 212 S 0.0 0.1 1:53.82 litespeed
1110 nobody 20 0 12792 5840 1960 S 0.0 1.1 32:29.85 litespeed
1111 nobody 20 0 160m 5204 4892 S 0.0 1.0 1:40.29 lsphp5
2277 newrelic 20 0 5444 384 360 S 0.0 0.1 0:00.00 nrsysmond
2279 newrelic 20 0 39340 3364 2196 S 0.0 0.6 68:49.71 nrsysmond
9261 root 20 0 11944 3724 2976 S 0.0 0.7 0:00.13 sshd
9263 root 20 0 3048 1528 1296 S 0.0 0.3 0:00.00 bash
9276 root 20 0 2572 1068 884 R 0.0 0.2 0:00.51 top
9277 nobody 20 0 162m 20m 16m S 0.0 4.0 0:00.43 lsphp5
9283 nobody 20 0 160m 14m 12m S 0.0 2.9 0:00.07 lsphp5
29696 root 16 -4 2464 552 320 S 0.0 0.1 0:00.00 udevd
29756 root 20 0 2988 1212 1016 S 0.0 0.2 0:00.00 mysqld_safe
29849 mysql 20 0 648m 115m 6040 S 0.0 22.6 9:51.60 mysqld
Untuk mengganti pemilik dari suatu direktori atau file di Linux jalankan perintah berikut:
chown -R www-data /lokasi/direktori/situs/
Maksudnya nanti seluruh file dan folder yang berada dalam lokasi yang diisikan akan diubah ownernya ke www-data. Anda bisa mengganti www-data menjadi apa nama user yang digunakan dalam VPS anda, karena itu saya minta anda memperhatikan lewat hasil top sebelumnya.
Setelah kita mengidentifikasi siapa pemiliknya maka selanjutnya berpindah ke direktori yang berisi data – data website anda, istilahnya direktori root virtual hosting. Jadi jangan eksekusi perintah dibawah kalau belum, karena bukannya menjadi solusi malah memperparah keadaan.
Artinya nanti kalau ketemu direktori maka akan disetting permissionnya menjadi 755
:
find /lokasi/virtualhost/situs/ -type d -exec chmod 755 {} \;
- Pemilik bisa baca, tulis, dan eksekusi.
- Grup bisa baca dan eksekusi.
- Yang lainnya bisa baca dan eksekusi.
Bila anda periksa menggunakan perintah ls -l
akan muncul seperti berikut:
drwxr-xr-x 54 root root 4096 Dec 26 13:40 servernesia
Sedangkan bila jenisnya adalah file akan dimodifikasi hak aksesnya menjadi 644
:
find /lokasi/virtualhost/situs/ -type f -exec chmod 644 {} \;
- Pemilik bisa baca dan tulis.
- Grup bisa baca.
- Yang lainnya bisa baca.
Nanti kalau dicek akan seperti ini permissionnya:
-rw-r--r-- 1 root root 116981 Nov 10 11:22 index.php
Jadi kita tidak perlu memberikan kemampuan lebih dari yang dibutuhkan web servernya. Selain lebih aman juga fitur – fiturnya akan tetap berfungsi normal.
Saya memang belum pernah menjelaskan mengenai setting permissions di Linux jadi anda harus mencari sendiri pemahaman mengenai sistem hak aksesnya. Tapi jangan pernah menggunakan hak akses 777
karena ini sangat teledor.
Semoga bermanfaat.