David Byers IDA/ADIT/IISLAB ©2003–2004 David Byers Unix och Linux HISTORIA – FILER OCH FILSYSTEM – PROCESSER – ANVÄNDARE GRUPPER – RÄTTIGHETER – KOMMANDON – LOGGNING
©2003–2004 David Byers Historia Ken Thompson Thompson, Ritchie, PDP 11 Dennis Ritchie UNICS skapades av främst Kenneth Thompson och Dennis Ritchie på Bell Labs Först implementerat på PDP 7, sedan PDP 11/45
©2003–2004 David Byers Två traditioner Två traditioner BSD med SunOS 4.x, Linux System V (SVR3, SVR4) med SunOS 5, HP-UX Skillnader i kommandon, filsystem, filosofi och tekniska val BSD av tradition öppet, System V slutet Många system i dag är en blandning Solaris 9 med BSD-kompatibilitet RedHat Linux med System V init men liknar BSD internt
©2003–2004 David Byers Standardisering Single Unix Specification (SUS) Efterträdare till bl.a. Unix98 Publicerad av Open Group 2004 Även IEEE och ISO/IEC-standard POSIX (Portable Operating System Interface) Underlätta portering av tillämpningar mellan operativsystem Består av flera delstandarder, inspirerade av Unix Implementeras till viss del av de flesta operativsystem
©2003–2004 David Byers Linux Öppen, portabel operativsystemskärna Linux innehåller inga användarprogram Influenser från BSD, System V och andra system Operativsystemsomgivningen Består av Gnu-projektets verktyg (därav Gnu/Linux) Bestäms av den distribution av Linux man använder
©2003–2004 David Byers Filer och filsystem
©2003–2004 David Byers Vad är en fil? Vanligaste sorten Vanlig datafil Kan även vara Symbolisk länk Device-nod Unix domain socket Named pipe Block device ...
©2003–2004 David Byers Specialfiler Special files är gränssnittet för drivrutiner Två typer: character och block Hårddiskar, terminaler, slumptalsgenerator mm Lagras i /dev % cd /dev; ls -l audio fd0 ttyp1 sda sda1 crw-rw root audio 14, 4 Jun audio brw-rw root floppy 2, 0 Jul fd0 crw-rw root tty 3, 1 Jun ttyp1 brw-rw root disk 8, 0 Jun /dev/sda brw-rw root disk 8, 1 Jun /dev/sda1 % cd /dev; ls -l audio fd0 ttyp1 sda sda1 crw-rw root audio 14, 4 Jun audio brw-rw root floppy 2, 0 Jul fd0 crw-rw root tty 3, 1 Jun ttyp1 brw-rw root disk 8, 0 Jun /dev/sda brw-rw root disk 8, 1 Jun /dev/sda1
©2003–2004 David Byers Vanliga Specialfiler Blockenheter /dev/hda – IDE-disk /dev/hda1 – Partition 1 på hda /dev/sda – SCSI-disk /dev/ubd0 – UML-disk Teckenenheter /dev/tty – Aktuell terminal /dev/console – Systemkonsoll /dev/pts/17 – Pseudo-terminal Special-specialfiler /dev/null – Svart hål /dev/zero – Nollor /dev/kmem – Kärnans minne
©2003–2004 David Byers Vad är ett filsystem En struktur av filer på disk Hierarkisk struktur Även programvara Även specifikationerna En logisk vy av alla filer En gemensam hierarki Skapas genom monteringar
©2003–2004 David Byers Filsystem
©2003–2004 David Byers Filsystemets organisation Beror på Unixvariant Standarder finns men följs inte helt Viktiga kataloger /etc innehåller inställningar för systemet /usr innehåller program och programdata /var innehåller loggar, mailköer och liknande /usr/bin och /bin innehåller program /usr/sbin och /sbin innehåller administratörsverktyg /dev innehåller devices (bl.a. representation av hårdvara)
©2003–2004 David Byers Montering av filsystem Filsystemstyp: ext2 Options: noexec Källa: /dev/hda2 (blockenhet) Monteringspunkt: /data Filsystemstyp: nfs Options: rw Källa: atlas:/users/9/3/alean938 Monteringspunkt: /home/alean938 mount –t ext2 –o noexec /dev/hda2 /data mount –t nfs –o rw atlas:/users/9/3/alean938 /home/alean938 / homedata /dev/hda1 / homedata /dev/hda1 atlas:/ users alean938 … … …
©2003–2004 David Byers Filsystemstyper Traditionella filsystem ext3fs (Linux standard) ufs, zfs (Solaris standard) xfs (Irix standard) ntfs (Windows standard) VxFS (3e part, kommersiellt) Särskilda filsystem tmpfs (tillfällig lagring) sysfs (Linux devices/drivers) procfs (system/processinformation) Nätverksfilsystem nfs (Network File System) cifs (Common Internet FS) afs (Andew File System) Distribuerade filsystem Coda Lustre Gfs (Global File System) GoogleFS
©2003–2004 David Byers Fler kommandon mkfs Skapar fysiska filsystem mount Infogar filsystem i hierarkin umount Tar bort filsystem ur hierarkin fsck Reparerar trasiga filsystem tunefs Inställningar för filsystem
©2003–2004 David Byers Filsystem: uppbyggnadsexempel / devetcusrvarbintmp mail NFS mail:/var/mail NFS server:/linux/usr Blockenhet: /dev/hda1 Blockenhet: /dev/hda2 Modul: tmpfs /dev/hda1/ext3defaults,errors=remount-ro01 /dev/hda2/varext3defaults,errors=remount-ro01 /usrserver:/linux/usrnfsro,hard,intr01 /var/mailmail:/var/mailnfsrw,hard01 /tmpnonetmpfsdefaults01 /etc/fstab
©2003–2004 David Byers Särskilda filsystem: procfs (/proc) Inställningar /proc/sys/net/ipv4/… Information /proc/version /proc/meminfo Implementeras som sysctl Kommandot sysctl Filen /etc/sysctl.conf % echo 1 > /proc/sys/net/ipv4/tcp_ecn % cat /proc/version Linux version (gcc version (Debian 1: )) #1 Wed Sep 1 16:40:49 CEST 2004 % cat /proc/meminfo MemTotal: kB MemFree: kB Buffers: kB Cached: kB SwapCached: 0 kB % /sbin/sysctl net.ipv4.ip_default_ttl net.ipv4.ip_default_ttl = 64 % /sbin/sysctl -w net.ipv4.ip_default_ttl=65 net.ipv4.ip_default_ttl = 65 % /sbin/sysctl –w net.ipv4.tcp_ecn=1 net.ipv4.tcp_ecn = 1
©2003–2004 David Byers Processer Användare Grupper Rättigheter
©2003–2004 David Byers Processer och signaler Skapas med systemanropet fork Nya program startas med fork + exec Styrs via signaler Skickas med systemanropet kill (kommandot kill) SIGKILL avbryter, SIGSTOP och SIGTSTP pausar Visa processer med kommandot ps Se ID, förälder, prioritet, status, kommando mm Användbara varianter: ps axu, ps -AHl
©2003–2004 David Byers Processer och signaler % ps -H -eo s,user,pid,ppid,pri,sz,tty,cmd S USER PID PPID PRI SZ TT CMD S root ? init S root ? gpm S root ? inetd S root ? nfsd S root ? lockd S root ? rpciod S root ? sshd S root ? sshd S davby ? sshd S davby pts/1 zsh R davby pts/1 ps SStatus PIDProcess-ID PPIDFörälder PRIPrioritet SZStorlek TTTerminal CMDKommando
©2003–2004 David Byers Användare och processer Effective user ID UID som bestämmer rättigheter Real user ID Processens ”riktiga” UID Saved user ID Sparat UID för att återställa real/effective user ID Ändra EUID Systemanrop (seteuid) Setuid-bit på program Ändra RUID Systemanrop (setreuid) Kommandot su
©2003–2004 David Byers Användare och processer % ps -H -eo ruser,user,cmd PID RUSER USER COMMAND root root /usr/sbin/sshd davby davby /usr/sbin/sshd davby davby -zsh davby root passwd davby davby ps -H -eo pid,ruser,user,cmd sshd ändrade real UID till davby passwd är setuid root och ändrar effective UID; gör det möjligt att ändra filer som davby inte har rätt att ändra (tex /etc/passwd)
©2003–2004 David Byers Rättigheter Åtkomst till filer reglerar de flesta rättigheter Privilege elevation för tillfälligt ökade rättigheter För att skriva till skyddade filer, utökad access till nätverk mm Uppnås genom att ändra EUID och/eller EGID Exekverbara filer kan ändra EUID/EGID till sin ägare eller grupp Användare med UID 0 är ett specialfall, ”root” Får ändra UID och GID fritt Har åtkomst till alla filer och systemresurser
©2003–2004 David Byers Rättigheter % cd /dev; ls -l audio fd0 ttyp1 crw-rw root audio 14, 4 Jun audio brw-rw root floppy 2, 0 Jul fd0 crw-rw root tty 3, 1 Jun ttyp1 % cd /usr/bin; ls -l passwd wall -rwsr-xr-x 1 root root Apr 7 17:59 passwd -rwxr-sr-x 1 root tty 9112 Jan wall wall kör alltid med EGID (effective group ID) tty passwd kör alltid med EUID (effective user ID) root owner group
©2003–2004 David Byers Användare och grupper Primärt objekt för rättigheter Varje fil ägs av en användare Rättigheter ges till användare Processer hör till användare Definieras i /etc/passwd och /etc/shadow Kan definieras i katalogtjänst som LDAP eller NIS Sekundärt objekt för rättigheter Rättigheter kan delas ut till en grupper Användare är medlemmar i grupper En primär grupp (i /etc/passwd) Kan vara med i flera sekundära grupper (i /etc/group) Definieras i /etc/group Kan definieras i katalogtjänst som LDAP eller NIS
©2003–2004 David Byers Användare User nameAnvändarnamnet PasswordKrypterat lösenord User ID (uid)Användarens identitet Group ID (gid)Användarens primära grupp Full name (gecos)Godtycklig information Home directoryArbetskatalog för login shell Login shellProgram som startas när användaren loggar in root:x:0:0:root:/root:/usr/bin/zsh daemon:x:1:1:daemon:/usr/sbin:/bin/sh root:x:0:0:root:/root:/usr/bin/zsh daemon:x:1:1:daemon:/usr/sbin:/bin/sh Utdrag ut /etc/passwd
©2003–2004 David Byers Användare User name Password Days since password was last changed Days before password may be changed Days after which password must be changed Days before password is to expire that user is warned Days after password expires that account is disabled Days since Jan 1, 1970 that account is disabled A reserved field root:$1$L6.uWAls$wi2eBrKgbp9S54DWF.iNi.:11500:0:99999:7::: daemon:*:11500:0:99999:7::: root:$1$L6.uWAls$wi2eBrKgbp9S54DWF.iNi.:11500:0:99999:7::: daemon:*:11500:0:99999:7::: Utdrag ut /etc/shadow
©2003–2004 David Byers Grupper Group nameGruppens namn PasswordKrypterat lösenord för gruppen Group ID (gid)Gruppens ID MembersLista av användare som har denna grupp som sekundär grupp backup:x:34:taper,janpe operator:x:37:davby,calcu,root backup:x:34:taper,janpe operator:x:37:davby,calcu,root Utdrag ut /etc/group
©2003–2004 David Byers Name Service Switch (NSS) Informationsdatabaser Användare/lösenord Datornamn Protokoll mm… Name service switch Bestämmer varifrån informationen ska hämtas Konfigureras i /etc/nsswitch.conf Cache med nscd passwd: files ldap group: files ldap shadow: files ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis passwd: files ldap group: files ldap shadow: files ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis Exempel
©2003–2004 David Byers Kommandotolken
©2003–2004 David Byers Kommandon Exekverbara filer Definieras av en rättighetsbit Varje kommando är en exekverbar fil Varje exekverbar fil kan vara ett kommando Script Script är exekverbara textfiler som tolkas av ett annat program Kommandon Exekvering av program /bin/ls/bin/rm/bin/tar
©2003–2004 David Byers Kommandotolkens funktioner Användardialogen Köra kommandon Dirigera om in/utdata Expansion av filnamn Inbyggda kommandon Hantering av omgivningsvariabler
©2003–2004 David Byers Kommandon i Unix Enkla kommandon Väldefinierade uppgifter Komplexa kommandon byggs upp från enkla Sätts samman med pipes, substitution, redirection, sekventiering m.m. cut –d: -f1,6 </etc/passwd | \ while read user dir ; do echo $user find $dir –type f \ –atime +365 –print | \ xargs du | \ awk ’BEGIN{s=0} {s+=$1} END{print s}’ done | \ paste - - | \ sort > DISK_REPORT
©2003–2004 David Byers Kommandoexempel cut –d: -f1,6 < /etc/passwd | \ while read user dir ; do echo $user find $dir –type f –atime +365 –print | \ xargs du | \ awk ’BEGIN{s=0} {s+=$1} END{print s}’ done | \ paste - - | \ sort > DISK_REPORT
©2003–2004 David Byers Loggning
©2003–2004 David Byers Loggning Händelser i systemet skrivs till loggfiler Alla ligger normalt under /var/log Loggfiler roteras för att inte ta för mycket plats apache/auth.logauth.log.0auth.log.1.gz daemon.logdaemon.log.0daemon.log.1.gzdmesg kern.logkern.log.0kern.log.1.gzlastlog mail.errmail.err.0mail.err.1.gzmail.info mail.info.0mail.logmail.log.0mail.log.1.gz mail.warnmail.warn.0mail.warn.1.gzmessages messages.0syslogsyslog.0syslog.1.gz wtmp apache/auth.logauth.log.0auth.log.1.gz daemon.logdaemon.log.0daemon.log.1.gzdmesg kern.logkern.log.0kern.log.1.gzlastlog mail.errmail.err.0mail.err.1.gzmail.info mail.info.0mail.logmail.log.0mail.log.1.gz mail.warnmail.warn.0mail.warn.1.gzmessages messages.0syslogsyslog.0syslog.1.gz wtmp Innehåll i /var/log
©2003–2004 David Byers Loggning Loggning görs genom syslogd Konfigureras i /etc/syslogd.conf Möjlighet att logga till en annan dator Viktiga loggfiler syslogHuvudlogfil auth.logInloggningar och utloggningar daemon.logMeddelanden från daemoner debug.logDebugmeddelanden
©2003–2004 David Byers Loggexempel /var/log/syslog Aug 17 16:17:01 sysinst-gw /USR/SBIN/CRON[15369]: (root) CMD ( run-parts --report /etc/cron.hourly) Aug 17 16:22:46 sysinst-gw named[1930]: loading configuration from '/etc/bind/named.conf' Aug 17 16:23:28 sysinst-gw postfix/pickup[15367]: BEDD31F36C: uid=0 from= /var/log/auth.log Aug 17 16:22:28 sysinst-gw sshd[15370]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=obel19.ida.liu.se user=davby Aug 17 16:22:30 sysinst-gw sshd[15370]: error: PAM: Authentication failure for davby from obel19.ida.liu.se Aug 17 16:22:38 sysinst-gw su[15374]: + pts/12 davby:root Aug 17 16:22:38 sysinst-gw su[15374]: (pam_unix) session opened for user root by davby(uid=1150)
©2003–2004 David Byers Loggexempel /var/log/mail.log Aug 17 16:23:28 sysinst-gw postfix/pickup[15367]: BEDD31F36C: uid=0 from= Aug 17 16:23:28 sysinst-gw postfix/cleanup[15384]: BEDD31F36C: message-id= Aug 17 16:23:28 sysinst-gw postfix/qmgr[2282]: BEDD31F36C: from=, size=333, nrcpt=1 (queue active) Aug 17 16:23:31 sysinst-gw postfix/smtp[15386]: connect to ida.liu.se[2001:6b0:17:f020::25]: No route to host (port 25) Aug 17 16:23:32 sysinst-gw postfix/smtp[15386]: BEDD31F36C: to=, relay=ida.liu.se[ ], delay=4, status=bounced (host ida.liu.se[ ] said: Domain of sender address gw.sysinst.ida.liu.se does not exist (in reply to RCPT TO command)) Aug 17 16:23:32 sysinst-gw postfix/cleanup[15384]: 11C321F36D: message-id= Aug 17 16:23:32 sysinst-gw postfix/qmgr[2282]: 11C321F36D: from=<>, size=2460, nrcpt=1 (queue active) Aug 17 16:23:32 sysinst-gw postfix/qmgr[2282]: BEDD31F36C: removed Aug 17 16:23:32 sysinst-gw postfix/cleanup[15384]: 1B1831F2BE: message-id= Aug 17 16:23:32 sysinst-gw postfix/local[15388]: 11C321F36D: to=, relay=local, delay=0, status=sent (forwarded as 1B1831F2BE) Aug 17 16:23:32 sysinst-gw postfix/qmgr[2282]: 1B1831F2BE: from=<>, size=2620, nrcpt=1 (queue active) Aug 17 16:23:32 sysinst-gw postfix/qmgr[2282]: 11C321F36D: removed Aug 17 16:23:35 sysinst-gw postfix/smtp[15386]: connect to ida.liu.se[2001:6b0:17:f020::25]: No route to host (port 25) Aug 17 16:23:35 sysinst-gw postfix/smtp[15386]: 1B1831F2BE: to=, orig_to=, relay=ida.liu.se[ ], delay=3, status=sent ( k7HENZ7o Message accepted for delivery) Aug 17 16:23:35 sysinst-gw postfix/qmgr[2282]: 1B1831F2BE: removed
©2003–2004 David Byers Felsökning genom loggen Känn till var varje program loggar fel Allt går inte via syslogd Ta reda på hur man ökar mängden meddelanden De flesta program kan logga mycket mer Leta efter ”diagnostic messages” och ”debug messages” Se upp med loggnivån! Titta i loggarna efter fel och efter varje ändring Gör det till en vana!
©2003–2004 David Byers
Varför heter det d? dae·mon n. 1.Chiefly British. Variant of demon. 2.Variant of daimon. 3.Computer Science. A program or process that sits idly in the background until it is invoked to perform its task.