- Back to Home »
- komputer »
- UNIX
Posted by : Unknown
Selasa, 30 Juni 2015
Izin Akses Unix
1. Jenis Pemakai
Pada sistem UNIX dikenal dua jenis pemakai yaitu:
·
Pemakai biasa adalah
pemakai yang di beri ijin untuk menggunakan sistem dan beberapa fasilitas lain
dalam Unix dengan batas – batas perijinan tertentu. Dengan demikian pemakai
biasa tidak dapat secara bebas keluar masuk
direktori lain atau tidak dapat secara bebas menggunakan file – file di
dalam sistem.
·
Super user adalah pemakai
yang memiliki hak istimewa di dalam sistem Unix karena memiliki kemampuan yang
tidak di batasi oleh perijinan yang diterapkan pada sistem. Super user dapat keluar
masuk direktori atau menggunakan file secara bebas. Pada umumnya super user
dimiliki oleh administrator sistem. Administrator sistem adalah pemakai yang
bertanggung jawab untuk mengelola sistem.
2. Izin Mengakses pada File dan Direktori
Unix membagi 3 kelas yang berhak mengakses sebuah file :
·
Owner
adalah pemakai yang menciptakan file
·
Group
adalah kelompok dari sejumlah
pemakai (setiap pemakai mempunyai group misalnya sejumlah orang yang terlibat
dalam sebuah proyek mempunyai group yang sama dan berhak mengakses suatu file
dengan hak akses yang sama).
·
Other
adalah pemakai diluar owner dan group.
UNIX juga memberikan 3 jenis model akses terhadap sebuah
file, yaitu:
·
Read adalah izin untuk membaca file atau
nama file yang ada pada sebuah direktori.
·
Write adalah izin untuk memodifikasi,
menciptakan atau menghapus entri di direktori.
·
Execute adalah izin untuk mengeksekusi file
(file executable seperti who, cal, atau file shell script).
Tanda yang digunakan
untuk mengakses file adalah :
r = Hak read
w = Hak write
x = Hak execute
- = Tidak ada izin
r = Hak read
w = Hak write
x = Hak execute
- = Tidak ada izin
r w x
r w x r w
x
Owner Group Other
Contoh :
·
r
w x r w x - - xØ
Menyatakan bahwa owner dan group mempunyai izin read, write dan execute, tetapi other hanya memiliki izin execute
Menyatakan bahwa owner dan group mempunyai izin read, write dan execute, tetapi other hanya memiliki izin execute
·
r w x - - - - - -Ø
Menyatakan bahwa owner mempunyai izin read, write dan execute, tetapi group dan other sama sekali tidak memiliki akses file.
Menyatakan bahwa owner mempunyai izin read, write dan execute, tetapi group dan other sama sekali tidak memiliki akses file.
3. Mengubah Model Akses dan
Kepemilikan File
Perintah yang berkaitan dengan model akses dan kepemilikan
file atau direktori yaitu:
– chmod (change mode)
– chown (change owner)
– chgrp (change group)
– chmod (change mode)
– chown (change owner)
– chgrp (change group)
a)
Format perintah chmod
Struktur dasar dari
perintah chmod adalah :
chmod [OPTION]
[--recursive] [--changes] [--silent] [--quiet] [--verbose] [--help] [--version]
mode file
OPTION:
-c, -changes : Verbose, menampilkan hanya
file-file yang memiliki hak akses yang berubah.
-f, -silent, -quiet : Tidak menampilkan pesan kesalahan
mengenai file-file yang hak aksesnya tidak dapat diubah.
-v, -verbose :
Menampilkan penjelasan perubahan hak akses.
-R, -recursive : Secara rekursif merubah hak
akses direktori dan isinya.
-help : Menampilkan cara
penggunaan program.
-version : Menampilkan informasi
versi program.
Perintah chmod merubah
hak akses file menurut mode. Mode disini dapat berupa sebuah simbol atau angka oktal
yang mewakili pola bit untuk membuat perubahan hak akses yang baru. Chmod tidak
akan merubah hak akases dari symbolic link; sistem call chmod tidak dapat
mengubah hak akses file-file tersebut.
§ Penggunaan Mode Simbol
Struktur dasar perintah untuk penggunaan mode simbol adalah sebagai
berikut :
‘[ugoa...][[+-=][rwxXstugo...]...][,...]’
Keterangan :
u : Pemilik (user)
g : Group
o : Other
a : Seluruh user
+ : Tanda ini menyebab sebuah hak akses tersebut ditambahkan
ke sebuah file.
- : Tanda ini
menyebabkan hak akses dihapus.
= : Tanda ini menyebabkan hanya hak akses itu saja yang
dimiliki oleh file yang bersangkutan.
r : Hak akses untuk baca.
w : Hak akses tulis.
x : Hak akses eksekusi.
X : Mengeksekusi hanya bila file adalah sebuah direktori
atau sudah memiliki hak akses eksekusi untuk beberapa user.
s : Mengeset ID user atau ID group pada saat eksekusi.
t : Menyimpan teks program pada swap device.
Karakter r diwakili bilangan 4
Karakter w diwakili bilangan 2
Karakter x diwakili bilangan 1
Tanpa izin akses diwakili oleh bilangan 0
Contoh: $ chmod 700 nama_file [4(r)+2(w)+1(x)=7]
Jika ingin memberi akses read, write, execute pada user dan
tanpa izin akses pada group dan other.
Untuk mengubah kepemilikan sebuah file kita bisa mempergunakan perintah
chown yang memiliki format yang sama dengan perintah chmod. Bedanya yang kita
ubah adalah kepemilikan sebuah file. Sintak yang digunakan adalah:
chown
<users><objek yang ingin diubah>
Misalnya kita ingin mengubah kepemilikan folder windowshare diatas, dari
root kepada user dengan login linuz, maka kita tinggal melakukan perintah:
# chown
linuz /home/windowshare
Untuk mengubah group pemilik sebuah file kita bisa mempergunakan perintah
chgrp yang juga memiliki format yang sama dengan perintah chown. Bedanya yang
kita ubah adalah group pemiliknya. Misalkan kita ingin mengubah group pemilik
folder windowshare diatas, dari users kepada group linuzgroup, kita tinggal
melakukan perintah:
#chgrp
linuzgroup /home/windowshare
5. Link
antar File
·
Symlink
Symlink adalah
file khusus yang berisi path absolut atau relatif. Saat sebuah path hendak diresolusi
(yaitu, ditelusuri elemen-elemennya dari teratas hingga terbawah untuk menemukan
file/direktori), jika elemen path mengandung symlink maka ini akan dapat
"membelokkan" atau mengubah proses pencarian.
Contoh:
jika /home/steven adalah sebuah direktori, /home/steven/tmp adalah sebuah symlink
yang berisi path "/tmp" (path absolut) maka ketika /home/steven/tmp diresolusi,
hasilnya adalah /tmp. Dan ketika /home/steven/tmp/f1.txt diresolusi, hasilnya adalah
/tmp/f1.txt.
$ cd /tmp
$ echo "ini file /tmp/f1.txt" > f1.txt; #
membuat file contoh
$ cd /home/steven
$ ln -s /tmptmp; # membuatsymlinkke /tmp
$ ls -l tmp
lrwxrwxrwx 1 stevensteven 4 2008-06-28 15:23 tmp -> /tmp
$ ls -l /home/steven/tmp/1.txt; # akanmerujukke /tmp/f1.txt
-rw-r--r-- 1 stevensteven 2 2008-06-28 15:26 tmp3/f1.txt
Contoh lain, jika /home/steven/bin adalah sebuah symlink ke
"../scripts" (path relatif) maka ketika /home/steven/bin/script1
diresolusi akan menjadi /home/steven/scripts/script1.
Catatan: seperti bisa dilihat pada contoh di atas,
perintah ls menampilkan symlink beserta isi/targetnya dengan notasi
tanda panah ->.
Saya yakin konsep symlink ini tidak terlalu sulit untuk dimengerti.
Bagi pemakai Windows, symlink ini mirip seperti file shortcut (*.LNK), walau kelakuannya
tidak persis sama (namun NTFS di Vista memiliki symlink yang lebih mirip Unix).
Membaca/tulis
path yang mengandung symlink
Jika sebuah symlink dibaca, maka yang terbaca adalah file
hasil resolusi.Mengikuti contoh di atas:
$ cat /home/steven/tmp/1.txt
ini file /tmp/f1.txt
$ cat /tmp/1.txt
ini file /tmp/f1.txt
Demikian juga jika kita hendak mengedit atau menulisi sebuah symlink:
$ echo "file initelahberubahisinya"
>/home/steven/tmp/1.txt
$ cat /home/steven/tmp/f1.txt
File ini telah berubah isinya
$ cat /tmp/f1.txt
File ini telah berubah isinya
Dalam membaca/tulis file, permission yang akan dipakai pun adalah
permission dari target symlink (file aslinya), bukan permission dari symlink itu
sendiri. Malah, permission sebuah symlink (yang ditampilkan dengan perintah ls
-l) itu tidak memiliki kegunaan apa-apa karena pengecekan permission selalu dilakukan
pada target symlink. Hanya ownership symlink saja yang memiliki arti.
$ cd /tmp
$ ln -s /etc/passwd p; # membuatsymlinkke file password
sistem
$ echo "tambah 1 baris ah" >> p
bash: p: Permission denied
Perintah terakhir gagal
karena meskipun symlink p dibuat oleh kita, namun target symlink /etc/passwd adalah milik root dan tidak dapat sembarangan ditulisi
user biasa.
Jika symlink terhapus, file utamanya tentu saja tidak ikut terhapus.
$ rm p
$ ls -l /etc/passwd; # file password sistemmasihada
-rw-r--r-- 1 root root 4700 2008-06-23 13:47 /etc/passwd
Membuat
symlink
Seperti telah dituliskan di contoh paling awal, untuk membuat
sebuah symlink, digunakan perintah ln dengan opsi -s.
Sintaksnya adalah:
$ ln -s TARGET SYMLINK
Dengan kata lain, target disebutkan terlebih dulu. Contoh penggunaan
symlink bisa dilihat pada beberapa contoh di atas.
Di bahasa-bahasa pemrograman juga terdapat fungsi untuk membuat
symlink misalnya symlink() di PHP dan Perl.
· Hard Link
Berbeda dengan symlink, hard link lebih jarang digunakan olehpemakai awam, tapi sebetulnya semua file di file system Unix adalah hard link.Saat sebuah file system diformat/diciptakan, file system dibagi menjadi beberapa daerah. Sebagian kecil daerah (mis: 1%) yaitu daerah yang menyimpan informasi tentang file (meta data file, seperti ukuran, permission, tipe file, dsb) dalam bentuk tabel inode. Setiap inode menyimpan informasi tentang satu file, termasuk pointer keblok data file. Mayoritas daerah (mis: 99%) berisi blok-blok data untuk menyimpan isi file itu sendiri. Inode tidak mengandung informasi nama file.
Kita dapat menciptakan nama file yang merujuk pada (hard link) inode tertentu (mis: pada gambar, file1.txt merujuk ke inode #1 sementara file3.txt merujuk ke inode #3). Kita dapat menambahkan nama file lain (yang bisa berada di direktori lain) yang merujuk pada inode yang sama (dalam gambar, file2.txt merujuk pula ke inode #1). Dengan demikian, kedua nama file itu merupakan hard link ke inode yang sama, ke file yang sama. File1.txt, file2.txt, file3.txt dan semua file lain yang ada semua merupakan hardlink, tapi dalam kasus ini file1.txt dan file2.txt akan identik isinya karena merujuk ke file yang sama.
Inode menyimpan juga jumlah link yang sedang merujuk ke dirinya. Ini bisa dilihat misalnya dengan perintah ls.Contoh:
$ cd /usr/bin
$ ls -l perl*
-rwxr-xr-x 2 root root 1212352 2008-05-08 20:51 perl
-rwxr-xr-x 2 root root 1212352 2008-05-08 20:51 perl5.10.0
-rwxr-xr-x 1 root root 38086 2008-05-08 20:50 perlbug
-rwxr-xr-x 1 root root 224 2008-05-08 19:15 perldoc
...
Perhatikankolomkedua, yaitu angka 2
dan 1. Ini menunjukkan bahwa perl dan perl5.10.0 itu memiliki
2 hard link ke dirinya. Dan karena kedua file ini ukuran, tanggal, dan ownernya
sama, maka ada kemungkinan merujuk ke inode yang sama (nomor inode defaultnya tidak
diperlihatkan oleh perintah ls, namun jika ingin melihatnya anda dapat menggunakan
opsi -i):$ ls -li
541472 -rwxr-xr-x 2 root root 1212352 2008-05-08 20:51 perl
541472 -rwxr-xr-x 2 root root 1212352 2008-05-08 20:51 perl5.10.0
541452 -rwxr-xr-x 1 root root 38086 2008-05-08 20:50 perlbug
26411884 -rwxr-xr-x 1 root root 224 2008-05-08 19:15 perldoc
Berbeda dengan symlink pula, dalam konteks
hardlink kedudukan masing-masing link sejajar, sementara di symlink kedudukannya
berbeda: yang satua dalah "file aslinya", sementara yang satu merupakan
"link" atau "bayangan"-nya. Di hard link, semua sama-sama merupakan
link ke inode.Membuat hard link
Untuk membuat hard link, Anda menggunakan perintah ln juga, tapi tanpa opsi -s. Misalnya:$ echo "Inifileku" > file1.txt
$ ln file1.txt file2.txt
$ cat file2.txt
Inifileku
Berbeda dengan symlink, saat membuat
hard link, sebuah file harus ada dulu (karena nomor inodenya harus diketahui). Sehingga,
hard link disebut juga link yang pengecekannya "compile-time", bukan
"run-time" seperti symlink. Tida ada istilah broken link pada hard
link (kecuali jika terjadi kerusakan file
system tentunya).Menghapus hard link
Menghapus hardlink tidak ada bedanya dengan menghapus file biasa. Pada penghapusan, yang terjadi adalah pemutusan link antara nama file dengan inode ybs (sehingga proses penghapusan di Unix disebut juga "unlink"). Blok data file dan entri inode tidak akan benar-benar dibebaskan (dinyatakan "free") sampai jumlah linknya mencapai nol. Mari kita lihat proses reference counting:$ ls -l file{1,2}.txt
-rw-r--r-- 2 stevensteven 8 2008-06-28 18:44 file1.txt
-rw-r--r-- 2 stevensteven 8 2008-06-28 18:44 file2.txt
$ rm file1.txt
-rw-r--r-- 1 stevensteven 8 2008-06-28 18:44 file2.txt
Saat sebuah file dihapus, jumlah linknya
berkurang menjadi 1. Tapi karena masih ada
link, blok data file tidak akan benar-benar dihapus. Barulah ketika file1.txt
dihapus pula, file menjadi unreachable karena tidak
ada link yang merujuknya. Entri inode dan blok data dapat dinyatakan bebas untuk
dipakai file lain.Kegunaan hard link
Sama seperti symlink, hard link juga mengizinkan kita membuat file yang muncul di beberapa tempat dengan beberapa nama sekaligus. Namun penggunaan hard link lebih jarang. Salah satu contoh:Kelakuan berbeda bergantung nama. Sebuah program dapa t memilih untuk berkelakuan berbeda jika dipanggil dengan nama berbeda.
ls -l /usr/bin/sudo{,edit}
-rwsr-xr-x 2 root root 91700 2006-04-15 14:39 sudo
-rwsr-xr-x 2 root root 91700 2006-04-15 14:39 sudoedit
Jika dipanggil sebagai sudo, maka program ini akan mengeksekusi
program. Jika dipanggil sebagai sudoedit maka
program ini memanggil editor untuk mengedit /etc/sudoers. Sebetulnya programnya
hanya satu.Contoh program lain yang memiliki dua nama tapi sebetulnya hard link ke file yang sama: unzip dan zipinfo, if up, dan if down, bzip2 dan bunzip2.
Sebetulnya alias nama ini bisa pula dilakukan dengan symlink, mis:
/usr/bin/unzip -> /usr/bin/zip
Namun umumnya untuk skenario seperti ini,
hard link yang lebih banyak digunakan. Karena jika menggunakan symlink, bisa saja
jika kita mengkopi atau memindahkan file, yang terkopi hanyalah symlinknya saja
dan symlink menjadi patah, tidak dapat dipakai.6. Editor Vi
Editor Vi (vee eye,
dibaca vi ai) adalah editor berbasis layar yang digunakan oleh banyak pemakai
UNIX. Editor ini pertama kali dikembangkan oleh William (Bill) Joy sewaktu ia
menjadi graduate student di University of California at Berkeley pada tahun
1976.
Editor Vi memiliki
banyak fasilitas yang sangat membantu para programer, namun para pemakai pemula
menghindari Vi karena mereka menganggap editor ini sangat sulit dan
membingungkan. Bab ini dimaksudkan untuk memperkenalkan pemakai pemula terhadap
editor Vi.
·
Memulai dan
Mengakhiri Vi
Editor Vi memungkinkan pemakai membuat berkas
baru atau mengedit berkas yang telah ada. Untuk memulai Vi dari shell berikan
perintah tedi:tedi$ vi. Bila berhasil, maka kemudian akan muncul
~
~ VIM - Vi IMproved
~
~ version 5.4
~ by Bram Moolenaar et al.
~
~ Vim is freely distributable
~ type :help uganda if you like Vim
~
~ type :q to exit
~ type :help or for on-line help
~ type :help version5 for version info
Layar tersebut menandakan bahwa Vi telah siap
digunakan.
Anda dapat memulai editor Vi tanpa
memasukkan nama berkas, tetapi bila anda ingin menyimpan hasil kerja anda, anda
perlu memberitahu Vi nama berkas anda untuk menyimpannya.
Untuk mengedit berkas yang telah ada,
perintah yang diberikan adalah "vi namaberkas". Di bagian kiri layar
akan tampak tilde (~). Di bagian bawah layar, akan terlihat nama berkas yang
sedang anda edit, serta ukuran berkasnya, seperti tampak pada cuplikan berikut
ini :
"filename" 21 lines, 385
characters
Untuk mengakhiri Vi, tekan lalu
ketikkan :q
Bila berhasil maka anda akan kembali
ke shell.
Navigasi
Arah dalam Vi
Untuk memindahkan kursor dalam editor
Vi, dapat anda gunakan tombol-tombol sebagai berikut :
k
h l
j
Petunjuk :
Tombol
h ada di kiri, untuk bergerak ke kiri.
Tombol l ada di kanan dan untuk bergerak ke kanan.
Tombol j mirip panah ke bawah
Tombol l ada di kanan dan untuk bergerak ke kanan.
Tombol j mirip panah ke bawah
Dalam versi Vi yang baru,
fungsi-fungsi tersebut dapat pula dilakukan dengan menggunakan tombol arah yang
terdapat pada keyboard.
Selain itu terdapat pula beberapa
perintah untuk pergerakan kursor yang lain yaitu :
^g
: untuk berpindah ke baris tertentu.
^F : berpindah satu layar penuh ke bawah.
^B : berpindah satu layar penuh ke atas.
^D : berpindah setengah layar ke bawah.
^U : berpindah setengah layar ke atas.
^w : berpindah satu kata ke depan.
^b : berpindah satu kata ke belakang.
^F : berpindah satu layar penuh ke bawah.
^B : berpindah satu layar penuh ke atas.
^D : berpindah setengah layar ke bawah.
^U : berpindah setengah layar ke atas.
^w : berpindah satu kata ke depan.
^b : berpindah satu kata ke belakang.
Tanda ^ adalah tanda tombol Ctrl, ^F
artinya anda harus menekan tombol Ctrl bersamaan dengan tombol kunci F.
·
Mengedit
Teks
Untuk memasukkan teks berikan perintah
i (insert) dengan terlebih dulu beralih ke mode perintah (tekan ESC). Di bagian
bawah layar akan muncul pesan sebagai berikut :
~
--INSERT—
Hal ini menandakan bahwa Vi telah siap menerima
teks yang akan anda masukkan. Anda lalu dapat memasukkan teks yang anda
inginkan. Dengan perintah i maka teks yang akan dimasukkan ditambahkan sebelum
posisi kursor saat ini. Selain itu terdapat pula perintah a yang akan menambah
teks setelah posisi kursor saat ini. Dua buah perintah berikutnya yang dapat
juga digunakan untuk memasukkan teks adalah perintah o dan O. Perintah
odigunakan untuk membuka newline setelah baris saat ini dan menambah teks,
sementara perintah O akan membuka newline sebelum baris saat ini dan menambah
teks.
·
Menghapus
Teks
Ada kalanya dalam
melakukan pengeditan, kita menginginkan untuk menghapus suatu teks. Dalam Vi
penghapusan teks dapat dilakukan dengan beberapa cara di antaranya adalah :
Menghapus
karakter satu per satu
Menghapus satu buah baris
Menghapus satu buah baris
Untuk dapat
menghapus karakter satu per satu dapat dilakukan di dalam command mode dengan
menekan tombol lalu menekan tombol x pada saat kursor berada pada karakter yang
ingin dihapus
Menaruh Teks (Put)
Bila anda ingin
menaruh teks dapat dilakukan dengan cara terlebih dulu menghapus teks tersebut,
lalu menaruhnya kembali dengan perintah put, yaitu dengan cara menekan tombol
p.
Perhatikan cuplikan teks berikut ini :
2 ini dua
1 ini satu
4 ini empat
3 ini tiga
Teks tersebut berada dalam keadaan yang tidak berurutan, kita ingin mengurutkan teks tersebut, langkah-langkahnya adalah sebagai berikut :
- Berpindahlah ke
mode perintah dengan menekan tombol
- Hapuslah baris
yang berisi teks 2 dengan perintah dd
- Tempatkan kursor
di baris berisi teks 1
- Tekan tombol p
(put). Hasilnya adalah sebagai berikut :
·
Karakter-karakter
khusus
^ : awal baris (pada
awal ekspresi pencarian)
. : mencocokkan
dengan karakter tunggal
* : mencocokkan
dengan kosong atau lebih karakter sebelumnya
$ :akhir baris (pada
akhir ekspresi pencarian)
[ :memulai
suatu himpunan ekspresi cocok atau tidak cocok. Sebagai contoh : /kak[iae] akan
cocok dengan : kaki kaka kake.ditaruh dalam ekspresi yang diescape dengan
backslash untuk mencari akhir atau awal
sebuah kata. Contoh : / hanya mencari kata de, tetapi bukan kata-kata seperti : deh dan dessy.
Ø :lihat karakter
Pencarian karakter
mencari karakter yang dimasukkan setelah perintah.Perintah f dan F mencari
karakter hanya pada baris saat ini.f mencari secara forward sementara F mencari
secara backward dan kursor akan berpindah ke karakter yang ditemukan. Perintah
t dan T mencari karakter hanya pada baris saat ini, namun untuk perintah t
kursor berpindah ke posisi sebelum karakter, sementara T mencari secara
backward hingga posisi setelah karakter.
Kedua set perintah
ini dapat diulangi dengan menggunakan perintah ; atau ,. Perintah ; mengulangi
perintah pencarian karakter terakhir dalam arah yang sama, sementara ,
mengulangi perintah pencarian dalam arah yang berlawanan.
·
Konfigurasi
Editor Vi
Anda dapat
mengkonfigurasi editor Vi anda pada saat ia memulai. Terdapat beberapa pilihan
yang dapat diset dengan menggunakan perintah :set pada mode edit. Berikut ini
adalah beberapa buah pilihan yang tersedia (dapat anda peroleh dengan mengetikkan
:set all kemudian tekan Enter dalam mode perintah)
Beberapa pilihan ini
memiliki nilai yang dapat diset dengan tanda "=" di dalamnya,
sementara yang lain berupa set atau not set (pilihan ini merupakan pilihan yang
disebut Boolean dan memiliki "no" di depannya untuk menandakan bahwa
mereka tidak diset).
Penjelasan beberapa
perintah di atas akan diberikan di bawah ini, dengan sebuah singkatan. Sebagai
contoh, perintah set autoindent, anda dapat menulis : :set autoindent or :set
ai. Untuk meng-unset-nya, anda dapat mengetikkan :set noautoindent or :set
noai.