Fall 2018 - September to December 2018 - Updated 2018-09-27 10:51 EDT
.
(dot), ..
(dot dot)
/root
, HOME, /home
, and the current directorypwd
pwd
, ls
, hidden filescd
, TAB filename completion, absolute/relative pathstouch
vi/vim, nano
head, tail
cat, more, less
head, tail
mkdir
mv
(including using ..
)cp
rm, rmdir
find
using “wildcard” (GLOB) patterns - same as shell GLOB.bash_history
fileCheck the due date for each assignment and put a reminder in your agenda, calendar, and digital assistant. Just like in the Real World, not all due dates are on the same days or at the same times.
PS1 find mkdir mv cp rm touch file
PS1
prompt every time you log in to the CLS.PS1 find mkdir mv cp touch file
PS1
prompt every time you log in to the CLS.Worksheets are preparation for your assignments. You can’t do the assignments without having done the worksheets first, and you can’t do the worksheets without having first read the Course Notes: 1. Read. 2. Worksheets. 3. Assignment.
Make notes from the worksheets on how each command works. What do the options used in the worksheets mean, for each command? (See the weekly List of Commands.)
Form a small study group to do the worksheets. Each person tries the example given, and you make sure you all get the same answers. Worksheets are not for hand-in; they are not worth marks; the assignments test your knowledge of the lectures and worksheets.
The worksheets are available in four formats: Open Office (ODT), PDF, HTML, and Text. Only the Open Office format allows you “fill in the blanks” in the worksheet. The PDF format looks good but doesn’t allow you to type into the blanks in the worksheet. The HTML format is crude but useful for quick for viewing online.
Do NOT open the Worksheet ODT files using any Microsoft products; they will mangle the format and mis-number the questions. Use the free Libre Office or Open Office programs to open these ODT documents. On campus, you can get a copy here: Course Introduction: Install Libre Office.
Worksheets #02 and #03 require you to have read File System and Pathnames:
PS1, cd, find, less, ls, man, mkdir, passwd, pwd, rmdir
PS1
prompt every time you log in to the CLS.cat, clear, cp, find, fgrep, history, less, man, mv, rm, sleep, touch
Worksheets #04 and #05 require you to have read Shell GLOB patterns and Shell I/O Redirection:
alias, sum, unalias
date, head, nl, tail, tr, wc
Worksheet #06 is for the optional VIM Bonus Assignment (extra credit):
vim
vimtutor
program on the CLS.Worksheets prepare you for the upcoming assignments.
Follow this link to see all your upcoming Quizzes and Tests. The dates are also posted on the Course Home Page and on Brightspace CST8207.
For full marks, read the Test Instructions (all the words) before your midterm tests.
Tests take place in your one-hour lecture class, not in your lab period. You must write the test in the lecture class in which you are registered.
Take notes in class! Keep a pad open on your desk.
This week, we learn how to use absolute and relative pathnames, how to find files, and how to use GLOB (wildcard) patterns.
I recommend that you learn the VIM text editor.
You will see lots of these: Rewrite each pathname as a simplified absolute pathname with no .
or ..
references:
/home/me/../you/../../etc/../home/me/../you/../me/../foo
/home/me/../you/../../etc/../home/me/../you/../me/../..
/usr/./bin/../lib/../../etc/../usr/./lib/../bin/./bar
/usr/./bin/../lib/../../etc/../usr/./lib/../bin/..
/../../var/./a/../../var/b/../../etc/./bar/../foo
/../../var/./a/../../var/b/../../etc/./bar/..
Draw File System Diagrams on paper to understand where files are when you do the worksheets, the assignments, and the tests and exams!
See the note in Assignment #03 HTML about drawing file system diagrams on paper. Do it!
Students will have their CLS accounts disabled if they have not changed their default password. (I do not want people breaking into my machine because of you.)
See my online timetable for how to make an office appointment to see me if you want your account back.
Keep a notebook with a List of Commands in it.
- You need to write down yourself what each command does.
- Check the updated list of commands each week.
- I will check for this list in your lab periods.
- Bring your notes to class! Stop wasting time looking up commands.
You can tell whether a file system name is a directory or a file by using the file
command or by looking for a letter d
on the left in the output of ls -l
. Ordinary files are indicated by a dash -
character on the left. The first two output lines, below, are files. The last three output lines are directories.
$ ls -l /
-rw-r--r-- 1 root root 22528 Sep 4 11:01 aquota.group
-rw-r--r-- 1 root root 73728 Sep 4 11:01 aquota.user
drwxr-xr-x 2 root root 4096 Sep 3 15:57 bin
drwxr-xr-x 147 root root 12288 Sep 17 14:30 etc
drwxr-xr-x 1586 root root 36864 Sep 15 12:23 home
The rmdir
command will only remove an empty directory.
The copy command cp
will not copy directories unless you use the correct option. You know this option from doing Section 3 of Worksheet #03 HTML.
The copy command cp
and rename/move command mv
can both accept a directory as the destination, and will put all the source files into that destination directory using the source file name(s):
bar
is a directory, then cp foo bar
creates file bar/foo
bar
is a directory, then mv foo bar
creates file bar/foo
(and removes file foo
)bar
is not a directory, then cp foo bar
creates file bar
bar
is not a directory, then mv foo bar
creates file bar
(and removes file foo
)You learn this in Worksheet #03 HTML.
You can use pathnames anywhere you can use a file name, even for output redirection, e.g.:
$ date >date.txt # date.txt in the current directory
$ date >../date.txt # date.txt in the parent directory
$ mkdir foo
$ date >foo/date.txt # date.txt in the foo directory
$ mkdir foo/bar
$ date >foo/bar/date.txt # date.txt in the foo/bar directory
You will need to know this for Assignment #03 HTML.
Are you making notes from the worksheets on how each command works?
Using GLOB patterns as -name
arguments to find
find
GLOB patterns to hide them from the shell!Confused about redirection and the copy and move commands? These are wrong:
cp cal.txt >calnew,txt # WRONG: error message from cp
mv cal.txt ../../ >cal.txt # WRONG: what is now in cal.txt ?
cp
or mv
together. These commands do not produce anything on standard output that is worth redirecting. Usually, the commands produce no output at all. Do not use redirection with mv
or cp
.Confused about pathnames and blanks on the command line? This is wrong:
cp file.txt ../../../ file.copy # WRONG
cp file.txt ../../../file.copy # RIGHT
These do not produce the same output file:
$ find . >foo ; mv foo dir/foo
$ find . >dir/foo
If the assignment asks you to redirect the output into a file in a specific directory, then only the second answer above is correct. The first answer, using mv
, will have the wrong pathnames in it.
Stop using cd
Windows People! Use pathnames! This is very inefficient:
$ cd CST8207-18F
$ cd Assignments
$ cd assignment03
$ cd topdir
$ cd other
$ cat foo.txt
This is all you need to do (using the TAB key to have the shell help you):
$ cat CST8207-18F/Assignments/assignment03/topdir/other/foo.txt
No employer wants to pay you to type six commands when one will do the job. Work smarter, not harder.
Stop using cd
Windows People! Use pathnames! This is very inefficient:
$ cd dir1
$ cd subdir
$ touch file
$ cd ..
$ cd ..
$ cd dir2
$ cd subdir
$ touch file
$ cd ..
$ cd ..
[...etc...]
This is all you need to do (using the TAB key to have the shell help you):
$ touch dir1/subdir/file dir2/subdir/file [...etc...]
No employer wants to pay you to type ten commands when one will do the job. Work smarter, not harder.
If a pathname doesn’t work, use ls
to find out why. Usually it’s because you’re spelling it wrong. Use the TAB key and the shell will complete the pathname for you, with no spelling errors.
This student below (from a previous term) didn’t do the worksheets and doesn’t know about any options to the mkdir
command. Instead of typing one command to make the directory tree, he has to use ten (!), and gets the name wrong, too. He also didn’t hear me talk about not using cd
all the time, so he marks himself as a Windows newbie. This won’t look good in a job interview:
$ mkdir 1ldIr
$ cd 1ldIr
$ mkdir one
$ mkdir two
$ mkdir one/0neOne
$ cd one
$ ls
$ cd ..
$ ls
$ mkdir two/tw0two
Don’t be this guy. No employer wants to pay you to type ten commands when one will do the job. Work smarter, not harder. Do the worksheets!
Your boss may ask you for statistics on your server.
Count and then show the password failures:
$ fgrep -c 'Failed' /var/log/auth.log
$ fgrep 'Failed' /var/log/auth.log | less
Count and the show the userid failures:
$ fgrep -c 'input_userauth' /var/log/auth.log
$ fgrep 'input_userauth' /var/log/auth.log | less
whois
commandIndexYou can use the whois
command on Linux to identify which country is responsible for an IP address, or use a Web Whois Lookup.
The Linux
whois
command is blocked from use at Algonquin College, except if you are on the CLS. You can’t use thewhois
command in your own Linux machines while you are on campus. Usewhois
on the CLS or do a lookup via the web interface instead.
In addition to the SSH attacks, machines on the Internet receive attacks using bogus HTTP requests. These unsuccessful attacks below attempt to use a chain of parent directories to fetch a file out of the file system:
[Dec 13 13:50:57 2015] [client 54.201.251.33] GET /../../ratings.html
[Dec 13 13:51:01 2015] [client 54.201.251.33] GET /../../index.html
[Apr 26 17:09:59 2016] [client 67.79.37.250] GET /../../../../../../../mnt/mtd/yqcP
[May 02 12:21:45 2016] [client 222.235.67.147] GET /../../../../../../../mnt/mtd/IJSj
[Jun 27 17:54:40 2016] [client 222.198.128.207] GET /../../../../../../../mnt/mtd/3qS9
[Oct 07 09:34:11 2016] [client 64.137.234.42] GET /../../../../../../../mnt/mtd/ahMk
[Oct 15 06:49:57 2016] [client 177.142.99.103] GET /../../../../../../../mnt/mtd/qt
[Oct 19 20:49:33 2016] [client 189.100.188.31] GET /../../../../../../../mnt/mtd/qt
[Oct 23 00:43:39 2016] [client 191.189.55.9] GET /../../../../../../../mnt/mtd/qt
[Nov 02 21:35:09 2016] [client 201.37.223.72] GET /../../../../../../../mnt/mtd/qt
[Jan 07 20:51:33 2017] [client 201.17.154.181] GET /../../../../../../../mnt/mtd/qt
[May 10 21:22:29 2017] [client 187.67.167.31] GET /../../../../../../../mnt/mtd/qt
[28/Sep/2017:23:57:19 -0400] "GET /?i=../../../../../proc/self/environ"
[06/Nov/2017:07:56:19 -0500] "GET /sdk/../../../../../..//etc/vmware/hostd/vmInventory.xml"
[10/Feb/2018:04:44:53 -0500] "GET /index.php?option=com_jimtawl&Itemid=12&task=../../../../../../../../../../../../../../../configuration.php"
[01/Apr/2018:23:35:23 -0400] "GET /wp-content/plugins/wp-ecommerce-shop-styling/includes/download.php?filename=../../../../../../../../../etc/passwd"
[02/Apr/2018:06:02:56 -0400] "GET /cst8207/17w/notes/data//wp-content/plugins/ibs-mappro/lib/download.php?file=../../../../wp-config.php"
[02/Apr/2018:06:02:57 -0400] "GET /cst8207/17w/notes/data//wp-content/plugins/s3bubble-amazon-s3-html-5-video-with-adverts/assets/plugins/ultimate/content/downloader.php?path=../../../../../../../wp-config.php"
[Tue Jul 03 18:22:42 2018] [client 218.211.168.176:37148] GET //./.././..
The Apache web server blocked all the above attacks.
On September 15 at 2:02am, I report a missing format in a piece of Perl software on my Linux system:
From: "Ian! D. Allen" <idallen@idallen.ca>
Subject: missing format for DateTime::Format::Flexible
Date: Sat, 15 Sep 2018 02:02:48 -0400
To: Tom Heady <cpan@punch.net>
https://metacpan.org/pod/DateTime::Format::Flexible
"If you can think of any that I do not cover, please let me know."
I was surprised that this could not be parsed:
Sep 10, 2018 12:58
but this worked fine:
Sep 10, 2018 12:58:00
At 02:06am (four minutes later), I receive a reply email from the software author, saying he added the missing format and will release the fix next week:
From: Tom Heady <tom@punch.net>
Subject: Re: missing format for DateTime::Format::Flexible
Date: Sat, 15 Sep 2018 02:06:31 -0400
To: "Ian! D. Allen" <idallen@idallen.ca>
Thanks for the info, I'll have a new release out this next week to
support that format. Tom
The problem was fixed in four minutes!
People who write and maintain Free/Libre Open Source Software (FLOSS) take pride in their work and are motivated to keep it updated.
When you are locked out, follow the directions in the notes to get your IP address re-enabled.