Plan 9 menggunakan sebuah basis data tunggal untuk menyimpan semua konfigurasi informasi jaringan terkait di dalam sistem.
Basis data menyimpan konfigurasi untuk mesin yang diidentifikasikan secara spesifik oleh instalasi local, konfigurasi awal untuk mesin di keterangan-keterangan subnets , informasi resolusi nama domain, dan memetakan antara nama layanan TCP dan nomor port diantara hal yang lain.
Basis data dirakit dari sejumlah file-file teks yang memuat sejumlah struktur penyimpanan.
Sumber awal dari basis data adalah file teks /lib/ndb/local. Masukan yang paling penting pada file tersebut adalah "database= " entry , yang menspesifikasikan sebuah daftar file-file yang lain yang dimasukkan. Sebagai contoh,
database=
file=/lib/ndb/local
file=/lib/ndb/local-cs
file=/lib/ndb/common
Itu semua berasal dari isi file ini dan yang terdapat di dalam daftar dimana basis data dirakit.
Secara konvensional, file /lib/ndb/common adalah untuk definisi port standar dan yang lain; file-file yang lain yang berisi konfigurasi sistem aktual.
STRUKTUR PENYIMPANAN
Secara leksikal, suatu penyimpanan adalah sebuah baris yang unidented diikuti oleh sejumlah baris yang idented (rangkap dua). Jadi sebuah baris yang unidented , baris kosong, atau comment line (baris komentar) (yang dimulai dengan #) mempunyai hasil akhir sebuah penyimpanan.
Secara semantik, suatu penyimpanan adalah kumpulan tuple ``key=value''. Tuple pada baris yang sama terikat lebih kuat daripada tuple pada baris yang berbeda, tetapi umumnya hal tersebut tidak begitu penting.
Sebuah contoh penyimpanan adalah:
ip=10.247.62.235 ip=10.247.60.200 sys=lusitania ether=0060088bc416
proto=il
dom=lusitania.domain.dom
Penyimpanan ini mendefinisikan sebuah system yang bernama "lusitania" dengan alamat ethernet yang dispesifikasikan, dua alamat IP, dan sebuah nama domain yang memenuhi syarat. Tuple ``proto=il'' mengindikasikan bahwa system berbicaara tentang IL, pilihan protokol transport Plan 9. Secara otomatis, system diasumsikan hanya untuk berbicara TCP.
Atribut lain yang berguna mencakup:
auth default Plan 9 authentication server (server pembuktian default Plan 9)
cpu default Plan 9 cpu server (cpu server default Plan 9)
dns default DNS server (bisa lebih dari satu) (DNS server default (dapat lebih dari satu)
dnsdomain default DNS domain suffix (bisa lebih dari satu) ( akhiran domain DNS yang default dapat lebih dari satu)
fs default Plan 9 file server (file server Plan 9 yang default )
ipgw IP gateway (gerbang IP)
ipmask IP network mask (pelindung IP jaringan)
ipsubmask IP subnetwork mask (pelindung IP sub jaringan)
ntp default NTP server (server NTP yang default )
nntp default NNTP server (server NNTP yang default )
smtp default SMTP server (server SMTP yang default )
HIERARKI PERJALANAN IP
Kebanyakan informasi di dalam basis data tidak disimpan di dalam sistem penyimpanan. Malahan, fungsi pencarian basis data ndbipinfo (lihat ndb(2)) dan antar muka (interface ) baris komentar yang sederhana ndb/ipquery (lihat ndb(8)) mengenal tentang IP jaringan hierarki.
Ketika sebuah atribut, katakana saja 'fs', dibutuhkan untuk sebuah sistem, proses pencarian dimulai dengan melihat penyimpanan basis data sistem jaringan. Jika mempunyai sebuah fs= entry, ndbipinfo mengembalikan nilai tersebut. Jika tidak, ndbipinfo mencatat bahwa alamat IP sistem dan berjalan ke bawah IP hirarki melalui basis data, dimulai dengan IP jaringan awal untuk alamat itu.
Secara spesifik, hal itu dimulai dengan default IP mask untuk alamat itu, menambahkan alamat IP untuk menemukan IP jaringan awal. Seandainya alamat kita lebih tinggi dari 10.247.62.235. IP mask default untuk alamat tersebut adalah 255.0.0.0, jadi IP jaringan default adalah 10.0.0.0.
Ndbipinfo melihat sebuah masukan ip=10.0.0.0. dengan sebuah masukan ipmask=255.0.0.0. Andaikan kita menemukan
ipnet=ten-net ip=10.0.0.0 ipmask=255.0.0.0
ipsubmask=255.255.255.0
smtp=mailserver.domain.dom
ntp=ntpserver.domain.dom
fs=myfs
Masukan berkata bahwa jaringan tersusun oleh sub jaringan yang lebih kecil dengan mask 255.255.255.0, jadi kita melihat masukan IP jaringan 10.247.62.0 dengan mask yang tepat. Seandainya kita menemukan ( nilai didalam ipnet=tuple yang tidak relevan)
ipnet=my-net ip=10.247.62.0 ipmask=255.255.255.0
fs=my-other-fs
ipgw=10.247.62.1
Karena tidak ada masukan ipsubmask, kita berhenti berjalan/mencari, mengembalikan ``my-other-fs'', karena itulah fs= entry untuk subnet terkecil yang kita dapat. Ssebagai catatan bahwa masukan pemyimpanan my-net melebihi masukan penyimpanan ten-net, hanya sebagai suatu fs= entry di dalam penyimpanan lusitania yang akan melebihi keduanya. Jika kita tidak menemukan fs= entry di dalam my-net, kita akan menggunakan ten-net.
Program ndb/ipquery (lihat ndb(8)) baik untuk mengetes apa yang telah di set oleh jaringan anda seperti yang anda inginkan, dan hirarki IP berjalan seperti yang diharapkan.
IP submask default ditentukan dengan angka pertama pada alamat:
0-127 255.0.0.0
128-191 255.255.0.0
192-223 255.255.255.0
224-239 Cadangan untuk alamat yang multicast
240-255 Cadangan untuk penggunaan yang akan datang
(Ini adalah standar internet, bukan standar Plan 9)
KONFIGURASI
Setelah membaca bagian awal, anda dapat memulai untuk mendefinisikan rancangan dari jaringan anda. Suatu contoh konfigurasi ada di at /lib/ndb/local.complicated. Suatu konfigurasi minimal dihadirkan di sini.
database=
file=/lib/ndb/local
file=/lib/ndb/common
ipnet=mynetwork ip=192.168.0.0 ipmask=255.255.255.0
ipgw=192.168.0.1
dns=1.2.3.4
auth=mauretania
proto=il
ip=192.168.0.2 sys=mauretania
ip=192.168.0.3 sys=aquitania
Di contoh ini kami mensetup mesin 'mauretania' sebagai mesin Plan 9 pertama kami dan menjadikannya server authentikasi untuk 192.168.0.x subnet kami. Kami akan memberikan mesin kami alamat IP 192.168.0.2.
Jika anda tidak berminat untuk mempunyai koneksi internet anda dapat menghilangkan ipgw dan dns. Hal ini hanya meninggalkan proto=il tanpa penjelasan, dan untuk saat ini kami hanya akan mengatakan itu penting.
IPCONFIG
Sebagai catatan bahwa di atas kami telah mendefinisikan dua sistem, yang satu adalah 'mauretania', dan yang lain disebut 'aquitania'. Bagaimana Plan 9 memastikan bahwa mesin kami menggunakan 'mauretania'? Jawabannya adalah ip/config.
Ketika suatu mesin Plan 9 mem-boot, mesin itu akan menjalankan konfigurasi script /rc/bin/termrc or /rc/bin/cpurc, tergantung apakah itu adalah terminal atau server CPU.
Di dalam /rc/bin/termrc anda akan menemukan baris
ip/ipconfig >/dev/null >[2=1]
Baris ini mengakibatkan mesin mencari server DHCP untuk men-supply-nya dengan konfigurasi informasi. Anda dapat men-set up CPU/autentifikasi server Plan 9 untuk menjalankan server DHCP. Ketika anda melakukan hal ini, server akan mencari basis data jaringannya dan menyediakan konfigurasi default-nya.
Meskipun demikian, selalu ada informasi yang tidak cukup untuk memberikan IP yang pasti untuk suatu mesin yang spesifik. Salah satu cara melakukan hal ini adalah untuk menyatukan suatu konfigurasi yang spesifik ke suatu alamat jaringan card's MAC yang spesifik. Setiap kartu jaringan fisik diberikan sebuah alamat MAC yang unik selama proses manufaktur. Anda dapat menemukan alamat kartu MAC anda dengan mengetik baris
cat /net/ether0/addr
(Jika tidak terdapat sebuah direktori /net/ether0 maka Plan 9 tidak akan menemukan suatu ethernet card (kartu ethernet) dalam sistem anda.) Sekarang anda dapat menambahkan alamat MAC sebagai suatu atribut pada baris konfigurasi seperti di dalam ndb.
ip=192.168.0.2 sys=mauretania ether=abc12345def
dimana 'abc12345def' adlah alamat MAC. Tentu saja jika tidak terdapat server Plan 9 pada jaringan maka metode ini tidak akan berhasil. Ketika men-setting up mesin Plan 9 pertama anda, anda dapat memodifikasi baris ip/ipconfig untuk menspesifikasi
gateway tertentu, ip, dan ip-mask untuk digunakan.
ip/ipconfig -g 192.168.0.1 ether /net/ether0 192.168.0.2 255.255.255.0
Sekarang anda mempunyai informasi yang cukup untuk mengikuti instruksi pada Configuring a Standalone CPU Server. Ia akan membimbing dalam men-set up sebuah sistem yang sesuai seperti kombinasi server CPU. Server autentifikasi, server DHCP, dan bahkan server kfs(file). Untuk file server yang tepat lihat Installing a Plan 9 file server.
MEMBOOTSTRAPPING SISTEM YANG LAIN
...
menjelaskan item di dalam cpurc
ndb/cs ndb/dns ip/dhcp ip/tftp aux/timesync /net/ndb auth/keyfs aux/listen
Konfigurasi File System Kfs
USERS DAN PERMISSIONS
Tidak ada super-user ; istilah untuk orang yang mem-boot terminal (secara umum disebut Eve, Adm yang memiliki file server). Kebanyakan devices dimiliki oleh Eve, dan kernel lokal akan membiarkan Eve untuk melakukan kebanyakan hal yang umumnya dikaitkan dengan super-user (contohnya, men-debug atau kill proses-proses yang tidak dimilikinya). Kekuasaan Eve tidak dapat melampaui mesin lokal, atau bahkan ke dalam file system kfs. Perbedaan yang penting adalah bahwa file system kfs disediakan oleh proses dari user , yang memiliki permissions untuk memeriksa secara terpisah dari kernel, dan file sistem kfs tersebut membiarkan hostowner untuk memiliki permissions khusus secara langsung.
Tentu saja, permissions perlu di-bypass selama beberapa waktu. Contohnya, file /adm/users (pada Unix merupakan kombinasi dari /etc/passwd dan /etc/group) tidak dapat di-write kecuali oleh anggota dari adm. Daripada menjadi anggota dari adm, kami biasanya menulis 'disk/kfscmd user' untuk mematikan pemeriksaan permission pada kfs file server, edit/adm/users; membuat kfs membacanya kembali dengan menulis disk/kfscmd user, dan kemudian menghidupkan kembali pemeriksaan permission dengan menulis 'disk/kfscmd disallow' (Jika anda menjalankan file server jaringan, semua ini dihindari; kontrol yang paling sesuai hanya disediakan pada file server console).
Untuk menambah user baru, tambahkan user tersebut ke file /adm/users dan kemudian jalankan perintah user (user command ); format dari file tersebut didokumentasikan di users (6). (Perhatikan bahwa pada file server yang berdiri sendiri, perintah user baru (new user command ) mengatur users , untuk menghindari matinya pemeriksaan permission .) Manual pages fs (8) dan kfscmd (8) menjelaskan lebih lanjut tentang perintah sistem file(file system commands ).
Untuk membuat user baru, anda dapat menjalankan
disk/kfscmd 'newuser tor'
Secara otomatis akan ditambahkan sebuah baris seperti
282:tor:tor:
ke /adm/users, jalankan kfscmd user, dan kemudian jalankan
disk/kfscmd 'create /usr/tor tor tor 775 d'
disk/kfscmd 'create /mail/box/tor tor upas 775 d'
disk/kfscmd 'create /mail/box/tor/mbox tor upas 622 al'
untuk membuat home directory dan mail box untuk tor. Sekarang anda akan menginginkan untuk menghentikan disks dan me-reboot untuk dapat log in sebagai tor; hal pertama yang harus dilakukan adalah me-set up profile dan memulai sistem window dengan menjalankan
/sys/lib/newuser
Perhatikan bahwa anda harus me-reboot untuk dapat log in sebagai user lain; hal ini disebabkan karena kernel harus meng-authenticate ke file server untuk memperoleh file-file startup seperti init atau script startupnya , dan satu-satunya cara bagi terminal untuk mendapatkan authentication credentials adalah dengan memasukkan nama dan password . Tentu saja, untuk kfs hal ini dapat dikesampingkan, namun hal ini penting ketika mem-boot dari real file server pada jaringan.
STARTUP
Ketika sebuah mesin Plan 9 mem-boot , mesin tersebut menjalankan configuration script /rc/bin/termrc atau /rc/bin/cpurc, tergantung apakah mesin tersebut adalah terminal atau CPU server. Hal ini men-set up /dev dan menginisialisasi beberapa enviroment variables yang umum, khususnya $fileserver. Variabel ini digunakan oleh lp, di antara program-program lainnya. Untuk konfigurasi yang berdiri sendiri, hal ini pastilah kfs, ketika di-install ; jika anda men-set up real Plan 9 file server dan mem-boot melalui jaringan, ubahlah ini menjadi nama dari file server jaringan tersebut.
Konfigurasi SSH
Untuk menggunakan Plan 9 SSH tools, anda harus men-generate sebuah host key pada sistem anda. Untuk melakukannya, jalankan aux/ssh_genkey ketika pemeriksaan permission mati; ini akan membuat file-file /sys/lib/ssh/hostkey.public dan /sys/lib/ssh/hostkey.secret ; pastikan bahwa hostkey.secret tidak dapat di-read oleh user lain selain yang biasanya menjalankan network listeners. Anda juga dapat menggunakan ssh_genkey untuk membuat sebuah key untuk anda sendiri: cd $home/lib aux/ssh_genkey $user File $user.public yang dibuat di direktori pribadi lib anda sesuai untuk di-sharing dengan mesin Unix, contohnya untuk meletakkan pada file authorized_keys anda di mesin Unix. File $user.secret.factotum adalah sebuah key rahasia yang sesuai dengan penggunaan dengan factotum. Anda dapat meng-installnya dengan menjalankan cp $home/lib/$user.secret.factotum/mnt/factotum/ctl Setelah itu, ssh akan dapat menggunakan key rahasia tersebut (melalui factotum).