Managing File System Permissions from the Command Line
Published: 2024-04-15 04:27:53

Perintah untuk mengubah izin file dan direktori adalah **chmod**, yang berarti "change mode" (izin juga disebut sebagai mode dari sebuah file). Perintah **chmod** diikuti dengan instruksi pengaturan izin dan daftar file atau direktori yang ingin diubah izinnya. Instruksi pengaturan izin dapat diberikan secara simbolik atau numerik. Administrator berpengalaman sering menggunakan metode numerik karena lebih singkat untuk diketik dan diucapkan. Metode ini juga menawarkan kontrol penuh atas semua hak akses.

**Mengubah Izin dengan Metode Simbolik:**

```
chmod WhoWhatWhich file|directory
```

•	**Who** : **u** untuk pengguna (user), **g** untuk grup (group), **o** untuk lainnya (other), dan **a** untuk semua (all)
•	**What** : **+** untuk menambah izin, **-** untuk menghapus izin, dan **=** untuk mengatur ulang seluruh izin
•	**Which** : **r** untuk baca (read), **w** untuk tulis (write), **x** untuk eksekusi (execute), dan Huruf kapital **X** dapat digunakan untuk menambahkan izin eksekusi hanya jika file tersebut adalah direktori atau sudah memiliki izin eksekusi untuk pengguna, grup, atau lainnya.

> **Catatan:**
> Perintah chmod mendukung opsi **-R** untuk mengubah izin secara rekursif pada semua file di dalam struktur direktori. Gunakan opsi **X** dengan hati-hati karena dapat mengatur izin eksekusi pada file yang sebenarnya tidak membutuhkannya.

**Contoh:**
•	Menghapus izin baca dan tulis untuk grup dan lainnya pada file1:

```
[user@host ~]$ chmod go-rw file1
```

•	Menambahkan izin eksekusi untuk semua pada file2:

```
[user@host ~]$ chmod a+x file2
```

**Mengubah Izin dengan Metode Numerik**

Pada contoh di bawah, karakter **#** mewakili sebuah digit.

```
chmod ### file|directory
```
Setiap digit mewakili izin untuk tingkat akses: pengguna, grup, lainnya. Serta, dihitung dengan menjumlahkan angka untuk setiap izin yang ingin ditambahkan: 4 untuk baca (read), 2 untuk tulis (write), dan 1 untuk eksekusi (execute)

**Contoh Perhitungan Izin Numerik:**
•	Misalkan kita memiliki izin simbolik **-rwxr-x---**.
•	Untuk pengguna (user), **rwx** dihitung sebagai 4 (baca) + 2 (tulis) + 1 (eksekusi) = 7.
•	Untuk grup (group), **r-x** dihitung sebagai 4 (baca) + 0 (tulis) + 1 (eksekusi) = 5.
•	Untuk lainnya (other), **---** diwakili angka 0.
•	Sehingga, representasi numerik dari izin tersebut adalah 750 (7 untuk user, 5 untuk group, dan 0 untuk other).

**Konversi juga bisa dilakukan sebaliknya, dari numerik ke simbolik. Misalnya, izin numerik 640:**
•	Angka 6 pada user menunjukkan hak akses baca (4) dan tulis (2), sehingga simboliknya menjadi **rw-**.
•	Angka 4 pada group menunjukkan hanya hak akses baca (4), sehingga simboliknya menjadi **r--**.
•	Angka 0 pada other menunjukkan tidak ada hak akses (**---**).
•	Jadi, izin simbolik lengkap untuk angka 640 adalah **-rw-r-----**.

**Contoh Penggunaan chmod dengan Metode Numerik:**
•	Mengatur hak akses baca dan tulis untuk user, baca untuk grup dan lainnya pada file **samplefile**:

```
[user@host ~]$ chmod 644 samplefile
```
•	Mengatur hak akses baca, tulis, dan eksekusi untuk user, baca dan eksekusi untuk grup, dan tanpa hak akses untuk lainnya pada direktori **sampledir**:

```
[user@host ~]$ chmod 750 sampledir
```

**Mengubah Kepemilikan Pengguna atau Grup File dan Direktori**

File yang baru dibuat adalah milik pengguna yang membuat file tersebut. Secara default, file baru memiliki kepemilikan grup yang merupakan grup utama pengguna yang membuat file. Di Red Hat Enterprise Linux, grup utama pengguna biasanya berupa grup pribadi yang hanya berisi pengguna tersebut sebagai anggotanya. Untuk memberikan akses ke file berdasarkan keanggotaan grup, grup pemilik file mungkin perlu diubah.

Hanya **root** dapat mengubah pengguna yang memiliki file. Namun kepemilikan grup dapat diatur oleh **root** atau oleh pemilik file. rootdapat memberikan kepemilikan file kepada grup mana pun, namun pengguna biasa dapat menjadikan grup sebagai pemilik file hanya jika mereka adalah anggota grup tersebut.

**Perintah chown**
Perintah **chown** digunakan untuk mengubah kepemilikan user dan grup pada file dan direktori.
•	Contoh: Memberikan kepemilikan file **test_file** kepada user **student:**

```
[root@host ~]# chown student test_file
```
Opsi **-R** digunakan untuk mengubah kepemilikan secara rekursif pada semua file di dalam struktur direktori.
•	Contoh: Memberikan kepemilikan direktori **test_dir** dan semua isinya kepada user **student:**

```
[root@host ~]# chown -R student test_dir
```
**chown** juga dapat mengubah kepemilikan grup dengan menambahkan titik dua (**:**) sebelum nama grup.
•	Contoh: Mengubah kepemilikan grup direktori **test_dir** menjadi **admins:**

```
[root@host ~]# chown :admins test_dir
```
**chown** dapat mengubah kepemilikan user dan grup secara bersamaan menggunakan format **pemilik:grup.**
•	Contoh: Mengubah kepemilikan direktori test_dir menjadi user **visitor** dan grup **guests:**

```
[root@host ~]# chown visitor:guests test_dir
```

**Perintah chgrp**
Beberapa pengguna menggunakan **chgrp** untuk mengubah kepemilikan grup. Cara kerja **chgrp** mirip dengan **chown**, tetapi khusus untuk kepemilikan grup dan tidak memerlukan titik dua (**:**) sebelum nama grup.