Mengatur Hak Akses pada WordPress

Pada artikel sebelumnya kamu telah berhasil menginstall WordPress di Server VPS. Masalah setelah install WordPress adalah kamu belum bisa mengupload theme dan plugin. Tidak perlu kuatir, kita akan memperbaiki hal itu di artikel ini

Artikel ini adalah lanjutan dari artikel sebelumnya tentang cara menginstall WordPress di server VPS. Masalah tidak bisa upload theme atau plugin disebabkan oleh hak akses file wordpress.

Berdasarkan rekomendasi dari WordPress, hak akses untuk folder adalah 755 dan hak akses untuk file adalah 644. Saya akan membahas tentang arti angka-angka itu di artikel lain. Untuk saat ini, terima saja angka itu apa adanya 🙂 . Baiklah, kita akan mengikuti rekomendasi dari WordPress tentang hak akses. Caranya sebagai berikut.

  1. Login ke server VPS dengan user anggota
  2. Buat user baru dengan nama wp-user
    $    sudo adduser wp-user

    saat akan di tanya password, jangan isi password apapun langsung tekan Enter. Karena kita tidak ingin wp-user mempunyai password.
    wp-user adalah user yang akan kita berikan hak akses terhadap semua file wordpress. Kamu bisa menggantinya dengan nama lain.

  3. Pindah ke direktori root wordpress
    $    cd /usr/share/nginx/html

    Kemudian tampilkan semua file dalam direktori itu
    $    ls -l

    daftar-file
    Daftar file WordPress
  4. Rubah semua kepemilikan file wordpress ke wp-user
    $    sudo chown -R wp-user:wp-user /usr/share/nginx/html

    Kemudian tampilkan kembali file dengan perintah ls -l. Hasilnya akan seperti gambar di bawah ini.

    hak-akses-file-setelah-dirubah
    Hak akses file wordpress setelah dirubah
  5. Rubah permission file menjadi 644 dan folder 755. File wp-config.php menjadi 660
    $    sudo find . -type f -exec chmod 644 {} +
    $    sudo find . -type d -exec chmod 755 {} +
    $    sudo chmod 600 wp-config.php
  6. Pindah ke member anggota ke member wp-user
    $    sudo su - wp-user
  7. Buatlah key ssh
     $    ssh-keygen -t rsa -b 4096

    akan muncul pertanyaan, dimana akan menyimpan key tesebut. Simpanlah di /home/wp-user/wp_rsa
    akan muncul pertanyaan, untuk memasukkan passphrase. Langsung tekan Enter yang artinya tanpa passphrase

    save-wp_rsa
    Menyimpan SSH key
  8. Keluar dari member wp-user ke member anggota
    $    exit
  9. Pastikan kamu masih di folder /usr/share/nginx/html
     $    pwd

    hasilnya adalah /usr/share/nginx/html

  10. SSH key telah di simpan di folder /home/wp-user/. Rubahlah semua grup file dalam folder itu menjadi grup wp-user.
     $    sudo chown wp-user:wp-user /home/wp-user/wp_rsa*

    kemudian rubah akses file agar hanya pemilik file dan member dalam grup www-data bisa mengakses file tersebut

     $    sudo chmod 0600 /home/wp-user/wp_rsa*
  11. Buatlah folder .ssh di direktori /home/wp-user
    $    sudo mkdir /home/wp-user/.ssh

    Rubah kepemilikan folder .ssh menjadi milik wp-user

    $    sudo chown wp-user:wp-user /home/wp-user/.ssh

    Rubah akses terhadap folder .ssh yaitu hanya wp-user saja yang mendapatkan akses penuh folder tersebut

    $    sudo chmod 0700 /home/wp-user/.ssh/
  12. Copy public key wp_rsa.pub dari folder /home/wp-user ke folder /home/wp-user/.ssh
     $    sudo cp /home/wp-user/wp_rsa.pub /home/wp-user/.ssh/authorized_keys
  13. Rubah kepemilikan public key tersebut menjadi milik wp-user
    $    sudo chown wp-user:wp-user /home/wp-user/.ssh/authorized_keys

Install PHP SSH Extention

Agar wordpress bisa menggunakan SSH key di atas, maka kita perlu menginstall PHP extention

  1. Install PHP SSH extention
    $    sudo apt-get update
    $    sudo apt-get install php5-dev libssh2-1-dev libssh2-php php5-gd
  2. Edit file wp-config.php
    $    sudo nano /usr/share/nginx/html/wp-config.php

    Pada bagian aling akhir file, tambahkan kode berikut

    define('FTP_PUBKEY','/home/wp-user/wp_rsa.pub');
    
    define('FTP_PRIKEY','/home/wp-user/wp_rsa');
    
    define('FTP_USER','wp-user');
    
    define('FTP_PASS','');
    
    define('FTP_HOST','127.0.0.1:22');

    Keluar dan simpan file tersebut.

  3. Restart nginx
    $    sudo service nginx restart

Mencoba Koneksi SSH Pada WordPress

Sekarang saatnya mencoba koneksi SSH yang telah di buat di atas. Caranya sederhana, kita coba untuk menginstall plugin dan theme

  1. Masuk ke dashboard > Plugins > Add New

    add-new-plugin
    Menambah plugin
  2. Pilih plugin yang akan di install. Misalnya All in One SEO Pack. Klik tombol install
  3. Akan muncul tambahan koneksi ssh seperti gambar di bawah ini

    tipe-koneksi
    Tipe koneksi SSH
  4. Scroll ke bawah dan klik procedd maka proses instalasi akan berjalan

    install-all-in-one-seo-pack
    Pengujian SSH saat install plugin
  5. Plugin All in One SEO pack berhasil di install

    install-plugin-berhasil
    Pengujian Instal plugin dengan SSH berhasil
  6. Sekarang cobalah install theme melalui Dashboard > Themes > Add New. Pilih theme, kemudian install. Seharusnya berjalan mulus tanpa hambatan.

Mengganti User dan Grup PHP

Jika kamu mencoba mengedit theme melalui Dashboard > Appearance > Editor maka tidak akan muncul tombol update untuk menyimpan perubahan. Terdapat informasi dari wordpress seperti gambar di bawah

tidak-bisa-edit-theme
Tidak bisa edit theme

Di situ disebutkan, bahwa kamu perlu hak akses untuk menyimpan perubahan. Cara untuk memperbaikinya adalah sebagai berikut

  1. Buatlah file kosong dengan nama info.php
    $    sudo nano /usr/share/nginx/html/info.php

    Ketiklah kode dibawah ini

    <?php
    
        phpinfo();
    
    ?>

    Simpan file tersebut

  2. Buka file tersebut dengan browser http://nama-domain-atau-ip-address/info.php
  3. Pada bagian environment terlihat user yang menjalankan PHP adalah www-data

    php-user-wp-user
    PHP Environement
  4. Rubah user tersebut menjadi wp-user
     $    sudo nano /etc/php5/fpm/pool.d/www.conf

    Untuk PHP 7.2 dan Ubuntu 18, file http://www.conf terletak di

    /etc/php/7.2/fpm/pool.d/www.conf

    Cari

    user = www-data
    
    group = www-data

    Rubah menjadi

    user = wp-user
    
    group = wp-user

    simpan file tersebut

  5. Restart kembali PHP
    $    sudo service php5-fpm restart
  6. Reload kembali info.php di browser dan lihat di bagian environment, user php telah berubah menjadi wp-user
  7. Cek kembali apakah theme file bisa di edit melalui Dashboard > Appearance > Editor

    bisa-edit-theme
    Sekarang sudah bisa edit theme
  8. Hapus file info.php
    $    sudo rm /usr/share/nginx/html/info.php

Sekarang, wordpress milikmu telah memiliki pembagian hak akses yang sesuai denga rekomendasi WordPress. Tapi, mengatur hak akses adalah langkah awal untuk meningkatkan keamanan blog. Cara untuk lebih meningkatkan keamanan Wordrpress akan dibahas pada artikel terpisah.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: