6. File dan Direktori Permissions
Summary Command
chmod
chgrp
umask
groups
id -Gn
Apa yang akan dipelajari
- Symbolic permissions
- Numeric / octal permissions
- Perbedaan file dan directory permission
- Cara mengubah permissions
- Cara bekerja dengan groups
- File creation mask
Permissions
ls -l
-rw-r--r-- 1 malik penulis 124 Jan 28 21:29 info.me
drwxr-xr-x 2 malik penulis 19 Nov 7 15:11 firstdir
lrwxrwxrwx 1 malik penulis 14 Feb 9 13:20 to_dir -> dir1/dir2/dir3
note :
- = File biasa
d = Directory
l = Symbolic link
r = Read
w = Write
x = Execute
Permissions - Files vs Directory
File :
Read (r) = Mengizinkan untuk membaca konten sebuah file
Write (w) = Mengizinkan untuk memodifikasi konten sebuah file
Execute (x) = Mengizinkan untuk menjalankan file tersebut sebagai program
Directory :
Read (r) = Mengizinkan untuk melihat nama file didalam direktori
Write (w) = Mengizinkan untuk memodifikasi/mengedit file didalam direktori
Execute (x) = Mengizinkan untuk melihat metadata tentang file yang ada didalam direktori, juga mengizinkan untuk masuk kedalam directory tersebut.
Kategori Permission
- Terdapat kategori pengguna yang bisa menerapkan permission read, write, dan execute
- Kategori tersebut adalah :
u = User
g = Group
o = Other
a = All
note :
- u mewakili pengguna yang memiliki file tersebut
- g mewakili pengguna yang ada didalam group file
- o mewakili pengguna yang bukan pemilik dan tidak berada didalam group file
- a mewakili semua orang
Groups
- Setiap user dalam linux memiliki setidaknya satu group yang disebut primary group.
- Satu user bisa mempunyai banyak group
- Group digunakan untuk mengatur user
- Perintah "groups" menampilkan group dari sebuah user
- Alternatif lain yaitu dengan menggunakan perintah "id -Gn".
ex :
groups
id -Gn
output :
malik penulis
malik penulis
atau
ex :
groups malik
id -Gn
output :
malik : malik penulis
malik penulis
Penjelasan format simbol permission
-rw-r--r--
expanation :
- Tanda (-) pada karakter pertama memberitahu apa jenis file tersebut (dalam hal ini file biasa)
- Tiga karakter pertama (rw-) merupakan permission untuk user/owner file (read dan write)
- Tiga karakter selanjutnya (r--) merupakan permission untuk anggota group (read saja)
- Tiga karakter terakhir (r--) merupakan permission untuk other (read saja)
note : Jenis file : (-) file biasa, (d) Directory, (l) Link
Mengganti Permissions
- Permission juga dikenal sebagai mode, itulah sebabnya untuk mengganti permission menggunakan perintah "chmod" yang merupakan singkatan dari change mode.
Format perintah :
chmod mode file_name
- Terdapat beberapa cara untuk menentukan mode. yaitu menggunakan notasi simbolik dan notasi numerik.
Format notasi simbolik
chmod ugoa/+-=/rwx
note :
u = user
g = group
o = other
+ = Menambahkan permission
- = Menghapus/Menghilangkan permission
= = Mengatur permission
r = read
w = write
x = execute
- Tanda (/) digunakan sebagai pemisah antara kategori user, Operator, dan Jenis permission
ex :
ls -l info.me
chmod g+w info.me
ls -l info.me
chmod g-w info.me
ls -l info.me
chmod g+wx info.me
ls -l info.me
chmod u+rwx,g-x info.me
ls -l
chmod a=r info.me
ls -l
chmod u=rwx,g=rx,o= info.me
ls -l
output :
-rw-r--r-- 1 malik malik 124 Feb 11 14:11 info.me
-rw-rw-r-- 1 malik malik 124 Feb 11 14:11 info.me
-rw-r--r-- 1 malik malik 124 Feb 11 14:11 info.me
-rw-rwxr-- 1 malik malik 124 Feb 11 14:11 info.me
-rwxrw-r-- 1 malik malik 124 Feb 11 14:11 info.me
-r--r--r-- 1 malik malik 124 Feb 11 14:11 info.me
-rwxr-x--- 1 malik malik 124 Feb 11 14:11 info.me
Format notasi numerik / Octal
- Pada mode oktal/numerik, permission berbasis biner.
- Setiap jenis permission diperlakukan sebagai bit yang disetel ke off (0) atau on (1)
r w x
0 0 0 Nilai binary untuk off
1 1 1 Nilai binary untuk on
4 2 1 Bilangan desimal (digunakan)
artinya : read (r) = 4 write(w) = 2 execute(x) = 1
- Permission ditentukan dengan menjumlahkan semua nilai untuk setiap jenis permission
- Terdapat 8 kemungkinan nilai dari 0 sampai 7. Oleh sebab itu dinamakan octal mode
Octal Binary String Description
0 0 --- No permissions
1 1 --x Execute only
2 10 -w- Write Only
3 11 -wx Write and execute (2+1)
4 100 r-- Read only
5 101 r-x Read and execute (4+1)
6 110 rw- Read and write (4+2)
7 111 rwx Read, write, and execute (4+2+1)
Urutan Mempunyai arti :
U G O
Symbolic rwx r-x r--
Binary 111 101 100
Decimal 7 5 4
ex :
chmod 754 file_name
Permission yang paling umum digunakan
Symbolic Octal
-rwx------ 700
-rwxr-xr-x 755
-rw-rw-r-- 664
-rw-rw---- 660
-rw-r--r-- 644
Permission yang jarang/berbahaya untuk digunakan
Symbolic Octal
-rwxrwxrwx 777 = Biasanya untuk jenis file program
-rw-rw-rw- 666 = Biasanya untuk jenis file biasa
Bekerja dengan group
- Saat kita membuat file, group disetel ke group utama/primary group kita
- Jika ingin mengubah group sebuah file, gunakan perintah :
chgrp group_name file_name
ex :
chgrp penulis my.info
chmod g+w my.info
ls -ld /usr/local/penulis
mv my.info /usr/local/penulis
ls -l /usr/local/penulis
output :
drwxrwxr-x 2 root penulis 21 Feb 14 22:36 /usr/local/penulis
-rw-rw-r-- 1 malik penulis 129 Feb 14 22:41 my.info
Penjelasan :
- mengubah primary group pada file my.info menjadi penulis agar semua anggota dari group penulis bisa mengakses file my.info
- Menambahkan izin write(w) pada file my.info agar semua anggota group penulis bisa memodifikasi file my.info
- Mempersiapkan directory yang bisa diakses oleh umum yaitu /usr/local/penulis
- Memindahkan file my.info ke directory /usr/local/penulis agar file bisa diakses oleh umum
- Melihat hasil long list dari file my.info
Mereview Ulang Directory Permission
- Permission pada sebuah directory dapat mempengaruhi file yang ada dalam directory tersebut.
- Tidak memiliki permission yang tepat pada directory akan mempengaruhi eksekusi pada file didalam directory tersebut. Jika kita yakin permission untuk file sudah benar, lihatlah kembali permission directory yang menyimpan file terebut.
- Selanjutnya cek kembali direktori induk dari direktori tersebut, lakukan terus sampai ke akar dari directory yaitu root (/) ex :
chmod 400 my-cat
ls -ld my-cat
ls -l my-cat
chmod 500 my-cat
my-cat/cat
ls -l my-cat
output :
dr-------- 2 malik malik 17 Feb 8 14:31 my-cat
ls: cannot access my-cat/cat: Permission denied
total 0
-????????? ? ? ? ? ? cat
This is my cat. Meow
-rwxr-xr-x 1 malik malik 42 Feb 8 14:32 cat
note :
- Pada perintah diatas, directory my-cat hanya mempunyai izin membaca oleh user malik. Jadi saat user malik menjalankan perintah ls -l my-cat, yang bisa dilihat hanya nama file yang ada didalam directory tersebut.
- Selanjutnya user malik diberikan izin untuk mengeksekusi(x) directory my-cat, user dapat menjalankan program yang ada didalam directory my-cat yaitu cat. dengan izin eksekusi user juga dapat melihat seluruh metadata file cat yang ada dalam directory my-cat.
File Creation Mask
- File creation mask menentukan permission default saat file dibuat.
- Jika tidak ada mask yang digunakan maka permission defaultnya adalah :
777 untuk direktori
666 untuk file
Perintah umask
format :
umask [-S] [mode]
note :
- Perintah umask mengatur file creation mask ke mode yang diberikan
- -S berarti umask akan menampilkan dan menerima notasi simbolis.
- mode yang diberikan ke perintah umask bekerja secara berlawanan dengan mode yang diberikan kepada perintah chmod
- Pada chmod, mode 7 berarti izin untuk read, write, dan execute. Pada umask, mode 7 berarti tidak ada izin yang diberikan.
umask bekerja dengan cara mengurangkan base permission yaitu 777 untuk direktori dan 666 untuk file. Contoh :
Directory File
Base Permission 777 666
Substract Umask -022 -022
Creations Permission 755 644
Directory File
Base Permission 777 666
Substract Umask -002 -002
Creations Permission 775 664
note : menggunakan umask 002 sangat ideal untuk bekerja dengan anggota group, karena permission memungkinkan anggota group untuk memanipulasi file dan direktori yang kita buat.
Pengurangan octal merupakan estimasi
- Perlu diketahui metode pengurangan octal base permission seperti diatas hanya merupakan estimasi, artinya dalam beberapa kasus pengurangan terhadap octal terlihat salah. Contoh :
Directory File
Base Permission 777 666
Substract Umask -007 -007
Creations Permission 770 660*
Mode umask yang umum digunakan
022
002
077
007
Tabel dibawah ini berisi semua permission yang dihasilkan dari setiap satu dari delapan permutasi umask :
Octal Binary Dir Permission File Permission
0 0 rwx rw-
1 1 rw- rw-
2 10 r-x r--
3 11 r-- r--
4 100 -wx -w-
5 101 -w- -w-
6 110 --x ---
7 111 --- ---
note : Perhatikan bahwa saat mengurangkan base permission dengan octal umask pada tipe file, apapun dengan hasil permission execute(x) akan dihilangkan. Contoh 7 - 4 = 3. Seharusnya adalah write(w) dan execute(x), namun permission execute(x) dihilangkan jadi yang tersisa hanya write(w).
Special Modes
- Jika kita menjalankan perintah "umask" tanpa argumen, maka akan menampilkan 4 karakter, bukan tiga
- Tiga karakter yang sudah dibahas sebelumnya merepresentasikan user, group, dan other
- Terdapat 1 karakter/class lagi, class ini disebut sebagai special modes.
- Special modes tersebut adalah :
setuid
setgid
sticky
- umask 0022 sama dengan umask 022
- chmod 0644 sama dengan chmod 644 ex :
mkdir testumask
cd testumask
umask
umask -S
mkdir a-dir
touch a-file
ls -l
rmdir a-dir
rm a-file
umask 007
umask
umask -S
mkdir a-dir
touch a-file
ls -l
output :
0022
u=rwx,g=rx,0=rx
drwxr-xr-x 2 malik malik 6 Feb 16 22:36 a-dir
-rw-r--r-- 1 malik malik 0 Feb 16 22:36 a-file
0007
u=rwx,g=rwx,o=
drwxrwx--- 2 malik malik 6 Feb 16 22:48 a-dir
-rw-rw---- 1 malik malik 0 Feb 16 22:48 a-file