LPI Linux Certification in a Nutshell by Jeffrey Dean Unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. This page was updated August 20, 2007. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification UNCONFIRMED errors and suggestions from readers: : 3rd paragraph, 2nd line; You may establish an online account with VUE and resister for the exams using the company's web site. Please change "resister" to "register" {20} middle; 2nd example for "cut" should be: Show first character of /etc/passwd: $cut -c1 /etc/passwd [21] In the middle of page: The -l option doesn't exist. It should be -n (using Suse 7.1) (23) Top; The 'A' style doesn't exist. It should be 'a'. [24] Frequently used options; Type 'A' for the -t option doesn't exist. The type should be an lowercase 'a'. [24] Frequently used options; Type 'O' for the -t option doesn't exist. The type should be an lowercase 'o'. (26) The option of split; n in "-n" should be italic, because n is a number. {28} tail: Frequently used options; The option -f is explained twice. (32) Example 3:; Example 3 is incomplete. It should be: $ sed 'y/abc/xyz/' file1 [32] Upper half of page, flag 'y'; AFAIK 'y' isn't a valid flag for the 's'-command. 'y' is a command. (60) middle of page : examples; "that contain either Linux or linux, ..." In fact it's any combination of upper/lowercase variations on linux. (linuX, LiNuX, etc..) (65) Table 1-13; Examples '[a-z]' and '[^a-z]'. Case-specific range classes don't work as expected on systems with locale other than 'C' (most current Linux systems). This is true for bash (globs), grep and gawk (and probably more), but apparently not for sed (i.e., GNU sed). Instead, use '[[:lower:]]'. Also 'Example 3' on p 67: '[A-Z][a-z]*'. Instead, use '[[:upper:]][[:lower:]]*'. Some of the other example patterns are not exactly wrong, but would be more robust if they used the POSIX character classes. [67] Example 5; Is the '+' necessary? Wouldn't grep -E '[0-9]' file achieve the requested result? (68) Example 2; The Example shows Delete any line that doesn't contain #keepme:: /#keepme/!d With the double colons on the end of the requested action, you either need to remove a colon, or change the line to: /#keepme:/!d {75} 1st paragraph; A swap partition is "swap partition" not "/swap partition". The command fdisk and the file /etc/fstab use just swap. (75) 2nd to last paragraph; Sentence reads: "See Figure 1-1 later in this chapter for a graphic depiction..." I believe it should read: "See Figure 1-4 later in this chapter for a graphic depiction..." Figure 1-4 is on page 120. [76] fdisk description, 3rd line; Text reads: "If omitted, device dafaults to /dev/hda." fdisk v. 2.11f (on my Slackware boxes) does not default to a particular partition. In the absence of a device parameter, a 'usage' message is displayed. [77] command t; The type of filesystem is displayed in hexadecimal not octal. {78}, the last sentence: ----- Original ------- First cylinder (79-1027, default 79): Using default value 79 ----- Correction ----- First cylinder (66-1027, default 66): Using default value 66 {79}, Line 14 ~ 15 (includes blank lines) ----- Original ------- First cylinder (118-1027, default 118): Using default value 118 ----- Correction ----- First cylinder (83-1027, default 83): Using default value 83 {79}, Line 28 ~ 29 (includes blank lines) ----- Original ------- /dev/hda5 40 65 208813+ 82 Linux swap /dev/hda6 66 82 136521 83 Linux ----- Correction ----- /dev/hda5 40 65 208813+ 83 Linux /dev/hda6 66 82 136521 82 Linux swap [98] quotaon command example 2; Turn on user quotas only on the /home filesystem: # quotaon -gv /home /dev/sda9: group quotas turned on should be "Turn on group quotas..." to agree with command input and output. {103} Enabling Quotas example: After step 1 of the example I think you should umount and mount the filesystem as you are operating on fstab while quota works on mtab. If you dont' umount/mount the filesystem, quotacheck in step 3 returns no data. Also, for people trying the example in running Linux machines you should say that files can be called aquota.group and aquota.user (as for example on RedHat 7.1). (108) The third line refers to Figure 1-3, when in reality I think it's supposed to refer to Figure 1-2. {105} Table 1-16; If a person has 'x' permission to the directory, he can 'cd' into that directory. But table 1-16 says 'Read and write files contained in the directory'. (109) Figure; Figure 1-3 is Figure 1-4 and should be on page 120 instead of the wrong figure 1-4 (109) Figure 1-3; bottom cylindrical figure representing /home on "/dev/sdaq" should be "/dev/sda9" according to the details of the last paragraph on page 119. [109] figure 1-3; Figure 1-3 denotes Hard and Symbolic Links. This is correct, except the text referencing Figure 1-3 on page 108 reads: Figure 1-3 shows how to total big values into the octal equivalent {109} 5th line; 4th line: with a directory with mode 1774 would have this equivalent string: original: rwxr-xr-T correct: drwxrwxr-T {110} Last 1/4 part of the page; The example given states : 'For example, a umask of 2(002) ...' Yet the umask-example uses 022. {113} Example 3; command is missing a -R to recursively change the permissions [118] explanation ln command; explaining the options : -s Create a symbolic ... : this is NOT the default default ln creates hard link; -s creates symbolic link [119] 2nd paragraph; In my RedHat box 7.x, the command: original: $stat my* will result an inode 41 for the file "myslink" correct: $stat -l my* will result an inode stated 30 for the file "myslink" (119) Result of 'stat my*'; The result of "myslink" part is entirely incorrect. Because the Inode can't be the same as myfile, and the number of Links should be 1, and so on. The result should be like following: File: "myslink" -> "myfile" Size: 6 Blocks: 0 IO Block: 4096 Symbolic Link Device: 811h/2065d Inode: 840195 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1011/vincent_lin) Gid: ( 500/ tcadm) Access: Wed Jun 26 17:35:09 2002 Modify: Wed Jun 26 17:34:40 2002 Change: Wed Jun 26 17:35:12 2002 (120) Figure 1-4; Figure 1-4 is Figure 1-5 and should be on page 128 instead of the wrong Figure 1-5 [125] explanation of /tmp; At least Redhat does not delete files under /tmp upon system boot. [127] Last paragraph; Figure 1-5 doesn't seem to be the right picture as described in the text. Picture shows a man page instead of the partitioning sheme. (128) Figure 1-5; Figure 1-5 should depict a filesystem hierarchy graphically, but an info page is shown instead. {171} the last line; It is beyond the scope of LPIC Level 1, but nowadays the command passwd has an option "--stdin" which, according to the manual, is This option is used to indicate that passwd should read the new password from standard input, which can be a pipe. With this option, you can enter a password on the command line. [174] The first paragraph: In the previous pages, the boot process, minor system admin and now the configuration of shells is discussed. It would be appropriate to briefly explain how the the shell is started and which config files are read. Starting with the init process, the shell is defined in the password file and what happens next ? [177] In the footer: "syslog must be ..." I would add "by sending KILL_HUP : ps ..." [193] At the line number 45; -N "$now" shoud be -N "$prev_full", otherwise we end up storing only files modified after we start this script {200} Exercise 1.3-4 §1 it is written: 1. Expriment with redirecting the outout of ls /* which should be cp */ as follows: $ cp /etc/skel . 2> info.txt ... ... a. How is the terminal output different than that observed in Exercise 1.3-3 /* This should refer to 1.3-2 */ (201) Exercise 1.3-7. Regular expressions Use a simple regular expression with grep to find sh and bash users in /etc/passwd: $ grep "/bin/..sh" /etc/passwd Wrong answer. This will not find /bin/sh. Instead you want /bin/.?.?sh This will find both /bin/bash and /bin/sh [226] Question No 41.; On Page 220, Q.41 ask the command to initiate a change to runlevel 5, the answer found on Page 226 says "init 1", I do believe it is "init 5". {230} last entry of Table 1-30; {file_one, two, three} is incorrect. should be file_{one, two, three} (231) Table 1-31, Column "Syntax for bash", last line; instead of: cmd1 tee file1 | cmd2 it should be: cmd1 | tee file1 | cmd2 [241] middle, at "Single-user mode"; The book reads "Single-user mode can be entered with the single, or simply 1, parameter at the LILO prompt". But single(or s) and 1 are a little bit different. Bootflag 1 executs scripts under rc1.d, whereas bootflag single does not. It is written in init(8). [263] Right after the first paragraph: The cat-command is used but is not clarified. {282} In the middle of page: "The build process for bash is stated by using the dot-slash pre-fix to launch configure:" Why does the configure need to be preceded by a "./" ? {295} 2nd paragraph, rpm; original: rpm -V suggested correction: rpm -V (also --verify) {296} Under title "Example 2" the 1st sentence.; "...version can be done with the -U option." There ist no option -U. -U is a mode. [317] middle ; The book reads "The bzImage file is ..., compressed using the bzip2 utility". But according to the file commands.txt under the kernel documentation sub directory kbuld(ex. /usr/src/linux-2.4/Documentation/kbuild/commands.txt), "Both files use gzip compression. The 'bz' in 'bzImage' stands for 'big zImage', not for 'bzip'!". {318} Top; The output of "ls -l /boot/vmlinuz*" doesn't look like an output of ls -l. It also applies to page 319. {319} On the Exam - line 2; "modules-install" should be "modules_install" {341} C-shells; If bash is a Bourne-derived shell, so are zsh and ksh. [348] Example 2-6 and example 2-7; In example 2-6, the "system-wide .bashrc" file should be "bashrc" in two places. Example 2-7 also confuses the bashrc and .bashrc filenames. [354] First paragraph, second sentence; The first paragraph, second sentence vaguely states "...child shell executes the appropriate files (such as the .bash_profile)", but table 2-16 on page 346 indicates that the .bash_profile is run only at login. [390] Figure 2-7 and the 2nd paragraph; In figure 2-7, the network address expressed in binary should be: 11000000.10101000.00000001.00000000 With the incorrect binary as shown, the network address would be 192.171.1.0. Unfortunately, I think that the figure might be wrong because the explanation for ANDing is incorrect. All positions that have a 1 in both the IP address and the subnet mask become a 1 after ANDing. Everything else becomes a 0. [409] Last paragraph, first sentence; The sentence is vague, stating "Most of these commands...", but I have only seen the ifconfig and route commands in startup scripts. {413} Second paragraph, last sentence; "dhcp.conf" should be "dhcpd.conf" (419) Footnote; Should "for" be deleted to read "...automated PPP scripts..." {438} 2nd line from bottom of WINS and browsing paragragh; Example 2-18 may be Example 2-20 [447] Under title "On the attack", list of functions:; The filenames of the local configuration files should be /etc/hosts.deny and /etc/hosts.allow; not /etc/host.deny and /etc/host.allow as mentioned in the book. {454} SGID Workgroups paragraph, third sentence; References the wrong Part and Topic to review SGID; should be page 104. {476} Answer given for LPI102 Exam Practice Test Question 22; For the question "Which of the following programs will display DNS information for a host?", the answer "e. ping" is not included even though ping displays information such as the IP address of the destination host. {479} Question 38: Answer a and answer d of question 38 are identical, which is presumably not intended. {488} Answer 48; 2^8 is 8 -> 2^3 is 8. {542} first line for "find command"; Add pages 129 and 130 to the index listing for the find command. (Colophon) 3rd paragraph, 1st line; In the 180's and the 1900s, tallow was a valued resource, as it is a key ingredient in candles and soups. Please change "180's" to "1800s" {671} Item 4; /boot/grub/menu.lst is the configuration file for grub, not grub.conf. Many systems (not including Debian) give you a symlink called grub.conf in either /etc or /boot/grub but the correct file is menu.lst. [673] Item 34; According to the rdev manpage the -s option hasn't been available since Linux 0.95. This answer, and the question it answers are both completely bogus.