Chabot College Fall 2002

Removed Fall 2006

Course Outline for Computer Science 48C

TOPICS IN LINUX SYSTEMS ADMINISTRATION

Catalog Description:

Computer Science 48C - Topics in Linux Systems Administration 2 units

Selected topics in Linux systems and network administration. Managing users and groups, the help desk. Shell scripting and automating systems administration tasks, overview of perl, python, other scripting tools. Configuring the kernel and tuning the system. Prerequisite: Computer Science 48B and Computer Science 14 (both completed with a grade of C or higher). 1.5 hours lecture, 1.5 hours laboratory.

Prerequisite Skills:

Before entering the course the student should be able to:

1. describe the TCP/IP layers and IP addressing (address classes, classless addresses, subnetting);

2. describe basic networking devices (cards, cables, hubs, switches, types of media);

3. configure an ethernet interface;

4. describe the basic ideas in routing internet traffic;

5. configure name services under Linux (DNS, BIND, NIS, others);

6. configure sharable resources under Linux (print and file services);

7. configure and use network monitoring tools properly;

8. integrate Linux and Windows NT machines on one network;

9. configure and run Samba;

10. integrate Linux and other non-Windows-NT machines on one network;

11. install and configure system services, and choose which services to offer;

12. install and configure electronic mail systems;

13. set up FTP and anonymous FTP on Linux machines, and discuss legal and security issues of allowing files to be transferred onto and off from machines;

14. install and configure the Apache Web server;

15. set up Web server logging; and describe when logging is needed, as well as what type of logging is needed;

16. describe other Web servers (Squid, Roxen Challenger, Boa, others);

17. set up and configure a news service and clients;

18. set up and configure Internet telephony and conferencing;

19. determine security needs for a system;

20. describe the types of attacks an attacker may use against a computer;

21. configure a system to protect against those attacks;

22. describe a "good" password or "pass-phrase" and check on user's passwords;

23. set up password and security policies for a system;

24. set up the "standard" defenses against attackers;

25. set up security monitoring;

26. set up and configure a firewall under Linux;

27. set up proxy services;

28. configure the kernel to operate a firewall;

29. build and operate a security administrator toolbox;

30. recover from being hacked;

31. follow the procedures used in the appropriate college computer laboratory to sign in and out, and to write, edit, compile, run and debug programs;

32. demonstrate an elementary understanding of modern computational systems and their use;

33. demonstrate an elementary understanding of what steps are involved in program development;

34. use simple C++ data types in programs and understand how they are represented in the machine;

Chabot College Page 2

Course Outline for Computer Science 48C

Topics in Linux Systems Administration

Fall Semester 2002

Prerequisite Skills: continued

35. form C++ expressions using selected operators, and understand the rules of precedence used in their evaluation;

36. use the structured programming constructs: sequence, selection and iteration;

37. perform elementary interactive input and output operations;

38. code void and value-returning functions with value and reference parameters and use them in a program;

39. define and use the structured C++ data types: array, string, struct in applications drawn from mathematics, the sciences, and other areas;

40. use text files to record and retrieve information in elementary applications;

41. produce well-documented, user-friendly programs of short to medium length.

Expected Outcomes for Students:

Upon completion of the course the student should be able to:

1. manage users and groups, add users to the system, grant permissions to users;

2. delete a user account, and know when to do so;

3. demonstrate effective use of groups to manage different types of users;

4. demonstrate effective interaction with users;

5. write shell scripts for the bash and tcsh shells to automate system administration tasks;

6. write perl scripts to automate system administration tasks;

7. demonstrate the effective use of other shell languages (e.g., python) in a limited manner, and be aware of compiler-based programming tools under Linux;

8. demonstrate effective use of the cron daemon to schedule maintenance tasks, and debug cron jobs;

9. tune the behavior of the Linux kernel, if needed in a particular environment.

Course Content:

1. Users and groups

a. Adding users to the system

b. Granting permissions to users

c. Establishing groups

d. The /etc/passwd, /etc/group, /etc/shadow and /etc/gshadow files

e. Adding and deleting user accounts, when to delete an account

f. Using groups effectively

g. Group permissions

h. The newgrp command and other user and group commands

2. Dealing with users

a. Establishing system and user policies

b. Training users

c. Developing a help desk, using WREQ to manage the desk

3. Shells

a. Overview of Linux shells

b. Wildcards, aliases, command-line completion

c. Pipes and I/O redirection

d. Command history, command-line editing

e. Job control

f. Quoting with \ ' and "

g. Shell variables

Chabot College Page 3

Course Outline for Computer Science 48C

Topics in Linux Systems Administration

Fall Semester 2002

Course Content (continued):

4. Shell scripting

a. The bash shell and scripting

b. Using perl

c. Other scripting languages

d. Brief overview of programming tools (e.g., C, C++ and Java -- optional)

5. Automating administration tasks

a. Types of tasks to automate -- one-time tasks and regular tasks

b. Using the 'at' utility for one-time jobs

c. Using the 'cron' utility for regularly scheduled jobs

6. Tuning Linux

a. What can be tuned: the CPU, I/O, RAM paging and related disk I/O

b. Bottlenecks, finding them, local (in the machine) and remote (network) bottlenecks

c. Costs and benefits of tuning

d. Measuring performance, both locally and on the network

e. RAM and swap space

f. Tuning the kernel in /proc

7. Customizing the kernel (optional as time permits)

a. Overview of kernel source, where you can get it

b. Patching the kernel source

c. Kernel loadable modules

d. Building customized kernels

8. Hacking (optional as time permits)

a. Basic hacking methods

b. Overview of hacking tools

Methods of Presentation:

1. Lecture, with "live" demonstrations as needed

2. In-lab exercises on the 250MB Zip system from CSCI-48A

Assignments and Methods of Evaluating Student Progress:

1. Typical Assignments

a. In-lab exercises to practice concepts from lecture and reading

2. Methods of Evaluating Student Progress

a. Labs

b. Optional in-class quizzes

c. Final exam

Textbook(s) (Typical):

Red Hat Linux Systems Administration Unleashed, Shenk et al, Sams Publishing, 2000

Special Student Materials:

Zip disk

Diskette used in CSCI 48A and 48B

Computer lab fee

Revised: July 2001 Keith Mehl

Hps CS 48C Outline Fall 2002