310 likes | 457 Views
Chapter 5 The Filesystem. Outline. File System Architecture Pathname File Tree Mounting File Types inode and file Link File Access Mode Changing File Owner FreeBSD bonus flags. File System Architecture (1). Application Kernel Hardware
E N D
Outline • File System Architecture • Pathname • File Tree • Mounting • File Types • inode and file • Link • File Access Mode • Changing File Owner • FreeBSD bonus flags
File System Architecture (1) • Application Kernel Hardware • Applications call system-calls to request service • Kernel invokes corresponding drivers to fulfill this service
File System Architecture (2) • The basic purpose of filesystem • Represent and organize the system’s storage • Four main components: • Namespace • A way of naming things and arranging them in a hierarchy • API • A set of system calls for navigating and manipulating nodes • Security model • A scheme for protecting, hiding and sharing things • Implementation • Code that ties the logical model to an actual disk
File System Architecture (3) • Objects in the filesystem: • What you can find in a filesystem: • Files and directories • Hardware device files • Processes information • Interprocess communication channel • Shared memory segments • We can use common filesystem interface to access such “object” • open、read、write、close、seek、ioctl…
pathname • Two kinds of path • Absolute path start from / • Such as /u/gcp/92/9217810/test/hehe.c • Relative path start from your current directory • Such as test/hehe.c • Constrains of pathname • Single component: ≦ 255 characters • Single absolute path: ≦ 1023 characters
File Tree (2) • standard directories and their contents
Mounting file system (1) • The filesystem in composed of chunks • Most are disk partitions • Network file servers • Memory disk emulators • Kernel components • Etc,… • “mount” command • Map the mount point of the existing file tree to the root of the newly attached filesystem • % mount /dev/ad2s1e /home2 • The previous contents of the mount point become inaccessible
Mounting file system (2) • Example
Mounting file system (3) • Filesystem table – fstab • Automatically mounted at boot time • /etc/fstab • Filesystem in this file will be checked and mounted automatically at boot time Ex. bsd1’s /etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b none swap sw 0 0 /dev/ad0s1a / ufs rw 1 1 /dev/ad0s1e /backup ufs rw 2 2 /dev/ad0s1d /home ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 csduty:/bsdhome /bsdhome nfs rw,noauto 0 0
Mounting file system (4) • Unmounting File Stsyem • “umount” command • % umount node | device • Ex: umount /home, umount /dev/ad0s1e • Busy filesystem • Someone’s current directory is there or there is opened file • Use “umount –f” • We can use “lsof” or “fstat” like utilities to figure out who makes it busy
Mounting file system (5) • lsof, fuser and fstat commands • lsof (/usr/ports/sysutils/lsof) –list open files • fuser (/usr/ports/sysutils/fuser) –list IDs of all processes that have one or more files open • fstat (FreeBSD) % lsof /home/chwong COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME lsof 27097 root cwd VDIR 0,75 512 730114 /home/chwong lsof 27098 root cwd VDIR 0,75 512 730114 /home/chwong tcsh 44998 chwong cwd VDIR 0,75 512 730114 /home/chwong sh 55546 mysql cwd VDIR 0,75 512 730114 /home/chwong tcsh 99025 chwong cwd VDIR 0,75 512 730114 /home/chwong % fuser /home/chwong /home/chwong: 55546c 44998c 99025c 27169c % fstat /home/chwong USER CMD PID FD MOUNT INUM MODE SZ|DV R/W NAME chwong fstat 27101 wd / 730114 drwxr-xr-x 512 r /home/chwong chwong tcsh 99025 wd / 730114 drwxr-xr-x 512 r /home/chwong chwong tcsh 44998 wd / 730114 drwxr-xr-x 512 r /home/chwong mysql sh 55546 wd / 730114 drwxr-xr-x 512 r /home/chwong
File Types (1) • File types • Regular files • Directories • Include “.” and “..” • Character and Block device files • UNIX domain sockets • Named pipes • Symbolic links
drivers major capabilities 1 2 … Major =5 Minor = 0 5 open,read,write,… … File Types (2) • character and block device files • Use “mknod” to build special file • % mknod name [c|b] major minor • The same major number will use the same driver
File Types (3) • UNIX domain socket • Created by socket() • Local to a particular host • Be referenced through a filesystem object rather than a network port
File Types (4) • Named Pipes • Let two processes do “FIFO” communication
File Types (5) • Symbolic Link • A file which points to another pathname • % ln –s ori-file soft-file • Like “short-cut” in Windows
File Types (6) • File type encoding used by ls chwong@chbsd:/var/run> ls -al total 36 drwxr-xr-x 6 root wheel 512 Oct 2 23:32 . drwxr-xr-x 22 root wheel 512 Oct 1 05:00 .. srw-rw-rw- 1 root wheel 0 Sep 30 21:00 log
inode and file (1) • inode • A structure that records information of a file • You can use “ls –il” to see each file’s inode number
inode and file (2) • Filesystem • Boot blocks • Super block • Inode list • Data block
inode and file (3) • More detail of inode and data block
testdir chwong /home/chwong/testdir inode and file (4) • Example • . • .. • testdir
Hard Link V.S. Symbolic Link (1) • Link • Hard link • associate two or more filenames with the same inode • % ln ori-file hard-file • Soft (symbolic) link • A file which points to another pathname • % ln –s ori-file soft-file
Hard Link V.S. Symbolic Link (2) % touch index % ln index hlink % ln –s index slink
File Access Mode (1) • rwxr-xr-x • User, group, other privileges • chmod command • % chmodaccess-stringfile • % chmod u+x test.sh • % chmod go-w .tcshrc • % chmod u+w,r-w hehe haha • % chmod –R 755 public_html/
File Access Mode (2) • setuid, setgid, sticky bit • setuid, setgid on file • The effective uid/gid of resulting process will be set to the UID/GID of the file • setuid • passwd, chsh, crontab • setgid • top, fstat, write • setgid on directory • Cause newly created files within the directory to be the same group as directory • sticky on directory • Do not allow to delete or rename a file unless you are • The owner of the file • The owner of the directory • root
File Access Mode (3) • Decimal argument of chmod • setuid: 4000 • setgid: 2000 • stiky : 1000
File Access Mode (4) • Assign default permissions: umask • Shell built-in command • Inference the default permissions given to the files newly created. • The newly created file permission: • Use full permission bit (file: 666, dir: 777)xorumask value. • Example:
Changing File Owner • Changing File Owner • Commands: • chown -- change user owner • chgrp -- change group owner • Change the file ownership and group ownership • % chown –R chwong /home/chwong • % chgrp –R cs /home/chwong • % chown –R chown:cs /home/chwong
FreeBSD bonus flags • chflags command • schg system immutable flag (root only) • sunlnk system undeletable flag (root only) • sappnd system append-only flag (root only) • uappend user append-only flag (root, user) • uunlnk user undeletable flag (root, user) • … chbsd [/home/chwong/test] -chwong- touch file chbsd [/home/chwong/test] -chwong- ls -lo -rw-r--r-- 1 chwong user - 0 Oct 3 18:23 file chbsd [/home/chwong/test] -chwong- chflags uunlnk file chbsd [/home/chwong/test] -chwong- ls -lo -rw-r--r-- 1 chwong user uunlnk 0 Oct 3 18:23 file chbsd [/home/chwong/test] -chwong- rm -f file rm: file: Operation not permitted chbsd [/home/chwong/test] -chwong- sudo rm -f file rm: file: Operation not permitted chbsd [/home/chwong/test] -chwong- chflags nouunlnk file chbsd [/home/chwong/test] -chwong- rm -f file chbsd [/home/chwong/test] -chwong-