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

Tinggalkan komentar