Table of Contents
I. introduction to Linux ................................................................................................................................... 1
1. Linux history .................................................................................................................................... 3
1.1. 1969 ....................................................................................................................................... 4
1.2. 1980s ...................................................................................................................................... 4
1.3. 1990s ...................................................................................................................................... 4
1.4. 2015 ....................................................................................................................................... 5
2. distributions ...................................................................................................................................... 6
2.1. Red Hat .................................................................................................................................. 7
2.2. Ubuntu ................................................................................................................................... 7
2.3. Debian .................................................................................................................................... 7
2.4. Other ...................................................................................................................................... 7
2.5. Which to choose ? ................................................................................................................. 8
3. licensing ............................................................................................................................................. 9
3.1. about software licenses ....................................................................................................... 10
3.2. public domain software and freeware ................................................................................. 10
3.3. Free Software or Open Source Software ............................................................................ 10
3.4. GNU General Public License .............................................................................................. 11
3.5. using GPLv3 software ......................................................................................................... 11
3.6. BSD license ......................................................................................................................... 12
3.7. other licenses ....................................................................................................................... 12
3.8. combination of software licenses ........................................................................................ 12
II. installing Linux ......................................................................................................................................... 13
4. installing Debian 8 ......................................................................................................................... 15
4.1. Debian .................................................................................................................................. 16
4.2. Downloading ........................................................................................................................ 16
4.3. virtualbox networking ......................................................................................................... 32
4.4. setting the hostname ............................................................................................................ 34
4.5. adding a static ip address .................................................................................................... 34
4.6. Debian package management .............................................................................................. 35
5. installing CentOS 7 ........................................................................................................................ 36
5.1. download a CentOS 7 image .............................................................................................. 37
5.2. Virtualbox ............................................................................................................................ 39
5.3. CentOS 7 installing ............................................................................................................. 44
5.4. CentOS 7 first logon ........................................................................................................... 52
5.5. Virtualbox network interface .............................................................................................. 53
5.6. configuring the network ...................................................................................................... 54
5.7. adding one static ip address ................................................................................................ 54
5.8. package management ........................................................................................................... 55
5.9. logon from Linux and MacOSX ......................................................................................... 56
5.10. logon from MS Windows ................................................................................................. 56
6. getting Linux at home ................................................................................................................... 58
6.1. download a Linux CD image .............................................................................................. 59
6.2. download Virtualbox ........................................................................................................... 59
6.3. create a virtual machine ...................................................................................................... 60
6.4. attach the CD image ............................................................................................................ 65
6.5. install Linux ......................................................................................................................... 68
III. first steps on the command line .............................................................................................................. 69
7. man pages ....................................................................................................................................... 71
7.1. man $command ................................................................................................................... 72
7.2. man $configfile .................................................................................................................... 72
7.3. man $daemon ...................................................................................................................... 72
7.4. man -k (apropos) ................................................................................................................. 72
7.5. whatis ................................................................................................................................... 72
7.6. whereis ................................................................................................................................. 72
7.7. man sections ........................................................................................................................ 73
iii
Baroda Institute Of Technology
Linux Fundamentals
7.8. man $section $file ............................................................................................................... 73
7.9. man man .............................................................................................................................. 73
7.10. mandb ................................................................................................................................ 73
8. working with directories ............................................................................................................... 74
8.1. pwd ...................................................................................................................................... 75
8.2. cd .......................................................................................................................................... 75
8.3. absolute and relative paths .................................................................................................. 76
8.4. path completion ................................................................................................................... 77
8.5. ls ........................................................................................................................................... 77
8.6. mkdir .................................................................................................................................... 79
8.7. rmdir .................................................................................................................................... 79
8.8. practice: working with directories ....................................................................................... 81
8.9. solution: working with directories ...................................................................................... 82
9. working with files ........................................................................................................................... 84
9.1. all files are case sensitive ................................................................................................... 85
9.2. everything is a file .............................................................................................................. 85
9.3. file ........................................................................................................................................ 85
9.4. touch .................................................................................................................................... 86
9.5. rm ......................................................................................................................................... 87
9.6. cp .......................................................................................................................................... 88
9.7. mv ........................................................................................................................................ 89
9.8. rename .................................................................................................................................. 90
9.9. practice: working with files ................................................................................................ 91
9.10. solution: working with files .............................................................................................. 92
10. working with file contents ........................................................................................................... 94
10.1. head .................................................................................................................................... 95
10.2. tail ...................................................................................................................................... 95
10.3. cat ....................................................................................................................................... 96
10.4. tac ....................................................................................................................................... 97
10.5. more and less ..................................................................................................................... 98
10.6. strings ................................................................................................................................. 98
10.7. practice: file contents ........................................................................................................ 99
10.8. solution: file contents ...................................................................................................... 100
11. the Linux file tree ...................................................................................................................... 101
11.1. filesystem hierarchy standard .......................................................................................... 102
11.2. man hier ........................................................................................................................... 102
11.3. the root directory / ........................................................................................................... 102
11.4. binary directories ............................................................................................................. 103
11.5. configuration directories .................................................................................................. 105
11.6. data directories ................................................................................................................ 107
11.7. in memory directories ..................................................................................................... 109
11.8. /usr Unix System Resources ............................................................................................ 114
11.9. /var variable data ............................................................................................................. 116
11.10. practice: file system tree ............................................................................................... 118
11.11. solution: file system tree ............................................................................................... 120
IV. shell expansion ...................................................................................................................................... 122
12. commands and arguments ........................................................................................................ 125
12.1. arguments ......................................................................................................................... 126
12.2. white space removal ........................................................................................................ 126
12.3. single quotes .................................................................................................................... 127
12.4. double quotes ................................................................................................................... 127
12.5. echo and quotes ............................................................................................................... 127
12.6. commands ........................................................................................................................ 128
12.7. aliases ............................................................................................................................... 129
12.8. displaying shell expansion .............................................................................................. 130
12.9. practice: commands and arguments ................................................................................ 131
12.10. solution: commands and arguments .............................................................................. 133
13. control operators ........................................................................................................................ 135
iv
Baroda Institute Of Technology
Linux Fundamentals
13.1. ; semicolon ....................................................................................................................... 136
13.2. & ampersand .................................................................................................................... 136
13.3. $? dollar question mark ................................................................................................... 136
13.4. && double ampersand .................................................................................................... 137
13.5. || double vertical bar ........................................................................................................ 137
13.6. combining && and || ....................................................................................................... 137
13.7. # pound sign .................................................................................................................... 138
13.8. \ escaping special characters ........................................................................................... 138
13.9. practice: control operators ............................................................................................... 139
13.10. solution: control operators ............................................................................................. 140
14. shell variables ............................................................................................................................. 141
14.1. $ dollar sign ..................................................................................................................... 142
14.2. case sensitive ................................................................................................................... 142
14.3. creating variables ............................................................................................................. 142
14.4. quotes ............................................................................................................................... 143
14.5. set ..................................................................................................................................... 143
14.6. unset ................................................................................................................................. 143
14.7. $PS1 ................................................................................................................................. 144
14.8. $PATH ............................................................................................................................. 145
14.9. env .................................................................................................................................... 146
14.10. export ............................................................................................................................. 146
14.11. delineate variables ......................................................................................................... 147
14.12. unbound variables .......................................................................................................... 147
14.13. practice: shell variables ................................................................................................. 148
14.14. solution: shell variables ................................................................................................. 149
15. shell embedding and options ..................................................................................................... 150
15.1. shell embedding ............................................................................................................... 151
15.2. shell options ..................................................................................................................... 152
15.3. practice: shell embedding ................................................................................................ 153
15.4. solution: shell embedding ................................................................................................ 154
16. shell history ................................................................................................................................. 155
16.1. repeating the last command ............................................................................................ 156
16.2. repeating other commands .............................................................................................. 156
16.3. history .............................................................................................................................. 156
16.4. !n ...................................................................................................................................... 156
16.5. Ctrl-r ................................................................................................................................ 157
16.6. $HISTSIZE ...................................................................................................................... 157
16.7. $HISTFILE ...................................................................................................................... 157
16.8. $HISTFILESIZE .............................................................................................................. 157
16.9. prevent recording a command ......................................................................................... 158
16.10. (optional)regular expressions ........................................................................................ 158
16.11. (optional) Korn shell history ......................................................................................... 158
16.12. practice: shell history .................................................................................................... 159
16.13. solution: shell history .................................................................................................... 160
17. file globbing ................................................................................................................................ 161
17.1. * asterisk .......................................................................................................................... 162
17.2. ? question mark ............................................................................................................... 162
17.3. [] square brackets ............................................................................................................ 163
17.4. a-z and 0-9 ranges ........................................................................................................... 164
17.5. $LANG and square brackets ........................................................................................... 164
17.6. preventing file globbing .................................................................................................. 165
17.7. practice: shell globbing ................................................................................................... 166
17.8. solution: shell globbing ................................................................................................... 167
V. pipes and commands .............................................................................................................................. 169
18. I/O redirection ............................................................................................................................ 171
18.1. stdin, stdout, and stderr ................................................................................................... 172
18.2. output redirection ............................................................................................................. 173
18.3. error redirection ............................................................................................................... 175
Baroda Institute Of Technology
Linux Fundamentals
18.4. output redirection and pipes ............................................................................................ 176
18.5. joining stdout and stderr ................................................................................................. 176
18.6. input redirection ............................................................................................................... 177
18.7. confusing redirection ....................................................................................................... 178
18.8. quick file clear ................................................................................................................. 178
18.9. practice: input/output redirection .................................................................................... 179
18.10. solution: input/output redirection .................................................................................. 180
19. filters ............................................................................................................................................ 181
19.1. cat ..................................................................................................................................... 182
19.2. tee ..................................................................................................................................... 182
19.3. grep .................................................................................................................................. 182
19.4. cut .................................................................................................................................... 184
19.5. tr ....................................................................................................................................... 184
19.6. wc ..................................................................................................................................... 185
19.7. sort ................................................................................................................................... 186
19.8. uniq .................................................................................................................................. 187
19.9. comm ............................................................................................................................... 188
19.10. od ................................................................................................................................... 189
19.11. sed .................................................................................................................................. 190
19.12. pipe examples ................................................................................................................ 191
19.13. practice: filters ............................................................................................................... 192
19.14. solution: filters ............................................................................................................... 193
20. basic Unix tools .......................................................................................................................... 195
20.1. find ................................................................................................................................... 196
20.2. locate ................................................................................................................................ 197
20.3. date ................................................................................................................................... 197
20.4. cal ..................................................................................................................................... 198
20.5. sleep ................................................................................................................................. 198
20.6. time .................................................................................................................................. 199
20.7. gzip - gunzip .................................................................................................................... 200
20.8. zcat - zmore ..................................................................................................................... 200
20.9. bzip2 - bunzip2 ................................................................................................................ 201
20.10. bzcat - bzmore ............................................................................................................... 201
20.11. practice: basic Unix tools .............................................................................................. 202
20.12. solution: basic Unix tools .............................................................................................. 203
21. regular expressions .................................................................................................................... 205
21.1. regex versions .................................................................................................................. 206
21.2. grep .................................................................................................................................. 207
21.3. rename .............................................................................................................................. 212
21.4. sed .................................................................................................................................... 215
21.5. bash history ...................................................................................................................... 219
VI. vi ............................................................................................................................................................ 220
22. Introduction to vi ....................................................................................................................... 222
22.1. command mode and insert mode .................................................................................... 223
22.2. start typing (a A i I o O) ................................................................................................ 223
22.3. replace and delete a character (r x X) ............................................................................. 224
22.4. undo and repeat (u .) ....................................................................................................... 224
22.5. cut, copy and paste a line (dd yy p P) ............................................................................ 224
22.6. cut, copy and paste lines (3dd 2yy) ................................................................................ 225
22.7. start and end of a line (0 or ^ and $) .............................................................................. 225
22.8. join two lines (J) and more ............................................................................................. 225
22.9. words (w b) ..................................................................................................................... 226
22.10. save (or not) and exit (:w :q :q! ) .................................................................................. 226
22.11. Searching (/ ?) ................................................................................................................ 226
22.12. replace all ( :1,$ s/foo/bar/g ) ........................................................................................ 227
22.13. reading files (:r :r !cmd) ................................................................................................ 227
22.14. text buffers ..................................................................................................................... 227
22.15. multiple files .................................................................................................................. 227
vi
Baroda Institute Of Technology
Linux Fundamentals
22.16. abbreviations .................................................................................................................. 228
22.17. key mappings ................................................................................................................. 229
22.18. setting options ................................................................................................................ 229
22.19. practice: vi(m) ............................................................................................................... 230
22.20. solution: vi(m) ............................................................................................................... 231
VII. scripting ................................................................................................................................................ 232
23. scripting introduction ................................................................................................................ 234
23.1. prerequisites ..................................................................................................................... 235
23.2. hello world ....................................................................................................................... 235
23.3. she-bang ........................................................................................................................... 235
23.4. comment ........................................................................................................................... 236
23.5. variables ........................................................................................................................... 236
23.6. sourcing a script .............................................................................................................. 236
23.7. troubleshooting a script ................................................................................................... 237
23.8. prevent setuid root spoofing ............................................................................................ 237
23.9. practice: introduction to scripting ................................................................................... 238
23.10. solution: introduction to scripting ................................................................................. 239
24. scripting loops ............................................................................................................................. 240
24.1. test [ ] ............................................................................................................................... 241
24.2. if then else ....................................................................................................................... 242
24.3. if then elif ........................................................................................................................ 242
24.4. for loop ............................................................................................................................ 242
24.5. while loop ........................................................................................................................ 243
24.6. until loop .......................................................................................................................... 243
24.7. practice: scripting tests and loops ................................................................................... 244
24.8. solution: scripting tests and loops ................................................................................... 245
25. scripting parameters .................................................................................................................. 247
25.1. script parameters .............................................................................................................. 248
25.2. shift through parameters .................................................................................................. 249
25.3. runtime input ................................................................................................................... 249
25.4. sourcing a config file ...................................................................................................... 250
25.5. get script options with getopts ........................................................................................ 251
25.6. get shell options with shopt ............................................................................................ 252
25.7. practice: parameters and options ..................................................................................... 253
25.8. solution: parameters and options ..................................................................................... 254
26. more scripting ............................................................................................................................. 255
26.1. eval ................................................................................................................................... 256
26.2. (( )) ................................................................................................................................... 256
26.3. let ..................................................................................................................................... 257
26.4. case .................................................................................................................................. 258
26.5. shell functions .................................................................................................................. 259
26.6. practice : more scripting .................................................................................................. 260
26.7. solution : more scripting .................................................................................................. 261
VIII. local user management ....................................................................................................................... 263
27. introduction to users .................................................................................................................. 266
27.1. whoami ............................................................................................................................ 267
27.2. who .................................................................................................................................. 267
27.3. who am i .......................................................................................................................... 267
27.4. w ...................................................................................................................................... 267
27.5. id ...................................................................................................................................... 267
27.6. su to another user ............................................................................................................ 268
27.7. su to root ......................................................................................................................... 268
27.8. su as root ......................................................................................................................... 268
27.9. su - $username ................................................................................................................ 268
27.10. su - ................................................................................................................................. 268
27.11. run a program as another user ...................................................................................... 269
27.12. visudo ............................................................................................................................. 269
27.13. sudo su - ........................................................................................................................ 270
vii
Baroda Institute Of Technology
Linux Fundamentals
27.14. sudo logging .................................................................................................................. 270
27.15. practice: introduction to users ....................................................................................... 271
27.16. solution: introduction to users ....................................................................................... 272
28. user management ....................................................................................................................... 274
28.1. user management ............................................................................................................. 275
28.2. /etc/passwd ....................................................................................................................... 275
28.3. root ................................................................................................................................... 275
28.4. useradd ............................................................................................................................. 276
28.5. /etc/default/useradd .......................................................................................................... 276
28.6. userdel .............................................................................................................................. 276
28.7. usermod ............................................................................................................................ 276
28.8. creating home directories ................................................................................................ 277
28.9. /etc/skel/ ........................................................................................................................... 277
28.10. deleting home directories .............................................................................................. 277
28.11. login shell ...................................................................................................................... 278
28.12. chsh ................................................................................................................................ 278
28.13. practice: user management ............................................................................................ 279
28.14. solution: user management ............................................................................................ 280
29. user passwords ............................................................................................................................ 282
29.1. passwd .............................................................................................................................. 283
29.2. shadow file ...................................................................................................................... 283
29.3. encryption with passwd ................................................................................................... 284
29.4. encryption with openssl ................................................................................................... 284
29.5. encryption with crypt ...................................................................................................... 285
29.6. /etc/login.defs ................................................................................................................... 286
29.7. chage ................................................................................................................................ 286
29.8. disabling a password ....................................................................................................... 287
29.9. editing local files ............................................................................................................. 287
29.10. practice: user passwords ................................................................................................ 288
29.11. solution: user passwords ................................................................................................ 289
30. user profiles ................................................................................................................................ 291
30.1. system profile .................................................................................................................. 292
30.2. ~/.bash_profile ................................................................................................................. 292
30.3. ~/.bash_login .................................................................................................................... 293
30.4. ~/.profile .......................................................................................................................... 293
30.5. ~/.bashrc ........................................................................................................................... 293
30.6. ~/.bash_logout .................................................................................................................. 294
30.7. Debian overview .............................................................................................................. 295
30.8. RHEL5 overview ............................................................................................................. 295
30.9. practice: user profiles ...................................................................................................... 296
30.10. solution: user profiles .................................................................................................... 297
31. groups .......................................................................................................................................... 298
31.1. groupadd .......................................................................................................................... 299
31.2. group file ......................................................................................................................... 299
31.3. groups .............................................................................................................................. 299
31.4. usermod ............................................................................................................................ 300
31.5. groupmod ......................................................................................................................... 300
31.6. groupdel ........................................................................................................................... 300
31.7. gpasswd ............................................................................................................................ 301
31.8. newgrp ............................................................................................................................. 302
31.9. vigr ................................................................................................................................... 302
31.10. practice: groups ............................................................................................................. 303
31.11. solution: groups ............................................................................................................. 304
IX. file security ............................................................................................................................................ 305
32. standard file permissions .......................................................................................................... 307
32.1. file ownership .................................................................................................................. 308
32.2. list of special files ........................................................................................................... 310
32.3. permissions ...................................................................................................................... 311
viii
Baroda Institute Of Technology
Linux Fundamentals
32.4. practice: standard file permissions .................................................................................. 316
32.5. solution: standard file permissions .................................................................................. 317
33. advanced file permissions .......................................................................................................... 319
33.1. sticky bit on directory ..................................................................................................... 320
33.2. setgid bit on directory ..................................................................................................... 320
33.3. setgid and setuid on regular files .................................................................................... 321
33.4. setuid on sudo .................................................................................................................. 321
33.5. practice: sticky, setuid and setgid bits ............................................................................ 322
33.6. solution: sticky, setuid and setgid bits ............................................................................ 323
34. access control lists ...................................................................................................................... 325
34.1. acl in /etc/fstab ................................................................................................................. 326
34.2. getfacl .............................................................................................................................. 326
34.3. setfacl ............................................................................................................................... 326
34.4. remove an acl entry ......................................................................................................... 327
34.5. remove the complete acl ................................................................................................. 327
34.6. the acl mask ..................................................................................................................... 327
34.7. eiciel ................................................................................................................................. 328
35. file links ....................................................................................................................................... 329
35.1. inodes ............................................................................................................................... 330
35.2. about directories .............................................................................................................. 331
35.3. hard links ......................................................................................................................... 332
35.4. symbolic links .................................................................................................................. 333
35.5. removing links ................................................................................................................. 333
35.6. practice : links ................................................................................................................. 334
35.7. solution : links ................................................................................................................. 335
X. Appendices .............................................................................................................................................. 336
A. keyboard settings ......................................................................................................................... 338
A.1. about keyboard layout ...................................................................................................... 338
A.2. X Keyboard Layout .......................................................................................................... 338
A.3. shell keyboard layout ....................................................................................................... 338
B. hardware ....................................................................................................................................... 340
B.1. buses .................................................................................................................................. 340
B.2. interrupts ........................................................................................................................... 341
B.3. io ports .............................................................................................................................. 342
B.4. dma .................................................................................................................................... 342
C. License .......................................................................................................................................... 344
Index ............................................................................................................................................................. 351
ix
Baroda Institute Of Technology