I needed to build Apache from an SRPM file, since I needed to change options
for suexec and recompile it. I downloaded the httpd source code, i.e., the
RPM", httpd-2.4.6-19.el7.centos.src.rpm, from the
Mirror site. But when I attempted to rebuild Apache, I encountered the
error message "configure: error: APR not found. Please read the documentation."
When I got past that error message I saw the error message
"configure: error: pcre-config for libpcre not found. PCRE is required and
available from http://pcre.org/". I was able to get past those issues,
but the process of recompiling suexec wasn't as quick as I had hoped it would
If you need to determine which IP address on your
LAN are in use and the
media access control (MAC) address associated with them,
Bopup Scanner from
B Labs is a handy free utility that
will quickly scan a range of IP addresses and provide the MAC addresses
for the systems within the specified IP address range. It can also tell
you if any of the systems are functioning as web servers listening on TCP
ports 80 or 8080.
If you need to configure a custom service from the command line interface
(CLI) you obtain by a Secure Shell (SSH) connection to a Juniper NetScreen
Firewall running ScreenOS, you can use the set service
command. E.g., to create a custom service for an SSH server listening on
a non-standard port for SSH, you could use something like the following,
if the server is listening on port 2005:
set service "Auburn SSH" protocol tcp src-port 1024-65535
The text in quotation marks immediately after set service
is just a descriptive name you can give to the service to make the purpose
of the custom service more immediately identifiable.
If you have not yet created an address book entry for the system
running the custom service, you can use the set address
command to create it.
Database access for
MySQL database users can
be controlled through the GRANT, REVOKE and
DROP commands. You can see a list of the users with the
select user from mysql.user; command. If you add host
to that command, e.g., SELECT user, host from mysql.user;,
you can also see the hosts/IP addresses from which users are allowed to
connect to databases.
A hard disk
drive in a computer today will normally be a 3.5 inch or 2.5 inch drive,
which is the size of the platters on which data is stored inside drives.
Read/write heads move over the spinning platters to read and record data.
Laptops will have a 2.5" drive and desktop systems will likely have a 3.5"
drive, though may have a 2.5" drive. Before these sizes became common,
there were 5.25" drives when Parallel ATA (PATA) drives were used. Seagate
released the first 5.25" drive in 1980 and Rodime released the
first 3.5" hard drive in 19831. Before 5.25" inch drives were
used in desktop systems there were 8" drives. You can
find some of the history of hard drive development in the Wikipedia article
of hard disk drives and the PCWorld article by Rex Farrance,
Timeline: 50 Years
of Hard Drives.
Hard disk drives have spinning platters within them, much as an old record
player will spin a record, though the platter in a HDD spins much
faster. Today you may find drives that spin at 5,200 revolutions
per minute (RPM) or 7,200 revolutions per minute (RPM). What does
that equate to in miles per hour (MPH)?
If a platter in the HDD is 3.5" in diameter then the
radius is 1/2
that number, i.e. 1.75". A platter in a 2.5" drive has a radius of
1.25". The circumference
of a circle is 2πr, i.e., 2 times the radius times the mathematical
constant pi, which is
approximately 3.14159265. So for a point on the outer edge of a 3.5" drive's
platter that is spinning at 7200 RPM where a point on the outer edge of
the platter travels 2 * π * r inches per revolution, the speed in MPH is
approximately 75 MPH:
You can take a screen shot from a command line interface (CLI)
on a Mac OS X system by using the screencapture command.
The screen capture program is located in /usr/sbin. You can
see the available options by using screencapture -h; the
-h option isn't a valid option for the application, but it
will cause the app to print the options it does accept.
$ which screencapture
$ screencapture -h
screencapture: illegal option -- h
usage: screencapture [-icMPmwsWxSCUtoa] [files]
-c force screen capture to go to the clipboard
-C capture the cursor as well as the screen. only in non-interactive modes
-d display errors to the user graphically
-i capture screen interactively, by selection or window
control key - causes screen shot to go to clipboard
space key - toggle between mouse selection and
window selection modes
escape key - cancels interactive screen shot
-m only capture the main monitor, undefined if -i is set
-M screen capture output will go to a new Mail message
-o in window capture mode, do not capture the shadow of the window
-P screen capture output will open in Preview
-s only allow mouse selection mode
-S in window capture mode, capture the screen not the window
-t<format> image format to create, default is png (other options include pdf, jpg, tiff and other formats)
-T<seconds> Take the picture after a delay of <seconds>, default is 5
-w only allow window selection mode
-W start interaction in window selection mode
-x do not play sounds
-a do not include windows attached to selected windows
-r do not add dpi meta data to image
-l<windowid> capture this windowsid
-R<x,y,w,h> capture screen rect
files where to save the screen capture, 1 file per screen
By default, a screenshot will be stored in PNG format, but you can select
other formats with the -t (lowercase "t") option. You can
specify that you want to use PDF, JPG, or TIFF, instead. You can use the
-T (uppercase "T") option to specify a delay in seconds
between the time the command is issued and the time the screen shot
is taken, which gives you the opportunity to switch to another window
to have a screenshot taken of it. The advantage of screenshot over the
GUI Preview program
found in the Applications folder for taking a picture of a window is
that with Preview sometimes pulldown menus will disappear from a window
when you switch to Preview to take a screen shot. With screencapture,
you can issue the command with a delay, the default is 5 seconds, switch
to the relevant window, select the menu or other option, and then wait
the number of seconds specified for screencapture to capture the contents
appearing in that window at that time. E.g., the command below will wait
10 seconds to take a snapshot of what is appearing on a window that is
the current one when 10 seconds elapses.
$ screencapture -T 10 grayed.png
libpng warning: zero length keyword
libpng warning: Empty language field in iTXt chunk
You won't see any indication that the screen capture occurred, so you
need to just wait until the specified time has elapsed before looking for
the output file, which will be placed in the current directory from which you
issued the command if you didn't specify a path, but only the file
name. The "libpng warnings" don't indicate that the screen shot
couldn't be taken; the output file specified is a valild PNG file.
I recently overwrote a file with notes about a problem I had to deal with that
was residing on a web server by moving another file over top of it
accidentally. I was in a hurry to complete my notes so I could go to
bed; I thought about waiting until the morning to complete the notes,
but thoughit I could complete them in just a few more minutes, but when I
used !:1 as a shorthand in a mv command, I didn't realize
that the second item on the last command line entry was the filename for the
file with my notes. I didn't realize what I had done until I tried to
view the web page with my notes from the PC I was using at the time for
the SSH connection to the web server.
Since I had viewed the notes in the Google Chrome browser on the Microsoft
Windows-based system I was on shortly before I overwrote them, I thought
I might be able to find a copy of the notes in the browser's cache. But
since I didn't grasp what I had done until I refreshed the page in the
browser, it was now too late to get the data from the Chrome cache, since the
cached page now just showed the "404 file not found" message due to the
file no longer existing on the web server. So I thought there still
might be a slim chance that I could recover the notes web page from
a Volume Shadow
Copy, i.e., a prior version of the file stored on the Windows
system. I thought, if I could identify the particular cache file used
for that webpage, there might be a prior version of that file
stored by the Volume Shadow Copy Service. I thought I could possibly
which is a small, free program that will allow you to
examine the Google Chrome web browser cache. With
that program you can view a list of all cached web pages and
view the cached copies of those pages stored on the system.
I was able to identify the particular file in the
Data\Default\Cache directory that held that particular
cached webpage. The file was data_4, but unfortunately,
I wasn't able to find a prior version of the file. Though if you
need to examine the Chrome cache on a Microsoft Windows system, ChromeCacheView
is a very useful tool well-suited to that purpose. You can also put
chrome://cache in the Chrome addres bar to see a list of
URLs of cached pages, but ChromeCacheView provides many more capabilities
for operations on that list of cached items.
I needed to reset a forgotten administrator password for a
Simple Machines Forum (SMF) forum
running SMF 2.0.10 today. To do so, since
phpMyAdmin was installed
on the server hosting the forum, I used phpMyAdmin to access the database for
the forum and then found the entry in the _members table for the administrator
account. I saw the following fields for the password (actual values not shown):
I replaced the value in the password field with a new password and deleted
the contents of the password_salt field and then clicked on the Go
button to update the record in the table for the administrator account.
After I logged into the forum with the administrator account, I checked
the record in the table in the database for the forum again and found that
there was a new value in the passwd_salt field and the entry in the password
field was re-encrypted and was now a long sequence of digits and characters
again rather than the plain text password I entered
salt is "random data that is used as an additional input to a
function that hashes a password or passphrase. The primary function of
salts is to defend against
attacks versus a list of password hashes and
rainbow table attacks." By not storing a password in a database in plain
text, even if someone gains unauthorized access to the database, even if they
can then view passwords stored in the database, they can't see the actual
password used for the account associated with the password. If the password
was simply stored in an encrypted form, if the attacker who gained access
to the database had access to a
"rainbow table", i.e.,
a table that matched the plain text version of a password with its encrypted
form, he could deduce the orginal password. But by using a random "salt" value
as part of the encrypted password generation, a rainbow table won't help
the attacker, since even if Sam and Sally both use the same password and the
same encryption function is used to generate the stored password for both of
them, because the random salt value is used as part of the process to obtain
the encrypted version of the password, the value stored in the password for
Sally wil not match that for Sam. So an attacker can't look up an encrypted
entry in a rainbow table and find a match for the unencrypted password used
to create the encrypted version and won't even know that Sam and Sally have
the same password. This helps protect Sam and Sally, even if all of their
data on the site where the database is stored is compromised, since the
malefactor doesn't get a password for them that they might have used on other
sites as well.
After my wife installed the Yahoo Messenger Suite so that she could
chat with a friend using it, on opening the Google Chrome browser, the
Yahoo Search - Web Search page would appear. She didn't want that;
she wanted to have google.com as her home page and to have a tab open to
that when she started the browser as had occurred prior the the installation
of the Yahoo Messenger software. She said she had chosen not to install
the Yahoo toolbar and not to have it make such changes when she installed
the software, so was irked to find her home page was "hijacked" to be
a Yahoo search page. I found that I need to change both her home page and
the start page for Chrome to put her settings back to what they had been
prior to the installtion of the software.
I received a call today from someone who reported that she had started
compressing a QuickBooks file, since she wanted to upload the data to
Intuit's site (QuickBooks 2013 provides a "condense" function that is
accessible from the File menu by choosing Utilities then
Condense data), but during the process of removing old entries from
many years ago the company owner needed her to do some work in QuickBooks
so she terminated the compression operation. As soon as she told me
that I suspected she was calling because by doing so the company file
had been corrupted. That seemed to be the case, because she said she
could no longer find any entries in the file for this year besides those
for today. She thought that the QuickBooks data was being backed up to
an external, USB-attached disk drive on her system, but when I checked
its contents I found that the last backup to that drive had occurred a
couple of years ago.
Fortunately the data was stored on a Microsoft Windows system running a
version of Windows that uses Microsoft's
Volume Snapshot Service
, which allows you to simply right-click on a file or folder name,
choose Properties and then click on the Previous Versions tab
and select from shadow copies of the file or folder that were made
previously, though in this case I didn't even need to do that.
If you want to obtain information on the internal and external drives
attached to a Microsoft windows system from a command line prompt, you
can use the wmic command. To view just the model number
for drives, you can use wmic diskdrive get model.
c:\>wmic diskdrive get Model
Generic- Multi-Card USB Device
WD My Book 1230 USB Device
You can also use wmic diskdrive get Name, Manufacturer, Model
to get the name of the drive in the system and manufacturer, though for
the manufacturer you may just see (Standard disk drives).
Though, if you have a model number, such as ST31000528AS, you
can often deduce the manufacturer without even doing an online search on
the model number. E.g., Seagate starts model numbers with "ST", so I know
that the ST31000528AS and ST6000DX000-1H217Z are Seagate drives. And I
know the "WD" in "WD My Book 1230 USB Device" means the drive is a
Western Digital external disk drive.
You can also obtain the capacity of each drive in bytes by using the
c:\>wmic diskdrive get model, size
Generic- Multi-Card USB Device
WD My Book 1230 USB Device 4000710389760
So the ST31000528AS drive is 4000710389760 byte / 1,000 byte/kilobyte
/ 1,000 kilobyte/megabyte / 1,000 megabyte/gigabyte / 1,000 gigabyte/terrabyte
= 4 TB using the 1,000 number used by manufacturers rather than the
1,024 byte/kilobyte, etc. number often used in computing. E.g., see
the Wikipedia article on
If you want to see the list of other drive parameters you can check,
use wmic diskdrive get /?.
c:\>wmic diskdrive get /?
Property get operations.
GET [<property list>] [<get switches>]
NOTE: <property list> ::= <property name> | <property name>, <property list>
The following properties are available:
Property Type Operation
======== ==== =========
Availability N/A N/A
BytesPerSector N/A N/A
Capabilities N/A N/A
CapabilityDescriptions N/A N/A
CompressionMethod N/A N/A
ConfigManagerErrorCode N/A N/A
ConfigManagerUserConfig N/A N/A
DefaultBlockSize N/A N/A
Description N/A N/A
DeviceID N/A N/A
ErrorCleared N/A N/A
ErrorDescription N/A N/A
ErrorMethodology N/A N/A
Index N/A N/A
InstallDate N/A N/A
InterfaceType N/A N/A
LastErrorCode N/A N/A
Manufacturer N/A N/A
MaxBlockSize N/A N/A
MaxMediaSize N/A N/A
MediaLoaded N/A N/A
MediaType N/A N/A
MinBlockSize N/A N/A
Model N/A N/A
Name N/A N/A
NeedsCleaning N/A N/A
NumberOfMediaSupported N/A N/A
PNPDeviceID N/A N/A
Partitions N/A N/A
PowerManagementCapabilities N/A N/A
PowerManagementSupported N/A N/A
SCSIBus N/A N/A
SCSILogicalUnit N/A N/A
SCSIPort N/A N/A
SCSITargetId N/A N/A
SectorsPerTrack N/A N/A
Signature N/A N/A
Size N/A N/A
Status N/A N/A
StatusInfo N/A N/A
SystemName N/A N/A
TotalCylinders N/A N/A
TotalHeads N/A N/A
TotalSectors N/A N/A
TotalTracks N/A N/A
TracksPerCylinder N/A N/A
The following GET switches are available:
/VALUE - Return value.
/ALL(default) - Return the data and metadata for the attribute.
/TRANSLATE:<table name> - Translate output via values from <table name>.
/EVERY:<interval> [/REPEAT:<repeat count>] - Returns value every (X interval) se
conds, If /REPEAT specified the command is executed <repeat count> times.
/FORMAT:<format specifier> - Keyword/XSL filename to process the XML results.
NOTE: Order of /TRANSLATE and /FORMAT switches influences the appearance of outp
Case1: If /TRANSLATE precedes /FORMAT, then translation of results will be follo
wed by formatting.
Case2: If /TRANSLATE succeeds /FORMAT, then translation of the formatted results
will be done.
The hardware requirements Microsoft lists for various versions of its
operating systems has remained the same for processor speed and memory
from Windows Vista through Windows 7, 8, and 8.1. Microsoft recommends
a 1 GHz or faster Central Processing Unit (CPU) and 1 gigabyte (GB) of system
memory. And from Windows 7 through Windows 8.1 the amount of available
hard drive space recommended has been 16 GB available hard disk space for
the 32-bit version or or 20 GB for the 64-bit version.
Someone reported to me recently that she could no longer check her email.
She was using Outlook and kept getting prompted to provide the password,
but when she provided it Outlook wasn't able to check her incoming email
and she would be prompted for the password again.
She told me the password she was using, so I established a telnet connection
to port 110, the
Post Office Protocol version 3 (POP3) port from another system using
PuTTY and entered her userid
and password. The email server, which uses
and POP3 service, acknowledged that was the correct password.
+OK [XCLIENT] Dovecot ready.
-ERR Unknown command.
+OK Logged in.
+OK 52 483564
If you connect to port 110, the pop3 port, you can enter a user
command to provide the userid (I don't know why dovecot always responded
to the first submission of that command with -ERR Unknown command,
when I used PuTTY to connect, but then accepted it on the second
submission) and then a pass command followed by the
password. You can then issue a stat or uidl
command to check on the number of messages in the inbox and their
size. For the stat command, the first number in the response is the
number of messages and the second number is their size in bytes. The
uidl command shows the unique message id for each message. You can
end the session with the quit command.
Since the password seemed to be correct, I had her try again to download
her email while I observed what was happening with
tcpdump on the mail server
by issing the command tcpdump -i enp1s4 'port 110' -A from
the root account. I used i enp1s4, because enp1s4
is the network interface on that particular system. The -A
at the end instructs tcpdump to print each packet (minus its link level
header) in ASCII.
What I observed was her system sending the USER command and her
userid. But then Outlook on her system would send the AUTH
command and the server would reply ".-ERR [AUTH] Plaintext authentication
disallowed on non-secure (SSL/TLS) connections"
I.e., the server was accepting a plaintext password, though it wasn't
accepting one from her system. When I entered the AUTH command
from the telnet session to port 110, it was accepted without that error
+OK [XCLIENT] Dovecot ready.
-ERR Unknown command.
+OK Logged in.
I then remembered that she had told me
her ISP replaced her network equipment recently. She has an IP that
remains constant unless the router is replaced at her end in which case
the new device has a different
media access control (MAC)
address and will be assigned a different IP address.
I put the new IP address in the /etc/mail/access file,
so that sendmail would allow relaying from that IP address without any
authentication. I.e., I added a line with her IP address followed by
I then ran the makemap hash command to generate a
new /etc/mail/access.db file.
# makemap hash /etc/mail/access </etc/mail/access
But that only allowed her to send email via sendmail without authentication.
I also had to update dovecot's configuration file at
/etc/dovecot/dovecot.conf and change the IP address there for
her system so that she could use plaintext authentication, i.e., an
unencrypted password (I need to go to her location and change the Outlook
configuration there to use other than plaintext authentication). I didn't
recall that change was needed until finding a note I had made previously
regarding dovecot's logon_trusted_networks
The relevant section of the dovecot.conf file is shown below for cases
where plaintext authentication is being allowed.
# Space separated list of trusted network ranges. Connections from these
# IPs are allowed to override their IP addresses and ports (for logging and
# for authentication checks). disable_plaintext_auth is also ignored for
# these networks. Typically you'd specify your IMAP proxy servers here.
login_trusted_networks = 192.168.0.0/24 192.168.7.0/24 10.45.1.12
In this case dovecot was configured to allow plaintext logins from
two 192.68 subnets and her specific IP address. But since her IP address
had changed to a new one, dovecot was no longer permitting plaintext
authentication from her system. After changing the
login_trusted_networks line to match her particular IP address, I
# service dovecot restart
Redirecting to /bin/systemctl restart dovecot.service
When I had her try again, she was then able to download her email.
Note: IP addresses, userid, and password are, of course, not the actual
Mac OS X systems come with a backup program named Time Machine,
which can be found in the Applications folder. If you attach
an external drive to the system and configure Time Machine to use it,
the program will backup the system automatically and maintain the following
Hourly backups for the past 24 hours
Daily backups for the past month
Weekly backups for all previous months
The app will delete the oldest backups when the backup drive becomes full.
Juniper NetScreen Firewalls running the ScreenOS operating system, including
older models, such as a
firewall, can be configured for
Simple Network Management Protocol (SNMP) support to monitor bandwidth
utilization, etc. SNMP information can be viewed or
configured through the web-based interface or via the command line interface
(CLI) using get snmp, set snmp and unset
Microsoft doesn't provide a telnet program with its current operating systems
by default, but a commonly used program for telnet and SSH on Microsoft
Windows systems is
PuTTY which is free. A telnet client is provided with many Linux
distributions and one is available with Apple's OS X operating system.
PuTTY is also available for Unix/Linux systems. E.g., see
How To Install & use Putty in Ubuntu Linux written by Pradeep Kumar
on July 13, 2014.
With a telnet program you can send commands/headers to a web server to emulate
those that a browser would send to a web server and observe the responses
from the server. This can be useful in some troubleshooting efforts. E.g,
see Testing acces to a website
using PuTTY for how to configure PuTTY on a Microsoft Windows system to
perform a basic connectivity test to port 80 and request a web page for
a particular site from the server.
Oftentimes I've found that a web browser is responsible for high memory
utilization or high CPU usage on a system. But determing what tab or tabs
is culpable can be difficult. Fortunately, Google provides a mechanism for
doing so within its Chrome browser. By putting chrome://memory
in the address bar in a tab within the browser, you can get details on
the total memory usage by all browsers open on the system and the memory
consumed by tabs within Chrome.
which is a live
CD based on Debian Linux, provides the capability to clone one disk
drive to another. You can boot a system from the live CD and
make an image copy of one drive to another. Alternatively, you can store
an image of an entire drive or partitions on a drive in files on another
drive. If the drive to be used for the backup is not already partitioned
and formatted, you can obtain a command prompt and use the fdisk
command to partition the drive and mkfs.ext3 to format the
On a Mac OS X system, at the bottom of the display you see when you hold
down the Option key while clicking on the icon for wireless
networking, you will see "Open Wireless Diagnostics"; select that option
to start the wireless networking diagnostics program provided by Apple. The
utility can be used for troubleshooting Wi-Fi network problems and to
generate a report of information related to wireless networking on the system,
which may assist you with troubleshooting Wi-Fi issues on the system.