Chapter 3 Study Guide
CNT-2311-Chapter 3
Exploring Linux Filesystems
Objectives
- Comparison of Windows and Linux filesystems
- Navigate the directory structure using relative and absolute pathnames
- Types of files
- View filenames and file types
- Use shell wildcards
- Display contents of files
- Search files for regular expressions using grep
- Use vi to modify text files
- Alternatives to vi
- File Hierarchy
Comparison of Windows v. Linux filesystems
Navigate the directory structure using relative and absolute pathnames
start in home dir
use ~ to reference home directories
present dir = pwd
/home/randy/
change dir = cd
cd /etc - change directory to /etc
relative path name = path to the file in relation to the current working directory
".." references the next higher up dir
tab-completion!
Supported File Systems
Linux supports numerous file system types Ext2: This is like UNIX file system. It has the concepts of blocks, inodes and directories. Ext3: It is ext2 filesystem enhanced with journaling capabilities. Journaling allows fast file system recovery. Supports POSIX ACL (Access Control Lists). Isofs (iso9660): Used by CDROM file system. Sysfs: It is a ram-based filesystem initially based on ramfs. It is use to exporting kernel objects so that end user can use it easily. Procfs: The proc file system acts as an interface to internal data structures in the kernel. It can be used to obtain information about the system and to change certain kernel parameters at runtime using sysctl command. For example you can find out cpuinfo with following command:
Hierarchical File system
Often referred to as the "FHS" At the very top or the beginning is your / (forward slash) which represents your root directory. 1. / – Root Every single file and directory starts from the root directory. Only root user has write privilege under this directory. Please note that /root is root user’s home directory, which is not same as /.
2. /bin – User Binaries Contains binary executables. Common linux commands you need to use in single-user modes are located under this directory. Commands used by all the users of the system are located here. For example: ps, ls, ping, grep, cp.
3. /sbin – System Binaries Just like /bin, /sbin also contains binary executables. But, the linux commands located under this directory are used typically by system aministrator, for system maintenance purpose. For example: iptables, reboot, fdisk, ifconfig, swapon
4. /etc – Configuration Files Contains configuration files required by all programs. This also contains startup and shutdown shell scripts used to start/stop individual programs. For example: /etc/resolv.conf, /etc/logrotate.conf
5. /dev – Device Files Contains device files. These include terminal devices, usb, or any device attached to the system. For example: /dev/tty1, /dev/usbmon0
6. /proc – Process Information Contains information about system process. This is a pseudo filesystem contains information about running process. For example: /proc/{pid} directory contains information about the process with that particular pid. This is a virtual filesystem with text information about system resources. For example: /proc/uptime
7. /var – Variable Files var stands for variable files. Content of the files that are expected to grow can be found under this directory. This includes — system log files (/var/log); packages and database files (/var/lib); emails (/var/mail); print queues (/var/spool); lock files (/var/lock); temp files needed across reboots (/var/tmp);
8. /tmp – Temporary Files Directory that contains temporary files created by system and users. Files under this directory are deleted when system is rebooted.
9. /usr – User Programs Contains binaries, libraries, documentation, and source-code for second level programs. /usr/bin contains binary files for user programs. If you can’t find a user binary under /bin, look under /usr/bin. For example: at, awk, cc, less, scp /usr/sbin contains binary files for system administrators. If you can’t find a system binary under /sbin, look under /usr/sbin. For example: atd, cron, sshd, useradd, userdel /usr/lib contains libraries for /usr/bin and /usr/sbin /usr/local contains users programs that you install from source. For example, when you install apache from source, it goes under /usr/local/apache2 10. /home – Home Directories
Home directories for all users to store their personal files. For example: /home/john, /home/nikita
11. /boot – Boot Loader Files Contains boot loader related files. Kernel initrd, vmlinux, grub files are located under /boot For example: initrd.img-2.6.32-24-generic, vmlinuz-2.6.32-24-generic
12. /lib – System Libraries Contains library files that supports the binaries located under /bin and /sbin Library filenames are either ld* or lib*.so.* For example: ld-2.11.1.so, libncurses.so.5.7
13. /opt – Optional add-on Applications opt stands for optional. Contains add-on applications from individual vendors. add-on applications should be installed under either /opt/ or /opt/ sub-directory.
14. /mnt – Mount Directory Temporary mount directory where sysadmins can mount filesystems.
15. /media – Removable Media Devices
Temporary mount directory for removable devices. For examples, /media/cdrom for CD-ROM; /media/floppy for floppy drives; /media/cdrecorder for CD writer
16. /srv – Service Data srv stands for service. Contains server specific services related data.
Types of files
Text, Binary, Executable
Directory = still just a file
Linked = reference other files, shortcut
Special device files = reference hard disks or ports, contained in /dev
Named pipes = communication between process in memory
Created using mkfifo or mknod One process is a reader other is a writer Sockets = named pipes between remote computers Filenames Filename facts 255 max characters alphanumeric, _ - . may or may not have extension to denote type Lots of different extensions
Links
- http://learn.clemsonlinux.org/wiki/File_extensions
- http://www.debianhelp.co.uk/fileext.htm
- http://filext.com/alphalist.php?extstart=%5EL (not limited to linux)
Commands to view filenames and file types
pwd - Show current directory
pwd - /home/randy
ls -ltr - Show listing and give color codes to information
listing including file permissions, ownership and date/time stamp.
Executable files: Green
Normal file : Normal
Directory: Blue
Symbolic link : Cyan
Pipe: Yellow
Socket: Magenta
Block device driver: Bold yellow foreground, with black background
Character device driver: Bold yellow foreground, with black background
Orphaned syminks : Blinking Bold white with red background
Missing links ( - and the files they point to) : Blinking Bold white with red background
Archives or compressed : Red (.tar, .gz, .zip, .rpm
Image files : Magenta (.jpg, gif, bmp, png, tif)
View filenames and file types
- ls -F = gives file type, special character is listed on the left of the name = Metacharacters=
- @ = linked file
- = exe
- / = subdirectory
- = is a socket
- | = named pipe
Other files do not have special character appended to them - they can be anything not listed above
- ls -l = ls long listing
When listing files/directories a special character on the left indicates what type of file it is
- d = dir
- L = linked
- b & c = special device files
- n = named pipe
- s = socket
- - = other - txt, bin
Display contents of files
- vi - editing a file
- emas - alternative to vi
- cat - concatenation - similar to "type" in DOS/Windows.
- tac - reverse concatenation - types file in reverse
- head - displays the top ten lines of a file
- tail - displays the bottom ten lines of a file
- more - displays file page by page
- less - similar to more but allow line by line manipulation
Key Terms
The tab completion feature is something your really going to like, it makes life much easier for you, rather than typing every single command you type the first character or two and hit the tab key and it finishes it for you.
- ~ metacharacter = represent user's home dir
- Absolute pathname - full path to a file or starting from /
- Binary data file - contains machine language (1 or 0)
- cat - display file contents
- cd - change directory
- Command mode - vi mode for text editing
- Concatenation - joining of text
- egrep = grep -E
- emacas = ediotr macros editor, think of as word pad
- fgrep = grep -F
- Gedit = GUI text editor
- Head - displays first 10 lines, can specify # of lines
- Insert mode - vi mode only allows text into file, no other options
- less command - display file pg. by pg. cursor navigation
- Linked file - file that represents another file
- ll command = ls -l
- more command = displays file pg. by pg. & line by line
- Named pipe file - temp connection that sends info from 1 cmd or process in memory to another, *can represent a file
- Nano editor - terminal text editor, uses ctrl keys for functions and navigation
- od command - displays file contents in octal format
- Parent dir - one dir level up
- Regular expressions - special metacharacters
- Relative pathname - path to a folder relative to the pwd
- Socket file = named pipe between 2 computers
- Special device file - files to identify hardware
- Strings command - search & display text in a bin file
- Tab-completion - press tab to complete path in the shell
- tac command = cat backwards
- Tail cmd = display last 10 lines
- Text tools = program to create, modify, & search txt files
- Wildcard metacharacters = used to match certain characters
Key Commands
We have some of the key commands listed alphabetically here but the cat command is much like the tac command where cat is used to display the entire contents of a text file the tac command begins with the last line of a file and ends with the the first line of the file. (Just like the word cat backwards is tac) The " global regular expression print" or grep command searches files for patterns of characters using regular expressions. The egrep & fgrep are other variants of grep that we will talk about later. The print working directory is a useful command to see where you are in a current directory in the tree. And ls command is another useful used for listing files in a given directory.
- cat
- cd (change directory)
- egrep
- grep
- file
- grep
- head
- less
- ls
- more
- pwd (print working directory)
- strings
- tac
- tail
Regular Expressions
Search files for regular expressions using grep
- grep allows you to search through a file for text argument.
*grep "localhost" /etc/hosts return lines that include localhost in the file /etc/hosts
- grep -v "localhost" /etc/hosts
return lines that DONT include localhost in the file /etc/hosts
- grep -l "LOCALHOST" /etc/hosts
return lines that include localhost in the file /etc/hosts that is not case-sensitive
Commands to Display Contents of Binary Files
- strings = searching binary file for text
- od = displays file in octal format
- od -x = displays contents in hex
Searching for Text within Files
Tools: grep, awk, sed, vi, emacs, ex, ed, C++, PERL, tcl
Regular expressions
Wildcard metacharacters are interpreted by the shell
Regular expressions are interpreted by text tool program
Wildcard metacharacters match characters in file & dir names
Regular expressions match charters within file
Wildcard metacharacters typically have different definitions than regular expressions
metacharacters
There are more regular expression metacharacters than wildcard metacharacters
===Emacs=== Not installed by default in Fedora 13.
Can run in a GUI environment.
More GUI than vi.
Written in C and Emacs Lisp.
Licensed GNU GPL
Users can combine commands into macros to automate task.
Summary
- Linux file system is a hierarchy, series of directories
paths are absolute or relative
- Many types of files - text, scripts, executable, dirs, linked, special device
- ls - view file names and many options to modify view
- Wildcard metacharacters help to select multiple files
- Regular expression metacharacters are used in many ways.
- Text files can be viewed differently with commands such as, head, tail, cat, tac, more and less.
- vi is the most common text editor however GUI options exits
References
- Anatomy of the Linux File System
http://www.ibm.com/developerworks/linux/library/l-linux-filesystem/
- File extensions
http://learn.clemsonlinux.org/wiki/File_extensions
http://www.debianhelp.co.uk/fileext.htm
- Linux/Unix/BSD Post-Exploitation Command List
https://docs.google.com/document/d/1ObQB6hmVvRPCgPTRZM5NMH034VDM-1N-EWPRz2770K4/edit?hl=en_US
- vi tutorial
http://www.unix-manuals.com/tutorials/vi/vi-in-10-1.html
- VI Cheatsheet
http://www.atmos.albany.edu/deas/atmclasses/atm350/vi_cheat_sheet.pdf
- Learning the vi and Vim Editors
- Command Guides
http://wiki.ihcnt.net/w/Linux_command_guide
http://wiki.ihcnt.net/w/Linux-command-list
- Emac Guide
http://sean.wenzel.net/docs/emacs/quick_reference/
- 15 Practical examples of ls commands
http://www.thegeekstuff.com/2009/07/linux-ls-command-examples/
- 50 Most Frequently Used UNIX / Linux Commands http://www.thegeekstuff.com/2010/11/50-linux-commands/