Essential System Administration, Third Edition by AEleen Frisch The 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. 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 This page was updated June 20, 2008. UNCONFIRMED errors and comments from readers: (xiii) tip; http://perso.wanadoo.fr/levenez/unix/ has moved to http://www.levenez.com/unix/ [4] 2nd paragraph; As printed, the sample command is: # kill -9 `ps aux | awk '$1=="chavez" {print $2}' Executing this command yields an error message that refers to an unmatched quote. Add a matching grave to the end of the command: # kill -9 `ps aux | awk '$1=="chavez" {print $2}'` Executing this command kills the processes. Assuming command substitution is valid in this context, is the second version correct? Am I missing something just a bit too subtle or advanced for a newbie? {11} example at the top of the page; I think there is still a mistake in the example for /etc/sudoers (section user specifications). In order for a user to be able to sudo all the executables of a directory, this directory must be written with a '/' at the end. The last line of the example becomes thus : BACKUPOPS ALL , !CHEM = BACKUP , /usr/local/bin/ (perhaps this varies depending on the version of sudo). {31}Paragraph that precedes the sentence "Here is an example command..."; The sentence "By default, searches are not case sensitive, but you can use -g to make them so." is incorrect. I don't know that plod has a default search mode. Also, the "-g" option makes the search case-INsensitive. {76} 3nd Paragraph; Setting up man -k page shows Solaris command as: #makewhat /usr/share/man Solaris Should be #makewhatis /usr/share/man <-- this works on Solaris 8 (161) last line on page 161; the "-" between "run" and "level" is missing, the correct output from "who -r" should be: . run-level 2 Mar 14 11:14 2 0 S this way, $8 = "0", and $9 = "S" {183} Second line; The top item is not an RG-11 coax connector, it's an AUI connector, I think ... not directly related to coax cabling. [196] bottom paragraph; In the bottom paragraph on p.196, the book states: "For example, for the network address 192.168.0.0, you could use only 4 bits for the subnet part rather than the usual 8, yielding 16 subnets of up to 1022 hosts each." Have you have mistated the number of hosts in this example? If you have 16 subnets, shouldn't you have 4094 hosts on each subnet, because you have 12 bits available for hosts? See generally www.murchison.net/techno/tcpip/super-chart.html. Your answer of 1022 is based on 10 bits, which is not given in the example. [203] 4th paragraph; The if referred to in this paragraph "en0" should be the same as in the example which is "eth0". I guess that someone confused the AIX with the Linux device designation. {263} Table 6-7, second attribute; Primary group attribute "prgp" should be: "pgrp" {308} 2nd paragraph under "pam_listfile(auth)"; The example for the paragraph states: "auth required pam_listfile.so onerr=fail sense=deny \ file=/etc/ftpusers item=user" The following paragraph says "This entry says that the file /etc/ftpusers (file argument) contains a list of usernames (item=user) who should be denied access to ftp (sense=allow)." I believe that should say "... who should be denied access to ftp (sense=deny)." As the paragraph continues to state "If you want to grant access to a list of users, use the option sense=allow." [317] Example LDIF file at bottom of page; The line "dc: ahania.com" appears to be incorrect. This value does not work for my server (openldap-2.1.30 on Redhat GNU/LINUX 2.4.18-27.8.0smp). When I try this I get the following error: adding new entry "dc=ahania,dc=com" ldapadd: update failed: dc=ahania,dc=com ldap_add: Naming violation (64) additional info: value of naming attribute 'dc' is not present in entry ======= It only works if I make the dc: line : dc: ahania Thus matching the first domain component value in the dn: line : dn: dc=ahania,dc=com {429} second code example; @ SOA IN should be @ IN SOA. The Linux DNS HOWTO says so, other books says so and the error messages on my FreeBSD box say so as well... [437] 2nd paragraph (first code example); In the example shown, shouldn't there be an open bracket "{" after the word "options"? (481) Packet Sniffers -- second paragraph; Second word in second paragraph under the Packer Sniffer heading should be free instead of freel. {546} Table 9-3 / syslog mail facility messages; For the "syslog mail facility messages", /var/adm/maillog is listed for FreeBSD. FreeBSD does not have /var/adm, like Solaris or Tru64 Unix... instead, all syslog messages that fall under mail.info get placed under /var/mail/maillog. [588] ldap configuration example; alias_maps = ldap:ldapsource ldapaliases_server_host .... ldapaliases_search_base .... -> should be ldapsource_server_host .... ldapsource_search_base .... etc {591} 1st line of last paragraph; The class is called "non_unknown" while It is spelt "no_unknown" everywhere else. {692} 2nd paragraph from the bottom; On Solaris, the option to specify filesystem type for mount is -F (this is the case for Solaris 8 and 9, at least). In addition, the logical device files for block devices are located in /dev/dsk. So the example for Solaris should be something like: mount -o ro -F hsfs /dev/dsk/c0t2d0s0 /mnt {724} Table 11-2, Tru64 section; The Tru64 tape devices are listed as: /dev/[n]rmt/tapen_dm However, shouldn't it be something like this for Tru64 v5.x: /dev/[n]tape/tapen_dm {901} 2nd code segment; I don't think this script exits with an '-h' flag, as the 'usage' on p. 900 indicates. If that behavior is intended, you'd want something like: elsif ($arg eq 'h') { &usage('') && exit; } [906] 2nd code segment, 5th line; print $sep if $matched2 && $nbef > $before && $show_sep && $show_fname; should read print $sep if $matched2 && $nbef > $before && $show_sep;