Unix och Linux
description
Transcript of Unix och Linux
David Byers
[email protected]/ADIT/IISLAB
©2003–2
004 D
avid
Byers
Unix och LinuxHISTORIA – FILER OCH FILSYSTEM – PROCESSER –
ANVÄNDAREGRUPPER – RÄTTIGHETER – KOMMANDON – LOGGNING
©2003–2
004 D
avid
Byers
Historia
Ken Thompson
Thompson, Ritchie, PDP 11
Dennis Ritchie
UNICS skapades 1969-1970 av främst Kenneth Thompson och Dennis Ritchie på Bell
Labs
Först implementerat på PDP 7, sedan PDP 11/45
©2003–2
004 D
avid
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–2
004 D
avid
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–2
004 D
avid
Byers
Filer och filsystem
©2003–2
004 D
avid
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–2
004 D
avid
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---- 1 root audio 14, 4 Jun 16 2001 audio
brw-rw---- 1 root floppy 2, 0 Jul 30 2001 fd0
crw-rw---- 1 root tty 3, 1 Jun 16 2001 ttyp1
brw-rw---- 1 root disk 8, 0 Jun 16 2001 /dev/sda
brw-rw---- 1 root disk 8, 1 Jun 16 2001 /dev/sda1
% cd /dev; ls -l audio fd0 ttyp1 sda sda1
crw-rw---- 1 root audio 14, 4 Jun 16 2001 audio
brw-rw---- 1 root floppy 2, 0 Jul 30 2001 fd0
crw-rw---- 1 root tty 3, 1 Jun 16 2001 ttyp1
brw-rw---- 1 root disk 8, 0 Jun 16 2001 /dev/sda
brw-rw---- 1 root disk 8, 1 Jun 16 2001 /dev/sda1
©2003–2
004 D
avid
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–2
004 D
avid
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–2
004 D
avid
Byers
Filsystem
©2003–2
004 D
avid
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–2
004 D
avid
Byers
Montering av filsystem
Filsystemstyp: ext2Options: noexecKälla: /dev/hda2 (blockenhet) Monteringspunkt: /data
Filsystemstyp: nfsOptions: rwKälla:
atlas:/users/9/3/alean938 Monteringspunkt:
/home/alean938
mount –t ext2 –o noexec /dev/hda2 /datamount –t nfs –o rw atlas:/users/9/3/alean938 /home/alean938
/
home data
/dev/hda1
/
home data
/dev/hda1
atlas:/
users
0 1 9
2 3 4
alean938
alean938alean938…
… …
©2003–2
004 D
avid
Byers
FilsystemstyperTraditionella 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–2
004 D
avid
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–2
004 D
avid
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/versionLinux version 2.6.7 (root@sysi-01) (gcc version 3.3.4(Debian 1:3.3.4-6)) #1 Wed Sep 1 16:40:49 CEST 2004% cat /proc/meminfoMemTotal: 907564 kBMemFree: 24544 kBBuffers: 231808 kBCached: 347912 kBSwapCached: 0 kB
% /sbin/sysctl net.ipv4.ip_default_ttlnet.ipv4.ip_default_ttl = 64% /sbin/sysctl -w net.ipv4.ip_default_ttl=65net.ipv4.ip_default_ttl = 65% /sbin/sysctl –w net.ipv4.tcp_ecn=1net.ipv4.tcp_ecn = 1
©2003–2
004 D
avid
Byers
ProcesserAnvändare
GrupperRättigheter
©2003–2
004 D
avid
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–2
004 D
avid
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 1 0 31 319 ? init
S root 255 1 30 388 ? gpm
S root 260 1 30 324 ? inetd
S root 277 1 30 0 ? nfsd
S root 280 277 30 0 ? lockd
S root 281 280 30 0 ? rpciod
S root 820 1 30 700 ? sshd
S root 20484 820 30 1399 ? sshd
S davby 20487 20484 30 1413 ? sshd
S davby 20491 20487 30 661 pts/1 zsh
R davby 20829 20491 22 842 pts/1 ps
S StatusPID Process-IDPPID FörälderPRI PrioritetSZ StorlekTT TerminalCMD Kommando
©2003–2
004 D
avid
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–2
004 D
avid
Byers
Användare och processer% ps -H -eo ruser,user,cmd
PID RUSER USER COMMAND
20484 root root /usr/sbin/sshd
20487 davby davby /usr/sbin/sshd
20491 davby davby -zsh
21035 davby root passwd
21038 davby davby ps -H -eo pid,ruser,user,cmd
sshd ändrade real UID till davby
passwd är setuid root ochändrar effective UID; gördet möjligt att ändra filersom davby inte har rättatt ändra (tex /etc/passwd)
©2003–2
004 D
avid
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–2
004 D
avid
Byers
Rättigheter% cd /dev; ls -l audio fd0 ttyp1
crw-rw---- 1 root audio 14, 4 Jun 16 2001 audio
brw-rw---- 1 root floppy 2, 0 Jul 30 2001 fd0
crw-rw---- 1 root tty 3, 1 Jun 16 2001 ttyp1
% cd /usr/bin; ls -l passwd wall
-rwsr-xr-x 1 root root 24680 Apr 7 17:59 passwd
-rwxr-sr-x 1 root tty 9112 Jan 27 2002 wall
wall kör alltid med EGID (effective group ID) tty passwd kör alltid med EUID (effective user ID) root
ownergroup
©2003–2
004 D
avid
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–2
004 D
avid
Byers
Användare
User name Användarnamnet Password Krypterat lösenord User ID (uid) Användarens identitet Group ID (gid) Användarens primära grupp Full name (gecos) Godtycklig information Home directory Arbetskatalog för login shell Login shell Program som startas när
användaren loggar in
root:x:0:0:root:/root:/usr/bin/zshdaemon:x:1:1:daemon:/usr/sbin:/bin/sh
root:x:0:0:root:/root:/usr/bin/zshdaemon:x:1:1:daemon:/usr/sbin:/bin/sh
Utdrag ut /etc/passwd
©2003–2
004 D
avid
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–2
004 D
avid
Byers
Grupper
Group name Gruppens namn Password Krypterat lösenord för
gruppen Group ID (gid) Gruppens ID Members Lista av användare som
har denna grupp som sekundär grupp
backup:x:34:taper,janpeoperator:x:37:davby,calcu,root
backup:x:34:taper,janpeoperator:x:37:davby,calcu,root
Utdrag ut /etc/group
©2003–2
004 D
avid
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 ldapgroup: files ldapshadow: files ldap
hosts: files dnsnetworks: files
protocols: db filesservices: db filesethers: db filesrpc: db files
netgroup: nis
passwd: files ldapgroup: files ldapshadow: files ldap
hosts: files dnsnetworks: files
protocols: db filesservices: db filesethers: db filesrpc: db files
netgroup: nis
Exempel
©2003–2
004 D
avid
Byers
Kommandotolken
©2003–2
004 D
avid
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–2
004 D
avid
Byers
Kommandotolkens funktioner
Användardialogen Köra kommandon Dirigera om in/utdata Expansion av filnamn Inbyggda kommandon Hantering av
omgivningsvariabler
©2003–2
004 D
avid
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–2
004 D
avid
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–2
004 D
avid
Byers
Loggning
©2003–2
004 D
avid
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.log auth.log.0 auth.log.1.gzdaemon.log daemon.log.0 daemon.log.1.gz dmesgkern.log kern.log.0 kern.log.1.gz lastlogmail.err mail.err.0 mail.err.1.gz mail.infomail.info.0 mail.log mail.log.0 mail.log.1.gzmail.warn mail.warn.0 mail.warn.1.gz messagesmessages.0 syslog syslog.0 syslog.1.gzwtmp
apache/ auth.log auth.log.0 auth.log.1.gzdaemon.log daemon.log.0 daemon.log.1.gz dmesgkern.log kern.log.0 kern.log.1.gz lastlogmail.err mail.err.0 mail.err.1.gz mail.infomail.info.0 mail.log mail.log.0 mail.log.1.gzmail.warn mail.warn.0 mail.warn.1.gz messagesmessages.0 syslog syslog.0 syslog.1.gzwtmp
Innehåll i /var/log
©2003–2
004 D
avid
Byers
Loggning
Loggning görs genom syslogd Konfigureras i /etc/syslogd.conf Möjlighet att logga till en annan dator
Viktiga loggfiler syslog Huvudlogfil auth.log Inloggningar och utloggningar daemon.log Meddelanden från daemoner debug.log Debugmeddelanden
©2003–2
004 D
avid
Byers
Loggexempel/var/log/syslogAug 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=<root>
/var/log/auth.logAug 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=davbyAug 17 16:22:30 sysinst-gw sshd[15370]: error: PAM: Authentication failure for davby from
obel19.ida.liu.seAug 17 16:22:38 sysinst-gw su[15374]: + pts/12 davby:rootAug 17 16:22:38 sysinst-gw su[15374]: (pam_unix) session opened for user root by
davby(uid=1150)
©2003–2
004 D
avid
Byers
Loggexempel/var/log/mail.logAug 17 16:23:28 sysinst-gw postfix/pickup[15367]: BEDD31F36C: uid=0 from=<root>Aug 17 16:23:28 sysinst-gw postfix/cleanup[15384]: BEDD31F36C: message-id=<20060817142328.BEDD31F36C@sysinst-
gw.sysinst.ida.liu.se>Aug 17 16:23:28 sysinst-gw postfix/qmgr[2282]: BEDD31F36C: from=<[email protected]>, 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=<[email protected]>, relay=ida.liu.se[130.236.177.25],
delay=4, status=bounced (host ida.liu.se[130.236.177.25] said: 553 5.1.8 <[email protected]>... Domain of sender address [email protected] does not exist (in reply to RCPT TO command))
Aug 17 16:23:32 sysinst-gw postfix/cleanup[15384]: 11C321F36D: message-id=<[email protected]>
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: removedAug 17 16:23:32 sysinst-gw postfix/cleanup[15384]: 1B1831F2BE: message-id=<20060817142332.11C321F36D@sysinst-
gw.sysinst.ida.liu.se>Aug 17 16:23:32 sysinst-gw postfix/local[15388]: 11C321F36D: to=<[email protected]>, 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: removedAug 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=<[email protected]>, orig_to=<root@sysinst-
gw.sysinst.ida.liu.se>, relay=ida.liu.se[130.236.177.25], delay=3, status=sent (250 2.0.0 k7HENZ7o021810 Message accepted for delivery)
Aug 17 16:23:35 sysinst-gw postfix/qmgr[2282]: 1B1831F2BE: removed
©2003–2
004 D
avid
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–2
004 D
avid
Byers
©2003–2
004 D
avid
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.