Masih berlanjut pembahasan mengenai hak izin akses (access permission). Kalau artikel kemarin kita hanya membahas hanya pada tahap pengenalan apa itu access permission dan macam-macam atribut yang berkenaan dengan berkas. Nah pembahasan sekarang ini, akan kita bahas tentang bagimana cara merubah access permission tersebut di GNU/Linux.

Perlu diketahui tutorial di sini adalah tutorial standar GNU/Linux. Ini artinya tidak berpengaruh terhadap distro Linux apa yang Anda gunakan. Memang pada kenyataannya dalam penulisan ini, saya mempraktekannya di distro Arch Linux.

Nilai Permission

Sebelum masuk ke cara merubah permission. Ada beberapa nilai yang perlu kita ketahui.

Nilai Standar

NilaiNama
1Execute
2Write
4Read

Nilai Gabungan

Lalu jika kita ingin menjadikan suatu berkas tersebut memiliki permission baca dan tulis tinggal tambahkan saja. r = 4, w=2 jadi 4+2 = 6. Jadi permission untuk r+w adalah 6.

NilaiGabunganNama
10 + 1Execute
20 + 2Write
32 + 1Write + Execute
40 + 4Read
54 + 1Read + Execute
64 + 2Read + Write
74 + 2 + 1Read + Write + Execute

Sederhananya lihat gambar diagram berikut:

[caption id=“attachment_2238” align=“alignnone” width=“332”] Sumber gambar:
https://blog.linoxide.com/wp-content/uploads/2012/09/Linux_permissions.png[/caption]

chmod

Untuk mengubah suatu permission di GNU/Linux kita gunakan chmod dari Terminal. Perintah sederhananya:

chmod 0641 nama_berkas

atau bisa Anda gunakan tambahan sudo.

sudo chmod 0641 nama_berkas

Penjelasan

Pada baris 0641 merupakan kombinasi angka 6 untuk user, 4 untuk group, dan 1 untuk others. Adapun untuk angka nol di awal merupakan special permission, untuk mengatur sticky bit, suid, guid, boleh ditulis boleh tidak (mengenai ini akan dibahas di artikel selanjutnya). Saran saya lebih baik ditulis untuk memudahkan orang lain membacanya.

Jika kita sulit untuk membaca notasi angka, kita bisa menulis permission dengan notasi huruf, seperti r, w, x. Adapun penulisnya disesuaikan dengan UGO (User Group Others) . Contoh:

chmod u=r+w,g=r,o=x nama_berkas

Jika ingin semua gunakan notasi A (all) .

chmod a=r+w+x nama_berkas

Kita juga bisa menyingkatnya menjadi:

chmod -w nama_berkas

Perhatian penyingkatan kata tersebut sama berlakunya dengan penyingkatan a. Artinya jika Anda menulis chmod -w sama dengan chmod a-w.

Untuk notasi plus (+) merupakan notasi untuk di-set . Jika kita mau di-unset tinggal diubah saja menjadi minus (-) . Sedangkan notasi sama dengan (=) artinya reset (mengeset ulang), contoh

chmod u=r-w,g=r,o=w+x nama_berkas

atau

chmod u=r-w,g+r,o-x nama_berkas

Rekursif

Jika berkas dalam suatu direktori ingin kita sama semua bisa kita gunakan argumen -R contoh:

chmod 0644 -R /tempat/direktori/

Perhatian perintah rekursif ini berlaku untuk seluruh berkas ataupun direktori yang berada dalam direktori yang diset tersebut. Artinya jika Anda mengeset direktori /tempat/direktori/ artinya semua berkas yang berada di sana akan diset menjadi 0644. Lalu bagimana jika kita ingin memberikan permission hanya pada berkas saja atau direktori saja? Kita bisa memanfaatkan kombinasi antara chmod dengan find.

Contoh untuk mengset hanya pada berkas saja:

find /tempat/direktori -type f -exec chmod 0644 {} \;

Contoh untuk mengset hanya pada direktori saja:

find /tempat/direktori -type d -exec chmod 0755 {} \;

Perhatian! Cermati betul perintah di atas, jangan sampai salah untuk tanda \; setelah {} harus dispasi .

chown

Pada perintah di atas kita hanya mengeset kepemilikan pada user yang sedang digunakan. Bagaimana jika untuk mengubah kepemilikan dari salah satu user ke user lainnya? Atau memasukan salah satu user ke salah satu group agar disamakan permission-nya dengan salah satu group tersebut? Kita gunakan perintah chmod, adapun perintahnya adalah sebagai berikut:

sudo chown user:group /nama/direktori/atau/berkas -R

Penjelasan

Untuk perintah chown kita wajib gunakan sudo. Sedangkan user dan group sesuaikan dengan namanya. Bagaimana jika kita tidak tahu user atau group yang itu apa saja? Kita bisa gunakan perintah berikut untuk mengetahui isi user:

cut -d: -f1 /etc/passwd | less

Untuk mengetahui isi group:

cut -d: -f1 /etc/group | less

Adapun perintah atau argumen -R di atas, merupakan rekursif artinya jika Anda cuma ingin merubah satu direktori atau satu berkas, bisa hilangkan argumen rekursif tersebut.

Current User/Group

Perintah chown di atas adalah bagaimana kita mengeset ulang pada user atau group. Bagaimana jika kita hanya ingin menganti user nya saja atau group-nya saja? Berikut ini perintah untuk menganti group kepemilikian dari current user (pengguna yang sedang digunakan saat ini).

sudo chown :group /nama/direktori/atau/berkas

Untuk menganti kepemilikan pengguna menggunakan current group:

sudo chown user: /nama/direktori/atau/berkas

Kita jika bisa menambahkan argumen rekursif -R:

sudo chown user: /nama/direktori/atau/berkas -R
sudo chown :group /nama/direktori/atau/berkas -R

Kesimpulan

chmod adalah perintah untuk merubah hak izin akses (access permission), sedangkan chown adalah perintah untuk menganti kepemilikan. Kita melihat perintah chmod 0644 berkas, perintah tersebut berarti untuk user=6,group=4,others=4 adapun perintah 0 di awal merupakan special permission yang digunakan untuk mengeset sticky bit, suid, dan guid. Pelajaran mengenai itu, akan kita bahas pada artikel selanjutnya. Fokus pertama, kita pahami dulu perintah UGO (user group others).

Semoga bermanfaat.

Sumber

* man chmod
* man chown
* man find
* <a href="https://wiki.archlinux.org/index.php/File_permissions_and_attributes" target="_blank">https://wiki.archlinux.org/index.php/File_permissions_and_attributes</a>
* <a href="https://askubuntu.com/questions/410244/a-command-to-list-all-users-and-how-to-add-delete-modify-users" target="_blank">https://askubuntu.com/questions/410244/a-command-to-list-all-users-and-how-to-add-delete-modify-users</a>