Managing File System Permissions from the Command Line Objectives
Tags: ramadhanbersamaredhat, rh124, chapter7, cloudcomputing
Published: 2024-03-23 03:51:05

**Mengubah Izin File dan Direktori**
Perintah yang digunakan untuk mengubah perizinan dari baris perintah adalah **chmod**, yang berarti "ubah mode" (perizinan juga disebut mode file). Perintah **chmod** membutuhkan instruksi izin yang diikuti dengan daftar file atau direktori yang akan diubah. Instruksi izin dapat diberikan secara simbolik (metode simbolik) atau numerik (metode numerik).

**Mengubah Izin dengan Metode Simbolik**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/19yybx3jcvlpf9vos4vh.png)
- _Who_ is u, g, o, a (untuk pengguna, grup, lainnya, semua)
- _What_ itu +, -, = (untuk menambah, menghapus, mengatur dengan tepat)
- _Which_ is r, w, x (untuk membaca, menulis, menjalankan)

Metode _simbolik_ untuk mengubah izin file menggunakan huruf untuk mewakili berbagai kelompok izin: **u** untuk pengguna, **g** untuk grup, **o** untuk lainnya, dan **a** untuk semua.

Dengan metode simbolik, Anda tidak perlu menetapkan grup izin baru yang lengkap. Sebagai gantinya, Anda dapat mengubah satu atau beberapa izin yang sudah ada. Gunakan **+** atau **-** untuk menambah atau menghapus izin, atau gunakan **=** untuk mengganti seluruh set untuk sekelompok izin.

Perijinan itu sendiri diwakili oleh satu huruf: **r** untuk read, **w** untuk write, dan **x** untuk execute. Ketika menggunakan **chmod** untuk mengubah perijinan dengan metode simbolik, menggunakan huruf kapital X sebagai flag perijinan akan menambahkan perijinan eksekusi hanya jika berkas tersebut adalah direktori atau telah memiliki perijinan eksekusi untuk user, grup, atau lainnya.

- Catatan
Perintah chmod mendukung opsi **-R** untuk mengatur perizinan secara rekursif pada berkas-berkas di seluruh pohon direktori. Ketika menggunakan opsi **-R**, akan sangat berguna untuk mengatur izin secara simbolis menggunakan opsi **X**. Hal ini memungkinkan izin eksekusi (pencarian) ditetapkan pada direktori sehingga isinya dapat diakses, tanpa mengubah izin pada sebagian besar file. Namun, berhati-hatilah dengan opsi **X**, karena jika sebuah file memiliki izin eksekusi yang ditetapkan, **X** akan menetapkan izin eksekusi yang ditentukan pada file tersebut juga. Sebagai contoh, perintah berikut ini secara rekursif mengatur akses baca dan tulis pada demodir dan semua anaknya untuk pemilik grup mereka, tetapi hanya menerapkan izin eksekusi grup untuk direktori dan berkas yang telah memiliki set eksekusi untuk pengguna, grup, atau yang lain.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pgtmtd5s654z6pgwufec.png)

**Contoh**
- Hapus izin baca dan tulis untuk grup dan lainnya pada file1:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/knoybhaf3ut53ntw30oy.png)
- Tambahkan izin eksekusi untuk semua orang di file2:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cmozhncaz0qfkbijvjdl.png)


**Mengubah Izin dengan Metode Numerik**
Pada contoh di bawah ini, karakter # mewakili sebuah angka.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e4f4xidwdtceneanz61p.png)
- Setiap angka mewakili izin untuk tingkat akses: pengguna, grup, lainnya.
- Digit dihitung dengan menjumlahkan angka untuk setiap izin yang ingin Anda tambahkan, 4 untuk baca, 2 untuk tulis, dan 1 untuk eksekusi.

Dengan menggunakan metode numerik, izin diwakili oleh angka oktal 3 digit (atau 4 digit, saat mengatur izin tingkat lanjut). Satu digit oktal dapat mewakili nilai tunggal dari 0-7.

Dalam representasi izin oktal (numerik) 3 digit, setiap digit mewakili satu tingkat akses, dari kiri ke kanan: pengguna, grup, dan lainnya. Untuk menentukan setiap digit:

1. Mulai dengan angka 0.
2. Jika izin baca harus ada untuk tingkat akses ini, tambahkan 4.
3. Jika izin tulis harus ada, tambahkan 2.
4. Jika izin eksekusi harus ada, tambahkan 1.

Periksa izin **-rwxr-x---**. Untuk pengguna, **rwx** dihitung sebagai 4+2+1=7. Untuk grup, **r-x** dihitung sebagai 4+0+1=5, dan untuk pengguna lain, **--- diwakili dengan 0**. Dengan menggabungkan ketiganya, representasi numerik dari perizinan tersebut adalah 750.

Perhitungan ini juga dapat dilakukan dengan arah yang berlawanan. Lihatlah izin 640. Untuk hak akses pengguna, 6 mewakili baca (4) dan tulis (2), yang ditampilkan sebagai **rw-**. Untuk bagian grup, 4 hanya mencakup read (4) dan ditampilkan sebagai **r--**. Angka **0** untuk lainnya tidak memberikan hak akses (---) dan set terakhir dari hak akses simbolik untuk berkas ini adalah **-rw-r-----**.

Administrator yang berpengalaman sering menggunakan izin numerik karena lebih singkat untuk diketik dan diucapkan, namun tetap memberikan kontrol penuh atas semua izin.

**contoh**

- Atur izin baca dan tulis untuk pengguna, izin baca untuk grup dan lainnya, pada file sampel:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/45cv258gk8e5wk2vlc8k.png)
- Atur izin baca, tulis, dan eksekusi untuk pengguna, izin baca dan eksekusi untuk grup, dan tidak ada izin untuk yang lain pada sampledir:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wz7gmkmb512gtmon91ci.png)

**Mengubah Kepemilikan Pengguna atau Grup File dan Direktori**
File yang baru dibuat dimiliki oleh pengguna yang membuat file tersebut. Secara default, file baru memiliki kepemilikan grup yang merupakan grup utama pengguna yang membuat file tersebut. Pada Red Hat Enterprise Linux, grup utama pengguna biasanya berupa grup privat yang hanya beranggotakan pengguna tersebut. Untuk memberikan akses ke file berdasarkan keanggotaan grup, grup yang memiliki file mungkin perlu diubah.

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

Kepemilikan berkas dapat diubah dengan perintah **chown** (ubah pemilik). Sebagai contoh, untuk memberikan kepemilikan file **test_file** kepada user **student**, gunakan perintah berikut:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2n6zskycwj1xedaqr4kr.png)
Perintah **chown** juga dapat digunakan untuk mengubah kepemilikan grup pada sebuah berkas dengan mendahului nama grup dengan tanda titik dua (:). Sebagai contoh, perintah berikut ini mengubah kepemilikan grup dari direktori **test_dir** menjadi **admins**:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5z9xvfvjq7vrqiavlhqt.png)
Perintah **chown** juga dapat digunakan untuk mengubah pemilik dan grup secara bersamaan dengan menggunakan sintaks **owner:group**. Sebagai contoh, untuk mengubah kepemilikan **test_dir** menjadi **visitor** dan grup menjadi **guest**, gunakan perintah berikut:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4zxi2l44gq82ivquvhvd.png)
Alih-alih menggunakan **chown**, beberapa pengguna mengubah kepemilikan grup dengan menggunakan perintah **chgrp**. Perintah ini bekerja seperti **chown**, kecuali bahwa perintah ini hanya digunakan untuk mengubah kepemilikan grup dan tanda titik dua (:) sebelum nama grup tidak diperlukan.

**Penting**
Anda mungkin menemukan contoh perintah **chown** yang menggunakan sintaks alternatif yang memisahkan pemilik dan grup dengan titik, bukan titik dua:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/569vd24os9glxsvzh0gz.png)
Anda sebaiknya tidak menggunakan sintaks ini. Selalu gunakan titik dua.

Titik adalah karakter yang valid dalam nama pengguna, tetapi titik dua tidak. Jika pengguna **enoch.root**, pengguna **enoch**, dan grup **root** ada di sistem, hasil **chown enoch.root filename** akan memiliki **filename** yang dimiliki oleh pengguna **enoch.root**. Anda mungkin pernah mencoba mengatur kepemilikan berkas ke **enoch** pengguna dan **root** grup. Hal ini dapat membingungkan.

Jika Anda selalu menggunakan sintaks **chown** saat mengatur pengguna dan grup secara bersamaan, hasilnya akan selalu mudah diprediksi.