Monday, June 13, 2011

Pengertian File dan Direktori pada Unix

3.1 PENGERTIAN FILE DAN DIREKTORI

Sistem file pada sistem UNIX dapat dikelompokkan
menjadi 3 jenis yaitu:

a. File biasa
adalah file yang umumnya kita gunakan untuk
menyimpan data, seperti program atau dokumentasi.

b. File khusus
tidak seperti halnya kebanyakan sistem operasi
lainnya, misalnya DOS, UNIX memperlakukan semua
piranti atau peralatan yang terhubung ke dalamnya
sebagai file. Piranti-piranti tersebut oleh UNIX
dikelompokkan menjadi dua, yaitu:

o piranti blok
piranti blok akan menyalurkan datat dalam blok
512 byte, misalnya disk.

o piranti karakter
piranti karakter menyalurkan data satu karakter
setiap saat, misalnya terminal.

Piranti-piranti ini semua biasanya diletakkan di
dalam sebuah direktori khusus, yaitu direktori /dev.

c. Direktori
adalah file yang berisi kumpulan file. Kumpulan file
dapat berupa file biasa atau file khusus, bahkan
dapat pula berisi direktori sehingga memungkinkan
direktori berisi direktori. Sebagai hasilnya, UNIX
memiliki sistem direktori yang berbentuk sebuah
pohon atau tree.
/
|
..+----+----+----...----+----...
| | | |
bin dev etc ... usr
|
..+----------+----+----+----...
| | |
bin mhs staf
... | |
... +----+----+ +----+---- ...
| | | | |
denny ... ... heru dono
. . .
. . .
. . .

Gambar 3.1 Sistem direktori pohon


Penamaan direktori ditandai dengan sebuah '/'.
Direktori utama untuk seluruh sistem disebut
direktori root atau direktori akar dan ditulis
sebagai '/'. Direktori root memiliki direktori lain
sebagai anggota. Beberapa diantaranya adalah
direktori bin, direktori dev, direktori etc, dan
direktori usr. Karena mereka merupakan anggota
direktori root, namanya ditulis sebagai /bin , /dev,
/etc dan /usr.
Direktori /usr dapat memiliki direktori lain,
misalnya direktori staf dan mhs. Nama direktori
dituliskan /usr/staf dan /usr/mhs. Nama jalur dari
root hingga ke direktori tertentu disebut complete
path name atau nama lengkap jalur. Perhatikan bahwa
direktori /usr/bin dan /bin berbeda. Mereka mungkin
memiliki nama akhir yang sama tetapi nama jalur
lengkapnya berbeda.

Panjang nama file dan direktori dapat lebih dari empat
belas karakter, yang terdiri karakter apa saja. Namun
demikian, beberapa karakter telah memiliki arti khusus bagi
shell, sehingga penggunaan karakter tersebut pada nama file
dan direktori sebaiknya dihindari (perhatikan tabel karakter
khusus pada bab sebelumnya). Berikut ini contoh-contoh dari
nama file yang benar:

- coba
- COBA
- 1992
- prog1.c
- prog2.c
- mhs_S1
- old-prog
- old_prog

Berikut ini adalah contoh nama-nama file yang sebaiknya
dihindari.

- >cobaaku
- coba|aku
- sia?a
- [repot]
- pau - $prosilkom
- sampah**

Pemilihan nama file yang baik adalah dengan membatasi
hanya menggunakan huruf besar dan kecil, bilangan, karakter
garis bawah dan titik. Titik sebaiknya hanya digunakan di
tengah nama file. Penggunaan titik pada awal nama file
menyebabkan file tersebut dinyatakan tersembunyi (hidden).
Perlu diingat bahwa UNIX akan membedakan antara nama
file dengan huruf kecil dan huruf besar. Berikut ini adalah
contoh nama-nama file yang berbeda.

- PESAN vs pesan
- Pesan_pesan vs pesan_Pesan
- PESAN vs PeSAN
- program.c vs program.C
- 12345 vs 012345

Coba bandingkan penamaan dengan sistem operasi lain,
misalnya DOS.
Untuk pengaturan akses bagi file dan direktori, setiap
file dan direktori sistem UNIX memiliki tiga jenis pemakai
yaitu:

o Pemilik (owner)
Pemilik adalah pemakai yang memiliki file tersebut,
biasanya orang yang pertama kali menciptakan file
tersebut. Untuk mengubah kepemilikan file tersebut ke
pemakai lainnya, dapat digunakan perintah chown.

o Group (group)
Beberapa pemakai dapat di kelompokkan ke dalam sebuah
group. File atau direktori yang mempunyai kepemilikan
ini mengakibatkan hanya pemakai anggota group yang
dapat mengakses.

o Orang lain (others)
Seluruh pemakai sistem adalah termasuk jenis ini.
File atau direktori yang mempunyai kepemilikan ini
mengakibatkan semua orang dapat mengaksesnya.

Masing-masing dapat memiliki mode perijinan berupa ijin
baca (r), ijin tulis (w) dan ijin eksekusi (x) atau
kombinasi ketiganya. Pembahasan yang lebih mendalam akan
diuraikan pada sub bab yang membahas mengenai proteksi file.


3.2 MENCETAK DIREKTORI YANG SEDANG BEKERJA DENGAN pwd

Ketika kita masuk ke dalam sistem UNIX, maka
kita langsung berada di dalam direktori. Direktori ini
disebut home directory. Setiap kita masuk ke dalam sistem,
kita akan menemukan lokasi kita selalu pada direktori
tersebut. Untuk melihat nama direktori yang sedang kita
gunakan, dapat digunakan perintah pwd. Perhatikan contoh
berikut ini.

$ pwd
/usr/mhs/denny (direktory yang sedang kita pakai)
$

Nama direktori yang ditampilkan oleh perintah pwd
adalah nama jalur lengkap bagi direktori kita. Nama jalur
lengkap yang diberikan oleh pwd menunjukkan direktori lain
yang berhubungan dengan direktori kita.
Perhatikan contoh sebelumnya, /usr/mhs/denny. Pada
contoh tersebut terdapat tiga buah direktori, yaitu:

- usr
- mhs
- denny

Secara implisit sesungguhnya ada empat direktori,
dimana direktori yang belum disebut adalah direktori akar
(root) sistem file. Ingat, direktori akar dinyatakan dengan
'/'. Jadi secara lengkap kita dapat katakan bahwa direktori
yang ada pada /usr/mhs/denny adalah:

- / (akar atau 'root')
- usr
- mhs
- denny


3.3 MELIHAT ISI DIREKTORI DENGAN ls

Perintah ls akan meminta sistem untuk menampilkan isi
dari sebuah direktori. Jika nama direktori tidak disebutkan
pada perintah ls, maka sistem akan menampilkan isi dari
direktori yang sedang digunakan.

$ ls (tampilkan isi direktori yang sedang digunakan)
$

Perintah ls tidak menampilkan apa-apa, hal ini berarti
tidak ada file di dalam direktori tersebut. Tapi perhatikan
jika kita gunakan pilihan -a dan -l. Pilihan -a untuk
menampilkan semua file pada direktori, termasuk file-file
yang tersembunyi (hidden). Pilihan -l untuk menampilkan
bentuk panjang, tanpa pilihan ini maka hanya nama file dan
dan direktori saja yang ditampilkan.

$ ls -al
total 47
drwxr-xr-x 2 denny mhs 32 May 21 05:41 .
drwxrwxr-x 12 mhs mhs 240 Jan 4 12:42 ..
$

Kini perintah ls menampilkan dua buah direktori. Huruf
'd' pada kolom pertama menunjukkan direktori. Kolom ke tiga
menunjukkan pemilik dari file tersebut. Sedangkan nama file
itu sendiri dinyatakan pada kolom terakhir, bernama '.' dan
'..'.
Karakter titik '.' ada pada setiap direktori. Karakter
titik '.' menyatakan direktori yang sedang digunakan
sekarang atau current directory. Sedangkan karakter '..'
menyatakan direktori ayah atau parent directory, atau dapat
dikatakan sebagai satu direktori di atas direktori yang
sedang digunakan sekarang. Untuk jelasnya, dapat dilihat
pada gambar berikut:


/
|
+---------------------- ...
|
usr
|
+----+---- ...
|
mhs (mhs adalah '..' dari /usr/mhs/denny)
|
+----+---- ...
|
denny (denny adalah '.' dari /usr/mhs/denny)

Gambar 3.2 Penjelasan '.' dan '..'


Berikut ini akan ditampilkan pemanggilan perintah ls
diikuti direktori.

$ ls / (lihat isi direktori root)
bin
coba
dev
etc
home
lib
lost+found
tmp
usr
$

Mungkin hasil yang ditampilkan pada terminal Anda
berbeda dengan hasil pada gambar di atas. Pertama, isi
direktori berbeda. Namun demikian, file-file seperti bin,
dev, etc dan usr pasti tercantum.
Kedua, isi direktori ditampilkan tidak satu file per
barisnya tetapi beberapa file per baris. Versi standar UNIX
untuk perintah ls adalah satu file perbaris, namun demikian
disediakan pula pilihan untuk membuat tidak satu file per
baris, yaitu dengan pilihan -x atau -C. Pilihan -x akan
menampilkan isi direktori dengan beberapa nama file per
baris. Nama tersebut diurut secara abjad ke samping.

$ ls -x /
bin coba dev etc home lib lost+found
tmp usr
$

Pilihan -C juga menampilkan isi direktori dengan
beberapa nama file per baris, tetapi nama tersebut diurut
per kolom ke bawah.

$ ls -C /
bin dev home lost+found usr
coba etc lib tmp
$

Namun cara di atas tidak dapat menunjukkan kepada kita
mengenai jenis filenya, file biasa atau direktori. Untuk
melihat informasi tersebut dapat kita gunakan pilihan -l.

$ ls -l /
total 10
drwxr-xr-x 2 bin bin 1216 Nov 25 10:42 bin
-rwx------ 1 root root 290 May 16 10:11 coba
drwxr-xr-x 2 root root 960 Nov 25 10:41 dev
drwxr-xr-x 2 root root 512 Dec 22 21:22 etc
drwxr-xr-x 2 root root 160 Nov 12 07:07 home
drwxr-xr-x 2 root root 32 Apr 10 19:41 lib
drwxr-xr-x 2 root root 32 Apr 10 19:21 lost+found
drwxr-xr-x 2 root root 734 Feb 14 11:09 tmp
drwxr-xr-x 19 bin bin 368 Nov 25 12:13 usr
$

Huruf 'd' pada awal baris menyatakan bahwa file
tersebut berjenis direktori. Jika diawali oleh karakter '-'
maka file tersebut adalah file biasa atau file khusus.
Cara lain untuk melihat apakah nama file yang
ditampilkan direktori atau bukan adalah dengan menggunakan
pilihan -p. Pilihan -p akan menampilkan nama-nama file
dimana file berjenis direktori akan diberi karakter garis
miring sesudah namanya. Tapi awas, karakter garis miring
tersebut bukan bagian dari namanya, hanya penunjuk saja.

$ ls -p /
bin/
coba
dev/
etc/
home/
lib/
lost+found/
tmp/
usr/
$

Cara yang hampir sama dengan pilihan -p adalah
menggunakan pilihan -F. Bedanya, pilihan ini disamping
memberi karakter garis miring pada direktori, akan memberi
bintang * pada file-file yang dapat dieksekusi.

$ ls -F
dir1/ (direktori)
dir2/ (direktori)
eks1* (dapat dieksekusi)
eks2* (dapat dieksekusi)
$

Jika diinginkan, kita dapat juga menampilkan file-file
tertentu saja.

$ ls -l /bin/ar
-r-xr-xr-x 1 bin bin 21428 Sep 24 1983 /bin/ar
$ ls -l /bin/ar /etc/passwd
-r-xr-xr-x 1 bin bin 21428 Sep 24 1983 /bin/ar
-rwx------ 1 root root 2123 Dec 24 1989 /etc/passwd
$

Namun jika yang diinginkan adalah menampilkan direktori
tertentu saja, maka cara di atas tidak dapat dilakukan.
Misalnya kita ingin melihat apakah di dalam direktori
tertentu ada direktori denny (/usr/mhs/denny)

$ pwd
/usr/mhs
$ ls -l denny (lihat /usr/mhs/denny ?)
drwxr-xr-x 2 denny mhs 32 May 21 05:41 .
drwxrwxr-x 12 mhs mhs 240 Jan 4 12:42 ..
$

Ternyata yang ditampilkan adalah isi dari direktori
yang /usr/mhs/denny dan bukan hanya menampilkan nama
direktori yang kita minta (perhatikan operasi yang sama
terhadap file). Untuk keperluan tersebut maka digunakan
pilihan -d sebagai berikut:

$ pwd
/usr/mhs
$ ls -ld denny
drwxrwxr-x 2 mhs mhs 240 Jan 4 12:42 denny
$

Pada beberapa contoh di atas, file-file ditampilkan
dengan disertai informasi lengkap mengenainya. Berikut ini
akan dijelaskan makna informasi yang dikandungnya.


-r-xr-xr-x 1 denny mhs 21428 Sep 24 10:11 /bin/ar

| | | || | | | | | | || |
| | | || | | | | | | || |
+----+---+ +-++---+ +-+ +---+ +----------++------+
| | | | | | |
| | | | | | |
mode file | pemilik | besar file | nama file
| | |
| | |
banyaknya group tanggal
link modifikasi

Gambar 3.3 Informasi dari ls -l /bin/ar


o Mode file atau mode perijinan file
Kolom pertama menjelaskan mengenai mode perijinan
file. Khusus karakter pertama pada mode perijinan
file tersebut adalah menunjukkan jenis filenya.
Karakter pertama '-' menunjukkan bahwa file tersebut
adalah file biasa. Sedangkan karakter 'd' menunjukkan
bahwa file tersebut adalah direktori. Disamping itu
terdapat pula 'c' dan 'b' yang menunjukkan bahwa file
tersebut adalah file khusus, 'c' untuk file khusus
jenis karakter dan 'b' untuk file khusus jenis blok.
Karakter ke dua hingga ke sepuluh adalah mode
perijinan file (dijelaskan kemudian)

o Jumlah link
Jumlah link pada file biasanya adalah satu. Untuk
file biasa, jika jumlah link lebih dari satu, maka
hal ini menunjukkan banyaknya duplikat file di
direktori lain. Untuk direktori, jika jumlah link
lebih dari satu, maka hal ini menunjukkan banyaknya
sub direktori di dalam direktori tersebut.

o Nama pemilik
Nama pemilik menunjukkan nama pemilik file atau
direktori.

o Nama group
Menunjukkan nama group dari pemilik file atau
direktori tersebut. Hanya anggota group yang dapat
mengaksesnya.

o Besar file
Besar file dinyatakan dalam byte. Untuk file teks,
besar file sama dengan banyaknya karakter di dalam
file tersebut.

o Tanggal dan waktu modifikasi
Tanggal dan waktu ini menampilkan tanggal dan waktu
terakhir file tersebut dimodifikasi. Format ini ada
dua jenis, yaitu:

- bulan tanggal jam:menit
- bulan tanggal tahun

Cara pertama otomatis digunakan oleh sistem jika file
tersebut telah dimodifikasi kurang dari satu tahun
yang lalu. Sedangkan cara ke dua digunakan oleh
sistem jika file tersebut telah dimodifikasi setahun
yang lalu atau lebih.

o Nama file
Nama dari file atau direktori yang bersangkutan.


3.4 MENGUBAH DIREKTORI DENGAN cd

Kita telah mengetahui bahwa sistem file pada UNIX
berbentuk pohon, untuk itu sistem menyediakan fasilitas
untuk melakukan pemindahan dari satu direktori ke direktori
lainnya, yaitu dengan perintah cd dengan diikuti nama
direktori yang dituju.

cd namadirektori

Dimana namadirektori adalah nama direktori yang dituju.
Perintah cd adalah kependekan change directory. Perhatikan
contoh berikut ini.

$ pwd
/
$ cd /usr
$ pwd
/usr
$ cd /usr/mhs
$ pwd
/usr/mhs
$ cd denny
/usr/mhs/denny
$

Dengan perintah tersebut kita akan otomatis masuk ke
dalam direktori baru, tentunya direktori baru tersebut harus
memiliki mode perijinan yang membolehkan kita masuk ke
dalamnya.
Jika perintah cd tidak diikuti dengan nama direktori
yang dituju maka arah direktori akan ditujukan ke home
directory.

$ who am i (siapa diri kita)
denny tty02 Oct 23 07:28
$ pwd
/tmp
$ cd
$ pwd
/usr/mhs/denny (kembali ke home directory)
$

Kemudian jika kita ingin ke satu direktori di atas
direktori sekarang (direktori ayah) maka dapat dilakukan
perintah sebagai berikut:

$ pwd
/usr/mhs/denny
$ cd ..
$ pwd
/usr/mhs
$ cd ..
$ pwd
/usr
$

Penggunaan perintah cd cukup luwes, seperti luwesnya
kita dalam menelusuri sebuah pohon. Kita dapat pindah dari
satu direktori ke direktori lain dengan menelusuri
direktori-direktori yang menghubungkan antar direktori
tersebut. Untuk jelasnya, perhatikan diagram berikut ini.


/
|
+----+----+----...----+----...
| | | |
bin dev etc ... usr
|
+----+----+----...
| |
mhs staf
| |
+----+----+ +----+---- ...
| | | | |
denny ... ... heru dono

Gambar 3.4 Menelusuri direktori


Jika saat ini kita berada di dalam direktori
/usr/mhs/denny dan kita ingin masuk ke direktori
/usr/staf/heru, maka jika diijinkan oleh pemilik
/usr/staf/heru kita dapat lakukan dengan cara merunut balik
pohon tersebut mulai dari direktori /usr/mhs/denny hingga ke
direktori dimana direktori tersebut pernah memiliki
direktori ayah yang sama. Pada kasus di atas mereka memiliki
direktori ayah yang sama pada /usr. Dengan demikian kita
harus merunut balik dengan hingga direktori ayah /usr, dan
kemudian dilanjutkan bergerak maju atau pindah ke direktori
/usr/staf/heru. Hal ini dapat dinyatakan dengan perintah
UNIX sebagai berikut:

$ pwd
/usr/mhs/denny
$ cd ..
$ pwd
/usr/mhs
$ cd ..
$ pwd
/usr
$ cd staf
$ pwd
/usr/staf
$ cd heru
$ pwd
/usr/staf/heru
$

atau secara singkat:

$ pwd
/usr/mhs/denny
$ cd ../../staf/heru
$ pwd
/usr/staf/heru
$


3.5 MELIHAT ISI FILE

Banyak cara untuk melihat suatu file. Salah satu cara
untuk melihatnya adalah dengan menggunakan perintah cat
dengan diikuti nama file. Perintah cat hanya digunakan untuk
melihat isi file teks saja. Jika kita perintah cat
digunakan untuk file non teks maka hasil yang ditampilkan
tak dapat dibaca.

$ cat /etc/passwd
root:hxI/hs24w48Qg:0:0:Super user:/:/bin/csh
sysadm::0:0:System Administration:/usr/sysadm:/bin/sh
shut::0:0:Shutdown Otomatis:/usr/shut:/bin/sh
cron:NOLOGIN:1:1:Cron daemon for periodic tasks:/:
bin::3:3:System file administration:/:
uucp::4:4:Uucp :/usr/spool/uucppublic:/usr/lib/uucp/uucico
asg:NOLOGIN:6:6:Assignable device administration:/:
sysinfo:NOLOGIN:10:10:Access to system information:/:
network:NOLOGIN:12:12:Mail and Network :/usr/spool/micnet:
lp:NOLOGIN:14:3:Print spooler administration:/usr/spool/lp:
dos:NOLOGIN:16:10:Access to Dos devices:/:
chaerind:9zws8okDcPVIw:190:1087:geo:/tmp:/bin/sh
denny:Zzw.8ofgcPVIw:3710:1087:denny yerianto:/usr/mhs/denny:/bin/sh
ucrit:dsfinUcnsf2ck:3711:1087:ucrit :/usr/mhs/ucrit:/bin/csh
jecky:Kawhju.ZQ4GOk:3713:51::/usr/jecky:/bin/ksh
heru::3714:51::/usr/heru:/bin/sh
$

Nama file yang mengikuti perintah cat dapat berjumlah
lebih dari satu, dimana hasilnya akan ditampilkan berurutan.

$ cat satu
satu satu
satu dua
$
$ cat dua
dua satu
dua dua
dua tiga
$ cat satu dua
satu satu
satu dua
dua satu
dua dua
dua tiga
$

Jika kita berusaha memanggil nama file namun ternyata
file tersebut tidak ada, maka perintah cat akan menampilkan
pesan kesalahan sebagai berikut:

$ cat tidakada
cat: cannot open tidakada
$

Jika file yang kita buka terlalu besar, misalnya lebih
dari satu layar terminal maka terjadi pelipatan teks, yaitu
teks akan berputar ke atas. Kita dapat menghentikan
sementara tampilan dilayar agar tidak melanjutkan pelipatan
dengan melakukan penekanan kontrol-S, dan untuk
melanjutkannya digunakan penekanan kontrol-Q.
Melihat file teks yang berukuran besar dengan cara di
atas sangat tidak praktis, untuk itu dapat digunakan
perintah more.

$ more filebesar
.
.
.

atau

$ cat filebesar | more
.
.
.

Perintah more akan menampilkan teks halaman per
halaman. Layar akan berhenti setelah teks memenuhi satu
halaman. Bila pemakai mengetikan spasi, more menampilkan
satu halaman layar teks berikutnya. Bila pemakai
mengetikkan carriage return, more akan menggerakkan layar ke
atas satu baris dan menampilkan satu baris lagi pada bawah
layar. Bila pemakai mengetikan sebuah bilangan dan diikuti
spasi, more akan menampilkan baris sebanyak nomor tersebut.
Jika more membaca data untuk ditampilkan dari sebuah
file (bukan menggunakan pipa), more akan menunjukkan
presentasi dari file yang telah dibaca bersama prompt pada
baris bawah layar.
More menampilkan keluaran ke keluaran standard. Bila
sebuah nama file tidak disebutkan, more akan mengambil
masukan dari masukan standar.
Disamping more, cara lain yang dapat digunakan untuk
melihat isi file teks yang besar adalah menggunakan perintah
pg. Perintah ini akan menampilkan isi file ke layar terminal
halaman per halaman.

$ pg filebesar
.
.
.
.

Perintah pg akan menampilkan isi file halaman per
halaman dimana satu halaman biasanya berjumlah 23 baris.
Pada setiap akhir baris dari layar akan ditampilkan
tanda : sebagai prompt. Tekan enter atau spasi jika ingin
menampilkan satu layar penuh berikutnya. Jika kita ingin
mengakhiri melihat isi file tersebut padahal belum semua
isinya ditampilkan, maka ketiklah huruf 'q' atau 'Q' yang
diikuti enter.
Tidak seperti cat, perintah pg memiliki sejumlah pilihan
untuk memperbaiki interaksi dengan pemakai yang lebih baik.
Misalnya:

$ pg -20 filebesar
.
.
.
.

hal ini akan menampilkan 20 baris setiap halamannya
(satu layar penuh). Akibatnya, ketika kita berpindah ke
halaman berikutnya maka tiga baris terakhir dari halaman
sebelumnya menjadi tiga baris awal pada halaman berikutnya,
demikian seterusnya.
Namun perintah dengan pilihan sebelumnya memiliki arti
yang berbeda dengan pilihan berikut ini:

$ pg +20 filebesar
.
.
.
.

Perintah pg di atas akan mengabaikan 19 baris pertama
dan memulainya pada baris ke 20.
Masih banyak pilihan dari perintah pg yang masih belum
diuraikan pada buku ini. Untuk melihat pilihan apa saja yang
dimiliki oleh perintah pg, ketiklah 'h' pada prompt pg yang
berbentuk :

:h

maka akan ditampilkan pilihan yang dapat digunakan
dengan disertai penjelasan singkat.


3.6 MENENTUKAN JENIS FILE DENGAN file

Perintah cat dan pg dapat digunakan dengan baik jika
file yang ingin dilihat adalah file berjenis teks. Dengan
cara yang sudah kita pelajari, sulit untuk menentukan apakah
file tersebut berjenis teks atau non teks.
UNIX menyediakan sebuah fasilitas untuk menentukan
jenis suatu file, yaitu perintah file. Jenis-jenis file yang
dapat ditentukan antara lain ascii teks, direktori, yang
dapat dieksekusi, teks program c. Perhatikan contoh-contoh
berikut ini:

$ file /bin/ls /usr /etc/passwd /usr/include/stdio.h
/bin/ls: pure executable
/usr: directory
/etc/passwd: ascii text
/usr/include/stdio.h: c program text
$

Jika file yang kita periksa ternyata tidak ditemukan,
maka akan ditampilkan pesan kesalahan sebagai berikut:

$ file takada
takada: cannot open
$

Namun jika file yang akan kita periksa ternyata
tidak memberi ijin baca kepada kita, maka akan ditampilkan
pesan kesalahan sebagai berikut:

$ file dilarang
dilarang: cannot open for reading
$


3.7 MENGCOPY FILE DENGAN cp

Cara paling mudah untuk menduplikasi file adalah dengan
menggunakan perintah copy, yaitu cp. Perhatikan contoh
berikut ini.

$ pwd
/usr/mhs/denny
$ cp /etc/motd coba
$
Argumen pertama /etc/motd menunjukkan nama file asli
yang akan dicopy, sedangkan argumen ke dua coba menunjukkan
nama baru dari file hasil copy.
Jika argumen ke dua adalah titik, maka hasil copy
diletakkan pada direktori yang sedang digunakan dengan
menggunakan nama yang sama dengan aslinya. Perhatikan contoh
berikut:

$ ls
coba
$ cp /etc/motd .
$ ls
coba
motd (nama hasil copy = nama asli)
$

Jika argumen terakhir berupa direktori, maka hasil copy
file tersebut akan dimasukkan ke dalam direktori tersebut
dengan menggunakan nama yang sama dengan aslinya.

$ cp /etc/passwd /usr/mhs/denny (ke direktori)
$ ls /usr/mhs/denny (lihat isinya)
coba
motd
passwd (hasil copy baru)
$

Kita dapat juga melakukan pengcopyan lebih dari satu
file ke dalam satu direktori. Argumen-argumen pada perintah
cp merupakan nama-nama file yang akan dikopi kecuali argumen
terakhir yang menunujkkan nama direktori tujuan.

$ ls
coba
motd
passwd
$ cp coba motd passwd /usr/tmp
$

Jika nama file dari hasil copy sudah ada pada direktori
yang dituju, pada beberapa sistem tidak akan memberitahukan
kepada kita. Akibatnya file lama akan ditimpa, kecuali jika
file lama tersebut tidak memberi ijin tulis kepada kita.
Jika file yang akan kita copy ternyata tidak memberi
ijin baca bagi kita maka proses pengkopian akan digagalkan
dan ditampilkan pesan sebagai berikut:

$ ls -l /tmp
-rwx------ 1 root root 2123 Dec 24 1989 no_baca
$ cp /tmp/no_baca pesan
cp: cannot open /tmp/nobaca
$

Namun jika file yang akan kita copy ternyata tidak ada,
maka akan ditampilkan pesan yang berbeda sebagai berikut:

$ cp /tmp/takada pesan
cp: cannot access /tmp/takada (file tidak ada)
$

Selanjutnya jika kita mencoba untuk mengcopy ke
direktori yang tidak ada atau dilarang menulis maka akan
ditampilkan pesan sebagai berikut:

$ cp /etc/motd /usr/mhs/takada/takbisa
cp: cannot create /usr/mhs/takada/takbisa
$


3.8 MEMINDAHKAN ATAU MENGGANTI NAMA FILE DENGAN mv

Tidak seperti pada perintah cp dimana file aslinya
tidak diubah, perintah mv akan menghapus file aslinya dan
memindahkan ke tempat yang baru. Perhatikan contoh berikut
ini.

$ pwd
/usr/mhs/denny
$ ls
coba
motd
passwd
$ ls /tmp
no_baca
$ mv coba /tmp
$ ls (lihat isi /usr/mhs/denny)
motd ('coba' otomatis dihapus)
passwd
$ ls /tmp
coba ('coba' dipindahkan!)
no_baca
$

Seperti pada perintah cp, perintah mv juga dapat
memindahkan beberapa nama file sekaligus ke direktori
tertentu. Seluruh argumen merupakan nama file yang akan
dipindahkan kecuali argumen terakhir yang merupakan nama
direktori tujuan.

$ mv motd passwd /tmp
$ ls (sudah kosong!)
$ ls /tmp
coba (semua telah dipindah)
motd
no_baca
passwd
$

Jika pada nama file baru sudah ada pada direktori yang
dituju, file lama akan langsung ditimpa. Sehubungan dengan
hal ini, maka perintah ini sering digunakan untuk mengganti
nama file.

$ ls
coba
motd
no_baca
passwd
$
$ mv coba cobacoba
$ ls
cobacoba (coba diganti cobacoba)
motd
no_baca
passwd
$

Namun jika file yang akan kita pindahkan tidak memberi
ijin tulis maka sistem akan melakukan konfirmasi kepada kita
terlebih dahulu.

$ pwd
/tmp
$ ls -l cobacoba
-r--r--r-- 1 denny denny 189 Dec 24 1989 cobacoba
$ mv /usr/tmp/coba cobacoba
cobacoba: mode 444 ?
n (tidak setuju!)
$

Jika tidak setuju atau jawaban 'n' maka proses
pemindahan file akan dibatalkan. Jika setuju atau jawaban
'y' maka proses pemindahan dilaksanakan.


3.9 MENGHAPUS FILE DENGAN rm

Perintah untuk menghapus file adalah perintah rm yang
diikuti nama file yang akan dihapus. Setiap saat, file-file
yang akan dihapus dapat lebih dari satu. Perhatikan contoh
berikut ini.

$ ls
cobacoba
motd
no_baca
passwd
$ rm motd
$ ls
cobacoba
no_baca
passwd
$


Jika file yang akan dihapus tidak memberi ijin tulis
kepada kita, maka sistem akan melakukan konfirmasi kepada
kita terlebih dahulu sebelum dilakukan penghapusan. Jika
disetujui maka proses penghapusan dilaksanakan dan jika
tidak maka proses penghapusan dibatalkan.

$ ls -l cobacoba
-r--r--r-- 1 denny denny 189 Dec 24 1989 cobacoba
$ rm cobacoba
cobacoba: mode 444 ?
n (tidak setuju!)
$
$ ls
cobacoba (masih awet !)
no_baca
passwd
$

Perlu diingat adalah bahwa file yang telah dihapus
tidak dapat dibatalkan atau dikembalikan dengan menggunakan
fasilitas yang ada di dalam UNIX (bandingkan dengan sistem
operasi DOS yang dapat membatalkan penghapusan file). Untuk
itu maka sebaiknya setiap penghapusan selalu melalui proses
konfirmasi terlebih dahulu. Caranya adalah dengan
menggunakan pilihan -i (interactive).

$ ls -l passwd
-rwxrwxrwx 1 denny denny 189 Dec 24 1989 cobacoba
$ rm passwd
passwd: n (tidak setuju)
$ ls passwd
passwd
$ rm passwd
passwd: y (setuju!)
$ ls passwd
$ (terhapus ..)

Kebalikan dari pilihan -i, yaitu dimana akan memaksa
agar proses tidak melakukan konfirmasi adalah dengan
menggunakan pilihan -f. Perintah ini dapat digunakan pada
penghapusan dimana file yang akan dihapus tidak memberi ijin
tulis kepada kita.

$ ls -l cobacoba
-r--r--r-- 1 denny denny 189 Dec 24 1989 cobacoba
$ rm cobacoba
cobacoba: mode 444 ?
n (tidak setuju!)
$ rm -f cobacoba
$ ls cobacoba (cobacoba terhapus)
$

Jika file yang akan kita hapus ternyata tidak ada, maka
sistem akan menampilkan pesan sebagai berikut:

$ rm takada
rm: takada non-existent
$


3.10 MEMBUAT DIREKTORI

Direktori merupakan kumpulan dari file-file dan atau
direktori. Direktori di dalam direktori disebut sub
direktori. Pada akhirnya, sistem direktori UNIX membentuk
pohon. (lihat gambar 3.1)
Direktori membutuhkan sedikit pengaturan atau
pengelolaan agar dapat dimanfaatkan secara optimal, misalnya
kita sebaiknya mengumpulkan file-file sejenis ke dalam
sebuah direktori.
Perintah yang digunakan untuk membuat direktori baru
adalah mkdir yang diikuti nama direktori yang akan dibuat.
Direktori yang dibuat dapat lebih dari satu. Berikut ini
contoh membuat beberapa direktori baru di bawah direktori
/usr/mhs/denny seperti pada gambar 3.5.

/
|
..+----+----+----...----+----...
| | | |
bin dev etc ... usr
|
..+----------+----+----+----...
| | |
bin mhs staf
... | |
... +----+----+ +----+---- ...
| | | | |
denny ... ... heru dono
| . .
+------+------+
| |
doc program
| |
+----+----+ +----+----+
| | | | |
data memo surat c pascal

Gambar 3.5 Membuat direktori baru


$ cd (ke home direktori /usr/mhs/denny)
$ mkdir doc program
$ cd program
$ mkdir c pascal
$ ls -l
total 2
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 c
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 pascal
$

Selanjutnya kita akan membuat direktori-direktori baru
dibawah direktori doc sebagai berikut:

$ pwd
/usr/mhs/denny/program
$ cd ../doc
$ mkdir data memo surat
$ ls -l
total 3
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 data
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 memo
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 surat
$ cd (kembali ke home directory)
$

Cara di atas dapat juga dilaksanakan dalam sebuah
perintah baris sebagai berikut:

$ pwd
/usr/mhs/denny
$ mkdir program program/c program/pascal doc doc/data doc/memo \
doc/surat
$ ls -l
total 2
drwxrwxrwx 5 denny mhs 80 Apr 22 10:22 doc
drwxrwxrwx 4 denny mhs 64 Apr 22 10:22 program
$

Dengan bantuan karakter garis miring terbalik
(backslash) sebelum menekan enter (karakter carriage
return) akan mengakibatkan karakter carriage return tak
diterjemahkan oleh shell sehingga kedua baris perintah
tersebut dianggap sebagai satu perintah.
Urutan nama direktori baru yang akan dibuat harus
berurutan yaitu diawali dengan direktori ayah lalu
dilanjutkan dengan direktori anaknya atau sub direktorinya.
Perhatikan apa yang terjadi jika yang dibuat direktori
anaknya terlebih dahulu.

$ mkdir program/pascal program
mkdir: cannot acces program/.
$

Direktori ayahnya harus ada terlebih dahulu sebelum
direktori anaknya dibuat.
Jika direktori telah dibuat, maka sistem akan menolak
pembuatan direktori baru dan menampilkan pesan sebagai
berikut:

$ mkdir /usr/mhs/denny
mkdir: cannot make directory /usr/mhs/denny
$


Sampai disini kita telah membuat beberapa direktori
baru. Untuk melihat isi seluruh direktori yang telah kita
buat adalah sebagai berikut:

$ pwd
/usr/mhs/denny
$ ls -l doc program

doc:
total 3
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 data
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 memo
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 surat

program:
total 2
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 c
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 pascal
$

Cara lain yang lebih praktis untuk melihat seluruh isi
direktori yang ada adalah dengan menggunakan perintah ls dan
pilihan -R. Pilihan ini akan menampilkan isi direktori
secara rekursif.

$ pwd
/usr/mhs/denny
$ ls -lR
total 2
drwxrwxrwx 5 denny mhs 80 Apr 22 10:22 doc
drwxrwxrwx 4 denny mhs 64 Apr 22 10:22 program

doc:
total 3
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 data
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 memo
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 surat

program:
total 2
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 c
drwxrwxrwx 2 denny mhs 32 Apr 22 10:22 pascal

doc/data:
total 0

doc/memo:
total 0

doc/surat:
total 0

program/c:
total 0

program/pascal:
total 0
$


3.11 MENGHAPUS DIREKTORI

Perintah untuk menghapus direktori adalah rmdir dengan
diikuti nama-nama direktori yang akan dihapus. Direktori
yang akan dihapus dapat lebih dari satu. Sebelum direktori
tersebut dihapus, harus dipastikan terlebih dahulu bahwa
sudah tidak ada file atau direktori di dalamnya. Jika di
dalam direktori masih ada file atau direktori maka proses
penghapusan akan dibatalkan dan ditampilkan pesan sebagai
berikut:

$ rmdir program
rmdir: program not empty
$

Penghapusan di atas gagal karena di dalam direktori
program masih terdapat direktori lain, yaitu program/c dan
program/pascal. Untuk itu maka kedua direktori tersebut
harus dihapus terlebih dahulu.

$ rmdir program/c program/pascal program
$

Cara lain yang dapat kita gunakan adalah dengan
menggunakan perintah rm dengan pilihan -r. Pilihan ini akan
menghapus file dan direktori secara rekursif mulai dari
direktori anak yang paling bawah sampai dengan direktori
yang disebutkan.

$ rm -r doc
$ ls (direktori doc & anaknya dihapus)
$

Selanjutnya jika direktori yang dihapus tidak ada maka
sistem UNIX akan menampilkan pesan sebagai berikut:

$ rmdir takada
rmdir: takada non-existent
$


3.12 SUBSTITUSI NAMA FILE

3.12.1 Pencocokan Seluruh Untaian Karakter

Karakter asteriks atau '*' akan cocok dengan untaian
karakter atau string apa saja. Sebelum diterangkan lebih
lanjut, marilah kita lihat direktori yang akan dijadikan


contoh.

$ ls
bab1
bab2
bab3
bab4
$

Seandainya kita akan melihat isi dari file-file
tersebut secara keselurahan, maka kita dapat melakukannya
dengan perintah cat sebagai berikut:

$ cat bab1 bab2 bab3 bab4
.... (ditampilkan file isi bab1 s/d bab4)
$

Selain dengan cara tersebut, kita juga dapat
menuliskannya sebagai berikut:

$ cat *
.... (ditampilkan isi file bab1 s/d bab4)
$

Ke dua cara di atas akan mendapatkan hasil yang sama.
Shell otomatis akan mensubstitusikan nama dari seluruh file
pada current direktory untuk *. Substitusi yang sama dapat
pula dilakukan pada perintah echo:

$ echo *
bab1 bab2 bab3 bab4
$ echo bab*
bab1 bab2 bab3 bab4
$

Disini karakter '*' digantikan dengan nama dari seluruh
file yang ada pada current directory dan perintah echo akan
menampilkannya pada terminal. Namun perhatikan contoh
berikut ini:

$ echo *ab2
bab2
$ echo *b*
bab1 bab2 bab3 bab4
$ echo *x
*x
$

Pada dua contoh di atas memperlihatkan betapa
fleksibelnya karakter '*' dalam mensubtitusi nama file. Pada
contoh terakhir memperlihatkan bahwa karakter '*' dapat pula
diartikan sebagai karakter '*' dan bukan pensubstitusi nama
file. Hal ini dikarenakan file yang ada huruf 'x' nya tidak
ada.

3.12.2 Pencocokan Setiap Karakter Tunggal

Disamping pencocokan global dengan karakter asterisk,
kita dapat pula melakukan pencocokan spesifik satu
karakter, yaitu dengan karakter tanda tanya '?'. Perhatikan
isi direktori yang akan digunakan contoh.

$ ls
a
aa
aax
aku
b
bb
c
cc
report1
report2
report3
$ echo ?
a b c
$ echo a?
aa
$ echo ??
aa bb cc
$ echo ??*
aa aax aku bb cc report1 report2 report3
$

Cara lain adalah menggunakan tanda kurung siku '[]'.
Cara ini akan menyeleksi file berdasarkan apa yang
disyaratkan dalam kurung siku tersebut.

$ ls [a-b]*
a
aa
aax
aku
b
bb
c
cc
$

Maksud perintah di atas adalah menampilkan daftar file
dari current directory dengan syarat huruf awalnya adalah a
sampai dengan c. Contoh lain misalnya anda menginginkan
jangkauan angka seperti:

$ ls
bab1
bab2
bab3
bab4
bab5
$ ls bab[1-2]
bab1
bab2
$

Tanda seru '!' dapat digunakan sebagai penginvert atau
penyebalik arti. misalnya [!a-z] adalah cocokkan dengan
karakter yang bukan a sampai dengan z (huruf kecil). Jadi
bisa saja A s/d Z atau 0 s/d 9.

$ ls
bab1
bab2
bab3
bab4
bab5
$ ls bab[!1-2]
bab3
bab4
bab5
$


3.13 PERIJINAN DAN PROTEKSI

3.13.1 Konsep Perijinan dan Proteksi

Untuk pengaturan akses bagi file dan direktori, setiap
file dan direktori sistem UNIX memiliki tiga jenis pemakai
yaitu:

o Pemilik (owner)
Pemilik adalah pemakai yang memiliki file tersebut,
biasanya orang yang pertama kali menciptakan file
tersebut. Untuk mengubah kepemilikan file tersebut ke
pemakai lainnya, dapat digunakan perintah chown.

o Group (group)
Beberapa pemakai dapat di kelompokkan ke dalam sebuah
group. File atau direktori yang mempunyai kepemilikan
ini mengakibatkan hanya pemakai anggota group yang
dapat mengakses.

o Orang lain (others)
Seluruh pemakai sistem adalah termasuk jenis ini.
File atau direktori yang mempunyai kepemilikan ini
mengakibatkan semua orang dapat mengaksesnya.

Masing-masing dapat memiliki mode perijinan akses
terhadap file atau direktori sebagai berikut:

o Ijin baca (r)
Pemakai yang memiliki ijin baca terhadap sebuah file
dapat melihat isi dari file tersebut.

Pemakai yang memiliki ijin baca terhadap sebuah
direktori dapat melihat isi file apa saja yang berada
di dalam direktori tersebut. Namun untuk melihat isi
file dari direktori dengan informasi detail (ls -l)
harus diperlukan ijin eksekusi bagi pemakai terhadap
direktori tersebut. Namun demikian, untuk melihat
isi file dari file yang terdapat di dalam direktori
tersebut, pemakai harus memiliki ijin baca dari file
yang bersangkutan.


o Ijin tulis (w)
Pemakai yang memiliki ijin tulis terhadap sebuah file
dapat mengubah isi file tersebut

Pemakai yang memiliki ijin tulis terhadap sebuah
direktori dapat mengubah isi direktori, sehingga
pemakai dapat membuat file baru atau menghapus file-
file. Namun demikian untuk mengubah file-file yang
terdapat di dalam direktori tersebut, pemakai harus
memiliki ijin tulis dari file yang bersangkutan.

o Ijin eksekusi (x)
Pemakai yang memiliki ijin eksekusi terhadap sebuah
file dapat mengeksekusi file tersebut.

Pemakai yang memiliki ijin eksekusi terhadap sebuah
direktori dapat mengubah direktori tersebut dan
melakukan pengkopian file-file dari direktori
tersebut.

Dengan kombinasi tiga jenis mode perijinan terhadap
tiga jenis pemakai, kita dapat memiliki sembilan set
perijinan yang dapat memproteksi file atau direktori yang
kita miliki.

- ijin baca bagi pemilik
- ijin tulis bagi pemilik
- ijin eksekusi bagi pemilik
- ijin baca bagi group
- ijin tulis bagi group
- ijin eksekusi bagi group
- ijin baca bagi orang lain
- ijin tulis bagi orang lain
- ijin eksekusi bagi orang lain

Kesembilan mode perijinan tersebut biasanya ditulis
sebagai berikut:

rwxrwxrwx

- tiga huruf pertama menunjukkan ijin bagi pemilik
- tiga huruf kedua menunjukkan ijin bagi group
- tiga huruf ketiga menunjukkan ijin bagi orang lain

Untuk melihat mode perijinan file dan direktori,
gunakan perintah ls -l.

$ ls -l
total 6
drwxr-xr-x 2 guest guest 1216 Nov 25 10:42 asli
-rwx------ 1 root root 290 May 16 10:11 coba
drwxr-xr-x 2 root root 32 Apr 10 19:41 lib
$

Kolom pertama pada baris ke dua dan selanjutnya,
menyatakan mode perijinannya. Khusus karakter pertama pada
mode perijinan tersebut menunjukkan jenis filenya. Karakter
pertama '-' menunjukkan bahwa file tersebut adalah file
biasa. Sedangkan karakter 'd' menunjukkan bahwa jenis file
tersebut adalah direktori. Disamping itu terdapat pula 'c'
dan 'b' yang menunjukkan bahwa jenis file tersebut adalah
file khusus, 'c' untuk file khusus jenis karakter dan 'b'
untuk file khusus jenis blok.
Karakter selanjutnya dari mode perijinan menyatakan
mode perijinan sesungguhnya seperti yang diuraikan di atas.
Untuk melakukan proteksi terhadap file atau direktori,
gantilah perijinan rwx dengan '-'. Perhatikan contoh berikut
yang menyatakan mode file read-only

-r--r--r--

File yang memiliki mode seperti diatas hanya dapat
dibaca oleh pemilik, group atau orang lain. File ini
diproteksi terhadap upaya penulisan atau pengeksekusian oleh
pemakai.
Dengan adanya mode perijinan ini berarti kita dapat
melindungi file dan direktori kita dari gangguan orang yang
tidak kita hendaki. Contoh:

-rwx------

File yang memiliki proteksi seperti di atas tidak dapat
dibaca, ditulis dan dieksekusi oleh orang lain kecuali
pemiliknya sendiri.
Namun harus diingat bahwa proteksi ini semua tidak
berlaku bagi root atau superuser. Mereka dapat menembus
proteksi karena mereka penguasa dan pengatur sistem.

3.13.2 Mengubah Perijinan dengan chmod

Perintah chmod dapat mengubah mode perijinan file atau
direktori. Mode perijinan tersebut dapat diubah hanya oleh
pemiliknya sendiri atau oleh superuser. Format umum perintah
chmod adalah:

chmod modefile file

Untuk mengubah mode perijinan, perintah chmod memiliki
dua cara representasi bagi argumen modefile yaitu:

- nilai absolut berupa bilangan oktal
- mode simbolik

Pengubahan mode perijinan file dengan menggunakan nilai
absolut mengharuskan pemakai mengenal bilangan binary.
Perhatikan tabel binary berikut ini.


--------------------
Binary Oktal
--------------------
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
--------------------

Tabel 3.1 Binary-Oktal


Setiap pemberian satu ijin dari sembilan perijinan yang
digunakan akan dinyatakan dengan bilangan satu dan jika
tidak diijinkan akan dinyatakan dengan bilangan nol. Dari
bilangan binary ini dapat dinyatakan sebagai bilangan oktal
bagi pemakai yaitu pemilik, group dan orang lain. Perhatikan
contoh berikut ini.


rw-r--r-- mode perijinan file

110100100 bilangan binary
| || || |
| || || |
v v v
| | |
6 4 4 bilangan oktal

Gambar 3.6 Perijinan


Teknik lain untuk mempermudah menemukan bilangan bagi
mode perijinan dengan cara ini adalah menggunakan diagram
berikut ini:








pemilik group orang lain
r w x r w x r w x
| | | | | | | | |
400 ------+ | | | | | | | |
200 --------+ | | | | | | |
100 ----------+ | | | | | |
| | | | | |
40 ----------------+ | | | | |
20 ------------------+ | | | |
10 --------------------+ | | |
| | |
4 --------------------------+ | |
2 ----------------------------+ |
1 ------------------------------+

Gambar 3.7 Diagram Translasi Mode Perijinan


Dengan demikian untuk perijinan rw-r--r-- dapat
dinyatakan sebagai berikut:

400
200
40
4
---
644

Selanjutnya, penggunaan dari perintah chmod tersebut
adalah sebagai berikut:

$ chmod 644 bab1 bab2 bab3
$ ls -l bab1 bab2 bab3
-rw-r--r-- 1 denny mhs 280 Apr 22 10:22 bab1
-rw-r--r-- 1 denny mhs 164 Apr 22 10:22 bab2
-rw-r--r-- 1 denny mhs 380 Apr 22 10:22 bab3
$

Jika kita mencoba mengubah mode perijinan file dan file
tersebut ternyata tidak ada maka akan ditampilkan pesan
sebagai berikut:

$ chmod 777 takada
chmod: can't access takada
$

Jika kita mencoba mengubah mode perijinan file dan file
tersebut bukan milik kita maka akan ditampilkan pesan
sebagai berikut:

$ chmod 777 /etc/passwd
chmod: can't change /etc/passwd
$

Kesalahan lain yang sering terjadi adalah tertukarnya
letak argumen dari perintah chmod. Jika hal ini terjadi maka
akan ditampilkan pesan sebagai berikut:

$ chmod bab1 777
chmod: invalid mode
$

Cara kedua dengan menggunakan mode simbolik. Pilihan
mode simbolik yang dapat digunakan antara lain:


-----------------------------------------
Simbol Arti
-----------------------------------------
u ijin bagi pemilik
g ijin bagi group
o ijin bagi orang lain
a ijin bagi semua pemakai
= pasang nilai perijinannya
+ memberi perijinan
- hapus perijinan
-----------------------------------------

Tabel 3.2 Mode simbolik


Jenis perijinannya adalah baca 'r', tulis 'w' dan
eksekusi 'x'.
Hal yang harus diingat adalah bahwa argumen modefile
pada perintah chmod harus merupakan satu kesatuan argumen.
Artinya jika diinginkan lebih dari satu perubahan mode
perijinan, maka antara satu modefile dengan lainnya harus
dipisahkan dengan koma dan tidak dibolehkan menggunakan
spasi. Perhatikan contoh berikut:

$ ls -l
total 3
-r-------- 1 denny mhs 280 Apr 22 10:22 bab1
-r-------- 1 denny mhs 164 Apr 22 10:22 bab2
-r-------- 1 denny mhs 380 Apr 22 10:22 bab3
$ chmod u=rw,go=r bab1 bab2 bab3
-rw-r--r-- 1 denny mhs 280 Apr 22 10:22 bab1
-rw-r--r-- 1 denny mhs 164 Apr 22 10:22 bab2
-rw-r--r-- 1 denny mhs 380 Apr 22 10:22 bab3
$

Mode simbolik pertama mengalokasikan ijin baca dan
tulis bagi pemilik file tersebut. Mode simbolik
kedua mengalokasikan ijin baca group dan orang lain. Cara
berikut akan menghasilkan mode yang sama dengan operasi
chmod sebelumnya.

$ chmod a=r,u+w bab1 bab2 bab3
$

Jika mode perijinan file ternyata dapat dibaca, dapat
ditulis dan dapat dieksekusi oleh semua pemakai sebagai
berikut:

$ ls -l
total 3
-rwxrwxrwx 1 denny mhs 280 Apr 22 10:22 bab1
-rwxrwxrwx 1 denny mhs 164 Apr 22 10:22 bab2
-rwxrwxrwx 1 denny mhs 380 Apr 22 10:22 bab3
$

maka kita dapat menghapus perijinannya, misalnya
menghapus ijin tulis bagi semua pemakai.

$ chmod a-w bab1 bab2 bab3
$ ls -l
total 3
-r-xr-xr-x 1 denny mhs 280 Apr 22 10:22 bab1
-r-xr-xr-x 1 denny mhs 164 Apr 22 10:22 bab2
-r-xr-xr-x 1 denny mhs 380 Apr 22 10:22 bab3
$

Untuk mendapatkan hasil seperti di atas, kita dapat
pula tidak menyebutkan mode simbolik a seperti di atas

$ chmod -w bab1 bab2 bab3
$

Mode perijinan yang digunakan di atas adalah mode
perijinan yang biasa dilakukan oleh pemakai biasa. Masih ada
beberapa mode perijinan lainnya yang pada umumnya digunakan
oleh administrator sistem atau superuser.

3.13.3 Mode Perijinan Awal

Mode perijinan awal adalah mode perijinan yang
diberikan pada file atau direktori yang baru diciptakan atau
dibuat. Mode perijinan awal ini dikontrol oleh apa yang
disebut user mask dan disingkat umask. Kita dapat melihat
nilai standar mode perijinan awal dengan memanggil perintah
umask tanpa diikuti argumen apapun.

$ umask
0000
$

Artinya bahwa ketika file pertama kali dibuat, nilai
standar mode perijinannya adalah rw-rw-rw- atau 666,
sedangkan bagi direktori, nilai standar mode perijinannya
adalah rwxrwxrwx atau 777. Nilai ini merupakan nilai standar
yang diberikan oleh sistem. Nilai standar mode perijinan ini
dapat diubah dengan menggunakan perintah umask dan diikuti
argumen. Nilai dari argumen dapat dihitung dengan cara
mengurangkan nilai standar awal mode perijinan dengan mode
perijinan yang diinginkan. Misalnya kita ingin nilai standar
mode perijinan awal yang baru adalah rw-r--r-- atau 644.

666 (nilai standar mode perijinan awal)
644 (nilai standar mode perijinan yang diinginkan)
--- -
022 (nilai umask baru)

Dengan demikian kita dapat mengubah nilai standar mode
perijinan awal dengan cara:

$ umask 022
$

Sekarang file-file yang baru dibuat akan otomatis
memiliki mode perijinan awal rw-r--r--. Sementara itu mode
perijinan awal direktori akan otomatis bernilai rwxr-xr-x.
Nilai ini didapat dari mengurangkan nilai standar mode
perijinan awal dengan nilai umask saat itu.

777 (nilai default mode perijinan awal)
022 (nilai umask)
--- -
755 (nilai default mode perijinan awal baru)

Dengan demikian harus diatur sedemikian sehingga
terdapat kesesuaian seperti yang diharapkan antara mode
perijinan awal bagi file dan direktori.

No comments:

Post a Comment