<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1864735639277925058</id><updated>2012-05-21T08:13:26.353+02:00</updated><title type='text'>man7.org</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.man7.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default'/><link rel='alternate' type='text/html' href='http://blog.man7.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default?start-index=26&amp;max-results=25'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>165</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-457426781541204473</id><published>2012-04-09T10:38:00.000+02:00</published><updated>2012-04-09T10:38:00.667+02:00</updated><title type='text'>TLPI third print run now available</title><content type='html'>I'm happy to announce that the third print run of TLPI is now printed, and should be available for sale shortly. The third print run incorporates &lt;a href="http://man7.org/tlpi/errata/errata_by_print_run.html#pr3_fixes"&gt;these 131 errata&lt;/a&gt; shown on the errata page. (If that seems like a lot of errata, take a look at &lt;a href="http://man7.org/tlpi/faq/index.html#many_errata"&gt;this FAQ.&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-457426781541204473?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/457426781541204473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2012/04/tlpi-third-print-run-now-available.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/457426781541204473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/457426781541204473'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2012/04/tlpi-third-print-run-now-available.html' title='TLPI third print run now available'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-8611823930624566758</id><published>2012-03-13T07:55:00.000+01:00</published><updated>2012-03-14T04:09:06.344+01:00</updated><title type='text'>Kernel capability usage statistics</title><content type='html'>The idea of &lt;a href="http://man7.org/linux/man-pages/man7/capabilities.7.html"&gt;capabilities&lt;/a&gt; is to break the power of &lt;i&gt;root&lt;/i&gt; (user ID 0) into independently assigned pieces governing specific privileged operations. Implicit in that model is that the set of privileged operations governed by each capability should be small (otherwise, why break the power of &lt;i&gt;root&lt;/i&gt; into pieces at all?). However, that implication hasn't turned out to be true in practice.&lt;br /&gt;&lt;br /&gt;Table 1 shows some statistics on the use of the 36 currently existing capabilities in the C files of the Linux 3.2 kernel source code. The "#uses" column is the number of uses of the capability across all source files; the "#files" column is the number of distinct source files where the capability is used.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Table 1: Breakdown of Linux capability uses in Linux 3.2&lt;/b&gt;&lt;br /&gt;&lt;table border="1" cellpadding="3" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;Capability&lt;/b&gt;&lt;/td&gt;&lt;td align="right"&gt;&lt;b&gt;#uses&lt;/b&gt;&lt;/td&gt;&lt;td align="right"&gt;&lt;b&gt;#files&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_AUDIT_CONTROL&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_AUDIT_WRITE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_CHOWN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_DAC_OVERRIDE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_DAC_READ_SEARCH&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_FOWNER&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;9&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_FSETID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_IPC_LOCK&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;13&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_IPC_OWNER&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_KILL&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_LEASE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_LINUX_IMMUTABLE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;13&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;13&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_MAC_ADMIN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;25&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_MAC_OVERRIDE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;6&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_MKNOD&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_ADMIN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;395&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;182&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_BIND_SERVICE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;13&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_BROADCAST&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_RAW&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;18&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;11&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETFCAP&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETGID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;10&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETPCAP&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETUID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;451&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;229&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_BOOT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_CHROOT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYSLOG&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_MODULE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_NICE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;14&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_PACCT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_PTRACE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;11&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_RAWIO&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;67&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;42&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_RESOURCE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;36&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;24&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_TIME&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;22&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;13&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_TTY_CONFIG&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;11&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_WAKE_ALARM&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;Total&lt;/b&gt;&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;1167&lt;/b&gt;&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;610&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;What is of course notable is the extremely heavy use of&amp;nbsp; two capabilities: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_ADMIN&lt;/span&gt;. Together, these two capabilities account for more than 70% of all uses of capabilities! The uses of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_ADMIN&lt;/span&gt; are limited to the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;drivers/&lt;/span&gt; (mainly &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;drivers/net/&lt;/span&gt;) and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;net/&lt;/span&gt; directories. On the other hand, the uses of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/span&gt;, which accounts for nearly 39% of all capability uses, are spread widely across the kernel source tree.&lt;br /&gt;&lt;br /&gt;One might wonder whether either of these two capabilities is overrepresented because of duplications in the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;drivers/&lt;/span&gt; or the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;arch/&lt;/span&gt; trees. (In particular, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/span&gt; is used for similar administrative functions on a lot of device drivers.) However, even if we strip &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;drivers/&lt;/span&gt; and architectures other than &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;x86&lt;/span&gt; from the measurements, the overall picture doesn't change greatly, as shown in Table 2.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Table 2: Breakdown of Linux capability uses in Linux 3.2, excluding drivers and architectures other than x86&lt;/b&gt;&lt;br /&gt;&lt;table border="1" cellpadding="3" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;Capability&lt;/b&gt;&lt;/td&gt;&lt;td align="right"&gt;&lt;b&gt;#uses&lt;/b&gt;&lt;/td&gt;&lt;td align="right"&gt;&lt;b&gt;#files&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_AUDIT_CONTROL&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_AUDIT_WRITE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_CHOWN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_DAC_OVERRIDE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_DAC_READ_SEARCH&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_FOWNER&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;9&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_FSETID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_IPC_LOCK&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;11&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_IPC_OWNER&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_KILL&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_LEASE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_LINUX_IMMUTABLE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;13&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;13&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_MAC_ADMIN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;25&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_MAC_OVERRIDE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;6&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_MKNOD&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_ADMIN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;167&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;73&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_BIND_SERVICE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;12&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_BROADCAST&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_RAW&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;18&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;11&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETFCAP&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETGID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;9&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETPCAP&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETUID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;167&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;80&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_BOOT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_CHROOT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYSLOG&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_MODULE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_NICE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;12&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_PACCT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_PTRACE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;10&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_RAWIO&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;10&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_RESOURCE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;26&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;18&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_TIME&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_TTY_CONFIG&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_WAKE_ALARM&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;Total&lt;/b&gt;&lt;/td&gt;&lt;td align="right" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;b&gt;552&lt;/b&gt;&lt;/td&gt;&lt;td align="right" style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;b&gt;291&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/span&gt; still accounts for 167 of 552 uses of capabilities--about 30%, and, by chance, usage of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_ADMIN&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/span&gt; is the same. &lt;br /&gt;&lt;br /&gt;It turns out that the overall picture hasn't changed that much since capabilities were first introduced with Linux 2.2 (Jan 1999). Then, there were 27 capabilities, broken down as shown in Table 3.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Table 3: Breakdown of Linux capability uses in Linux 2.2&lt;/b&gt;&lt;br /&gt;&lt;table border="1" cellpadding="3" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Capability&lt;/b&gt;&lt;/td&gt;&lt;td align="right"&gt;&lt;b&gt;#uses&lt;/b&gt;&lt;/td&gt;&lt;td align="right"&gt;&lt;b&gt;#files&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_CHOWN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_DAC_OVERRIDE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_DAC_READ_SEARCH&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_FOWNER&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;7&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_FSETID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_IPC_LOCK&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_IPC_OWNER&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_KILL&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_LINUX_IMMUTABLE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_ADMIN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;75&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;32&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_BIND_SERVICE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_BROADCAST&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_RAW&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETGID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;7&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETPCAP&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETUID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;7&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;127&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;69&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_BOOT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_CHROOT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_MODULE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_NICE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_PACCT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_PTRACE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;9&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_RAWIO&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_RESOURCE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;10&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_TIME&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;7&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_TTY_CONFIG&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;Total&lt;/b&gt;&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;298&lt;/b&gt;&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;169&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;In Linux 2.2, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/span&gt; accounted for 42% of the uses of capabilities, and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_ADMIN&lt;/span&gt; accounted for 25%.&lt;br /&gt;&lt;br /&gt;Table 4 repeats the earlier exercise of excluding &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;drivers/&lt;/span&gt; and architectures other than &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;i386&lt;/span&gt; (as the Intel &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;arch/&lt;/span&gt; directory was then named) from the Linux 2.2 data. In this case, an interesting difference emerges.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Table 4: Breakdown of Linux capability uses in Linux 2.2, excluding drivers and architectures other than i386 &lt;/b&gt;&lt;br /&gt;&lt;table border="1" cellpadding="3" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;Capability&lt;/b&gt;&lt;/td&gt;&lt;td align="right"&gt;&lt;b&gt;#uses&lt;/b&gt;&lt;/td&gt;&lt;td align="right"&gt;&lt;b&gt;#files&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_CHOWN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_DAC_OVERRIDE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_DAC_READ_SEARCH&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_FOWNER&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;7&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_FSETID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_IPC_LOCK&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_IPC_OWNER&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_KILL&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_LINUX_IMMUTABLE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_ADMIN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;44&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;23&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_BIND_SERVICE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_BROADCAST&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_NET_RAW&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;8&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETGID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;7&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETPCAP&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SETUID&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;7&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;23&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;17&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_BOOT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_CHROOT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_MODULE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_NICE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_PACCT&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_PTRACE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_RAWIO&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_RESOURCE&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_TIME&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_TTY_CONFIG&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;Total&lt;/b&gt;&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;147&lt;/b&gt;&lt;/td&gt;&lt;td align="right" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;94&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The overall picture differs in a way that I suspect is significant: just under 16% (23/147) of the uses of capabilities are &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/span&gt;. (As we saw in Table 2, by Linux 3.2, this figure had grown to 30% (167/552).) This difference suggests to me that as a series of kernel developers was faced with the question: "What capability should I use to govern my new privileged kernel feature?", the answer was often something like "I don't know; maybe &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CAP_SYS_ADMIN&lt;/span&gt;?". (That certainly fits with a few anecdotal cases I've encountered while discussing things with kernel developers as I wrote man pages for new kernel features.)&lt;br /&gt;&lt;br /&gt;The script (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;count_kernel_cap_uses.sh&lt;/span&gt;) used to generate the data for these statistics can be found &lt;a href="http://man7.org/linux/source_analysis/kernel/capabilities/count_kernel_cap_uses-120306.tar.gz"&gt;here&lt;/a&gt;. The first and third tables above are based on analysis of the "p2" output files produced by the script. The second and fourth tables are based on analysis of the "p4" output files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-8611823930624566758?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/8611823930624566758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2012/03/kernel-capability-usage-statistics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/8611823930624566758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/8611823930624566758'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2012/03/kernel-capability-usage-statistics.html' title='Kernel capability usage statistics'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-7819586491679566186</id><published>2012-02-22T03:07:00.003+01:00</published><updated>2012-02-22T03:25:57.082+01:00</updated><title type='text'>Look hard, and you can see TLPI</title><content type='html'>This is fun... I'm fairly certain that the &lt;a href="http://www.reddit.com/r/linux/comments/pzg4v/battlestation_of_linus_torvalds_xpost_from/c3tgr0e"&gt;guess by this redditor&lt;/a&gt; about what you can see sitting behind the laptop in &lt;a href="http://i.imgur.com/ktQTB.jpg"&gt;this photo&lt;/a&gt; (taken by &lt;a href="http://www.jonathanasnyder.com/"&gt;John Snyder&lt;/a&gt;, and used in &lt;a href="http://www.wired.com/wiredenterprise/2012/02/github/all/1"&gt;this 21 Feb 2012 Wired article&lt;/a&gt;) is correct. Probably, it's the copy I gave Linus last year. It's nice to know he held on to it, though I'm not so sure there's so much in the book that he doesn't already know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-7819586491679566186?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/7819586491679566186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2012/02/look-hard-and-you-can-see-tlpi.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/7819586491679566186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/7819586491679566186'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2012/02/look-hard-and-you-can-see-tlpi.html' title='Look hard, and you can see TLPI'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-9214513131815196635</id><published>2012-02-20T10:56:00.000+01:00</published><updated>2012-02-20T10:56:00.068+01:00</updated><title type='text'>Traditional Chinese translation of TLPI</title><content type='html'>The Taiwanese publisher &lt;a href="http://www.gotop.com.tw/"&gt;GOTOP&lt;/a&gt; has contracted the rights to do a &lt;a href="http://en.wikipedia.org/wiki/Traditional_chinese"&gt;Traditional Chinese&lt;/a&gt; publication of TLPI.&lt;br /&gt;&lt;br /&gt;There are now four &lt;a href="http://man7.org/tlpi/translations/"&gt;translations of TLPI&lt;/a&gt; in progress. It looks like the first of the translations that will appear will be the Korean translation, sometime around the middle of this year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-9214513131815196635?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/9214513131815196635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2012/02/traditional-chinese-translation-of-tlpi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/9214513131815196635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/9214513131815196635'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2012/02/traditional-chinese-translation-of-tlpi.html' title='Traditional Chinese translation of TLPI'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-2902698247712998374</id><published>2012-02-04T20:29:00.002+01:00</published><updated>2012-02-04T20:39:14.676+01:00</updated><title type='text'>Web site updates</title><content type='html'>I've rolled out a few updates to the man7.org web site, including a redesigned &lt;a href="http://man7.org/tlpi/"&gt;main page for TLPI&lt;/a&gt;, and the addition of several errata to the &lt;a href="http://man7.org/tlpi/errata/"&gt;errata page&lt;/a&gt;. Special thanks for a long list of error reports to &lt;span class="gI"&gt;Junjiro Okajima, who's working on the Japanese &lt;a href="http://man7.org/tlpi/translations/"&gt;translation of TLPI&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-2902698247712998374?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/2902698247712998374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2012/02/web-site-updates.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/2902698247712998374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/2902698247712998374'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2012/02/web-site-updates.html' title='Web site updates'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-904243448843528194</id><published>2012-01-16T09:09:00.001+01:00</published><updated>2012-01-16T09:09:40.409+01:00</updated><title type='text'>Third print run (and request for bug reports)</title><content type='html'>Sales of &lt;a href="http://man7.org/tlpi/"&gt;&lt;span style="font-style: italic;"&gt;The Linux Programming Interface&lt;/span&gt;&lt;/a&gt; have continued well enough that the publisher will soon start preparing the third print run. That print run will incorporate all of the &lt;a href="http://man7.org/tlpi/errata/"&gt;outstanding errata&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you've been reading TLPI and noticed any errors or typos, now would be a good time to report them, so that fixes can be included in the next printing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-904243448843528194?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/904243448843528194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2012/01/third-print-run-and-request-for-bug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/904243448843528194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/904243448843528194'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2012/01/third-print-run-and-request-for-bug.html' title='Third print run (and request for bug reports)'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-2338247965178783865</id><published>2011-12-03T07:57:00.000+01:00</published><updated>2011-12-03T08:00:23.669+01:00</updated><title type='text'>Nice discount on No Starch books</title><content type='html'>No Starch Press is doing a brief pre-Christmas sale -- 40% off all paper books, and the ebook is included for free. That's cheaper than &lt;a href="http://blog.man7.org/2011/05/no-starch-press-discount-offer-further.html"&gt;the normal discount&lt;/a&gt; offered for &lt;a href="http://man7.org/tlpi/"&gt;TLPI&lt;/a&gt;, and it applies to &lt;span style="font-weight: bold;"&gt;all &lt;/span&gt;No Starch books. But I only found out about this sale a little late: according to &lt;a href="http://nostarch.com/newsletters/2011_holiday.htm"&gt;http://nostarch.com/newsletters/2011_holiday.htm&lt;/a&gt;, the sale finishes at midnight on 3 Dec. I &lt;span style="font-style: italic;"&gt;presume&lt;/span&gt; that means midnight in California (UTC-8), about 24 hours from now. So, you might want to take a quick look at the &lt;a href="http://www.nostarch.com/catalog/"&gt;full catalog&lt;/a&gt; at No Starch.&lt;br /&gt;&lt;br /&gt;PS The publisher's costs for international shipping from the US is pretty hefty, but with the free ebooks, and if you're ordering more than one book, the prices might still beat the online bookstores even if you're shipping outside the US.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-2338247965178783865?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/2338247965178783865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/12/nice-discount-on-no-starch-books.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/2338247965178783865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/2338247965178783865'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/12/nice-discount-on-no-starch-books.html' title='Nice discount on No Starch books'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-5387035574460985390</id><published>2011-11-09T19:04:00.001+01:00</published><updated>2011-11-09T19:04:00.731+01:00</updated><title type='text'>Slides from OpenFest presentation</title><content type='html'>The slides from my &lt;a href="http://openfest.org/"&gt;OpenFest&lt;/a&gt; presentation, &lt;span style="font-style: italic;"&gt;Why kernel space sucks&lt;/span&gt;, can be found &lt;a href="http://man7.org/conf/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-5387035574460985390?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/5387035574460985390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/11/slides-from-openfest-presentation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/5387035574460985390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/5387035574460985390'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/11/slides-from-openfest-presentation.html' title='Slides from OpenFest presentation'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-8010625773230014036</id><published>2011-11-04T15:04:00.000+01:00</published><updated>2011-11-04T15:04:00.395+01:00</updated><title type='text'>Speaking tomorrow at OpenFest</title><content type='html'>The organizers very kindly invited me to speak at &lt;a href="http://openfest.org/"&gt;OpenFest&lt;/a&gt; in &lt;a href="http://maps.google.com/maps?q=Dragan+Tsankov+Blvd+36,+Sofia,+Bulgaria&amp;amp;hl=en&amp;amp;ll=42.679912,23.332558&amp;amp;spn=0.162289,0.363579&amp;amp;sll=42.685969,23.335304&amp;amp;sspn=0.162274,0.363579&amp;amp;vpsrc=6&amp;amp;hnear=bul.+Dragan+Tsankov+36,+Sofiya,+Sofiya-grad,+Bulgaria&amp;amp;t=m&amp;amp;z=12"&gt;Sofia&lt;/a&gt;, Bulgaria. My talk tomorrow is entitled &lt;span style="font-style: italic;"&gt;Why Kernel Space Sucks&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;That title is of course a reference to the highly amusing presentation of a few years ago by kernel hacker &lt;a href="http://codemonkey.org.uk/"&gt;Dave Jones&lt;/a&gt; entitled &lt;a href="http://www.kernel.org/doc/ols/2006/ols2006v1-pages-441-450.pdf"&gt;&lt;span style="font-style: italic;"&gt;Why Userspace Sucks&lt;/span&gt;&lt;/a&gt; (&lt;a href="http://member.wide.ad.jp/wg/mgp/"&gt;MagicPoint&lt;/a&gt; presentation). (For the PDF of Dave's complete paper presented at Linux Symposium 2006, look &lt;a href="http://www.kernel.org/doc/ols/2006/ols2006v1-pages-441-450.pdf"&gt;here&lt;/a&gt;; LWN.net has a nice &lt;a href="http://lwn.net/Articles/192214/"&gt;tl;dr summary&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Dave's presentation was all about the ways in which various userspace systems and applications kill performance by wasting system resources on pointless tasks. I'm not contradicting anything that Dave says, but it seems at least fair to point out that there are places where kernel space sucks too. My talk is about one of those places with &lt;a href="http://man7.org/tlpi/"&gt;special interest&lt;/a&gt; to me--the kernel-userspace programming interface--a place where kernel developers have inflicted a steady stream of small train wrecks (to borrow Dave's term) on userspace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-8010625773230014036?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/8010625773230014036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/11/speaking-tomorrow-at-openfest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/8010625773230014036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/8010625773230014036'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/11/speaking-tomorrow-at-openfest.html' title='Speaking tomorrow at OpenFest'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-1506782419979244353</id><published>2011-10-20T08:56:00.003+02:00</published><updated>2011-10-20T09:12:34.291+02:00</updated><title type='text'>LinuxCon Europe</title><content type='html'>I'll be at &lt;a href="https://events.linuxfoundation.org/events/linuxcon-europe"&gt;LinuxCon Europe&lt;/a&gt;, 26-28 October, in Prague, Czech Republic. (In fact, I arrive already on Monday, 24 October.) I'll have a few copies of &lt;a style="font-style: italic;" href="http://man7.org/tlpi/"&gt;The Linux Programming Interface&lt;/a&gt; with me for sale. If you want to buy a copy (signed even, if you want!), drop me a mail (mtk AT man7.org).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-1506782419979244353?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/1506782419979244353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/10/linuxcon-europe.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/1506782419979244353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/1506782419979244353'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/10/linuxcon-europe.html' title='LinuxCon Europe'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-70455451038947663</id><published>2011-08-14T08:54:00.004+02:00</published><updated>2011-08-14T09:00:18.941+02:00</updated><title type='text'>Linux Plumbers Conference</title><content type='html'>I'm going to be at &lt;a href="http://www.linuxplumbersconf.org/2011/"&gt;Linux Plumbers Conference&lt;/a&gt;, 7-9 September, in Santa Rosa, California. I'm looking forward to connect up with folk, and spend a couple of days in the Bay Area. I may have a limited number of copies of &lt;a style="font-style: italic;" href="http://man7.org/tlpi/"&gt;The Linux Programming Interface&lt;/a&gt; with me for sale. If you want to buy a copy directly from me (signed even, if you want!), please contact me by email by the end of this month (mtk AT man7.org).&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-70455451038947663?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/70455451038947663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/08/linux-plumbers-conference.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/70455451038947663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/70455451038947663'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/08/linux-plumbers-conference.html' title='Linux Plumbers Conference'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-8218784791022065576</id><published>2011-05-27T07:53:00.003+02:00</published><updated>2011-05-30T20:14:33.113+02:00</updated><title type='text'>Updated API Changes page</title><content type='html'>With the release of Linux 2.6.39, and the opening of the merge window for Linux &lt;del&gt;2.8.0 (&lt;/del&gt;&lt;a href="http://lwn.net/Articles/444314/"&gt;&lt;del&gt;or 2.6.40, or 3.0, or whatever&lt;/del&gt;&lt;/a&gt;&lt;del&gt;)&lt;/del&gt; 3.0, I've updated the &lt;a href="http://man7.org/tlpi/api_changes/"&gt;API changes page&lt;/a&gt; to include recent and upcoming userspace API changes in the Linux kernel. (This page covers changes since Linux 2.6.36, which was the next kernel released after the book went to press.)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Updated 2011-05-30: fixed kernel version number&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-8218784791022065576?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/8218784791022065576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/05/updated-api-changes-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/8218784791022065576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/8218784791022065576'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/05/updated-api-changes-page.html' title='Updated API Changes page'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-1408751771167142670</id><published>2011-05-18T18:42:00.000+02:00</published><updated>2011-05-18T18:42:00.499+02:00</updated><title type='text'>No Starch Press discount offer further extended</title><content type='html'>Because TLPI was temporarily out of stock while the second print run &lt;a href="http://blog.man7.org/2011/04/second-print-run-going-to-press.html"&gt;was being completed&lt;/a&gt;, No Starch Press has further extended their &lt;a href="http://blog.man7.org/2010/12/special-offer-from-no-starch-press.html"&gt;earlier discount offer&lt;/a&gt;, allowing you to order the paper version of TLPI from them at a 30% discount (i.e., a total price of US$70 plus shipping), and receive the ebook free (look &lt;a href="http://www.man7.org/tlpi/index.html#ordering"&gt;here&lt;/a&gt; for details on the ebook release). The offer is now extended to 30 June 2011.&lt;br /&gt;&lt;br /&gt;To obtain the discount (and ebook), you must buy TLPI direct &lt;a href="http://www.nostarch.com/tlpi/"&gt;from the publisher's web site&lt;/a&gt;, and quote the coupon code &lt;strong&gt;Mamaku&lt;/strong&gt; (&lt;a href="http://blog.man7.org/2009/12/working-towards-cover.html"&gt;what's that?&lt;/a&gt;). (No Starch Press is located in San Francisco, so international shipping rates will apply for readers outside North America.)&lt;br /&gt;&lt;br /&gt;No Starch Press has the second print run in stock, so they can ship immediately.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-1408751771167142670?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/1408751771167142670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/05/no-starch-press-discount-offer-further.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/1408751771167142670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/1408751771167142670'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/05/no-starch-press-discount-offer-further.html' title='No Starch Press discount offer further extended'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-5150428252175659502</id><published>2011-05-17T21:33:00.000+02:00</published><updated>2011-05-17T21:33:00.276+02:00</updated><title type='text'>Second print run now available</title><content type='html'>The second print run of &lt;span style="font-style: italic;"&gt;The Linux Programming Interface&lt;/span&gt; is now available. Sellers such as &lt;a href="http://man7.org/tlpi/index.html#ordering"&gt;Amazon&lt;/a&gt; are now restocked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-5150428252175659502?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/5150428252175659502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/05/second-print-run-now-available.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/5150428252175659502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/5150428252175659502'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/05/second-print-run-now-available.html' title='Second print run now available'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-5359654930806547349</id><published>2011-04-27T21:56:00.002+02:00</published><updated>2011-04-28T13:11:38.545+02:00</updated><title type='text'>Reworked errata page</title><content type='html'>I've reworked the &lt;a href="http://man7.org/tlpi/errata/index.html"&gt;errata page&lt;/a&gt; to use color and fonts to classify the errata into three broad types and two levels of "severity".&lt;br /&gt;&lt;br /&gt;One reason that I've done this is because there are by now quite a few errata. Another reason is because I earlier received a couple of inquiries along the lines "Because there are a lot of errata, should I wait for the second printing of the book before I buy a copy?" My response to this was "probably not", for reasons that I give below.&lt;br /&gt;&lt;br /&gt;As of today, there are 104 errata posted on the errata page. One reason that there are a lot of errata is because there is a lot of book: 1500 pages. Another reason is that I'm very conscientious about fixing and documenting all errors that I find or that are reported to me (by contrast, a lot of books don't even maintain an errata list).&lt;br /&gt;&lt;br /&gt;However, the observation that there are a lot of errata also needs to be tempered with some analysis. The current set of errata can be broken down (see the coding on the errata page) as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;5 fixes to significant code problems.&lt;/li&gt;&lt;li&gt;1 significant fix to an explanation in the text.&lt;/li&gt;&lt;li&gt;1 significant fix to a technical detail explained in the text.&lt;/li&gt;&lt;li&gt;10 minor code fixes. The corresponding code problem is minor and its solution is normally obvious to an attentive reader with a good understanding of C. (The most common culprit here was small code snippets that I wrote directly into the text--complete with syntax errors--rather than extracting directly from source files.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;24 minor technical fixes. These are typically obvious fixes to minor technical errors or imprecisions in the text. (In many cases, these issues probably wouldn't have impacted the reader's understanding of the topic.)&lt;/li&gt;&lt;li&gt;25 minor clarifications. These are improvements or fixes to minor details in the text. In many cases, the fix could simply have been omitted (the problem would have been unlikely to trouble most readers), but I took the opportunity anyway to improve the text because it was easily possible to do so.&lt;/li&gt;&lt;li&gt;38 typo fixes. Spelling and grammar corrections and obvious fixes to wording errors.&lt;/li&gt;&lt;/ul&gt;For most readers, probably only the first three categories of errata will matter--and possibly a few of those in the fourth category. In other words, the number of significant errata fixed between the two print runs is actually quite small, which is why I counseled those wondering whether to wait for the second print run that they probably didn't need to.&lt;br /&gt;&lt;br /&gt;PS Meanwhile, we look to still be on target to have the second print run ready and in shops at the start of May.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-5359654930806547349?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/5359654930806547349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/04/reworked-errata-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/5359654930806547349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/5359654930806547349'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/04/reworked-errata-page.html' title='Reworked errata page'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-1528418371505443526</id><published>2011-04-17T08:00:00.000+02:00</published><updated>2011-04-17T08:00:00.899+02:00</updated><title type='text'>Low stock</title><content type='html'>While we wait for the &lt;a href="http://blog.man7.org/2011/04/second-print-run-going-to-press.html"&gt;second print&lt;/a&gt; run to complete, it looks like some of the online booksellers (such as Amazon.com) have temporarily run out of stock. The second print run should be completed at the start of next month, and sellers will be restocked within a couple of days after that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-1528418371505443526?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/1528418371505443526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/04/low-stock.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/1528418371505443526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/1528418371505443526'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/04/low-stock.html' title='Low stock'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-3655448466634513811</id><published>2011-04-16T07:40:00.004+02:00</published><updated>2011-04-17T08:32:23.375+02:00</updated><title type='text'>man7.org down this weekend</title><content type='html'>Currently, &lt;a href="http://www.jambit.com/welcome-at-jambit?set_language=en"&gt;the company&lt;/a&gt; where I work and host my website is going through a move of offices. As a result, access to the &lt;a href="http://man7.org/"&gt;man7.org website&lt;/a&gt; will see some interruptions. Everything should be right by Monday.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update 2011-04-17: And we're back&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-3655448466634513811?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/3655448466634513811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/04/man7org-down-this-weekend.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/3655448466634513811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/3655448466634513811'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/04/man7org-down-this-weekend.html' title='man7.org down this weekend'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-4235260737995484428</id><published>2011-04-11T20:24:00.004+02:00</published><updated>2011-04-16T07:40:42.292+02:00</updated><title type='text'>Second print run going to press</title><content type='html'>Last December, &lt;a href="http://blog.man7.org/2010/12/next-print-run-and-request-for-bug.html"&gt;I wrote&lt;/a&gt; that we'd be preparing the second print run of the book soon. That time window changed a bit, mainly because it turned out that the lead time with the publisher became much shorter than we expected, so that it was possible to delay preparation of the print run until later. By now however, reserves from the first print run have run low enough that the files for the second print run have already gone to the publisher, and will emerge from the presses in a few weeks time.&lt;br /&gt;&lt;br /&gt;The new print run will incorporate all of the errata reported up to the end of March, and I have now reorganized &lt;a href="http://man7.org/tlpi/errata/"&gt;the main errata page&lt;/a&gt; so that it breaks the errata down by the print run in which they were applied (as well as a list of errata queued for the next print run).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Updated 2011-04-16 to fix a wording error.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-4235260737995484428?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/4235260737995484428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/04/second-print-run-going-to-press.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/4235260737995484428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/4235260737995484428'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/04/second-print-run-going-to-press.html' title='Second print run going to press'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-7368129434213122463</id><published>2011-04-08T07:40:00.000+02:00</published><updated>2011-04-08T07:40:00.612+02:00</updated><title type='text'>Using TLPI in a university course? Let me know</title><content type='html'>&lt;p&gt;I didn't specifically target TLPI at the university     market as I wrote it. But, by now I've had emails from a number of university     teachers who are using TLPI as a required text or as     recommended reading for courses on Linux or UNIX system programming.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you are a teacher or a student using TLPI in a university course, I'd love to hear about it. In particular,  I'm very interested to find out more details about how TLPI is being used as a course book, with the idea in mind of improving a future     edition of the book for use in that market. If you're a teacher or a student using TLPI, take a look at the questions &lt;a href="http://man7.org/tlpi/academic/"&gt;here&lt;/a&gt;, and drop me a mail.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-7368129434213122463?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/7368129434213122463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/04/using-tlpi-in-university-course-let-me.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/7368129434213122463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/7368129434213122463'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/04/using-tlpi-in-university-course-let-me.html' title='Using TLPI in a university course? Let me know'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-3943235078855990920</id><published>2011-04-06T06:30:00.000+02:00</published><updated>2011-04-06T06:30:01.048+02:00</updated><title type='text'>Training course details posted on my web site</title><content type='html'>I've posted the full training course outline for the Linux/UNIX system programming course that I teach on my web site. You can find it &lt;a href="http://man7.org/training/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-3943235078855990920?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/3943235078855990920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/04/training-course-details-posted-on-my.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/3943235078855990920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/3943235078855990920'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/04/training-course-details-posted-on-my.html' title='Training course details posted on my web site'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-302743878500745746</id><published>2011-04-05T20:01:00.001+02:00</published><updated>2012-02-18T02:55:33.332+01:00</updated><title type='text'>Japanese translation of TLPI</title><content type='html'>&lt;a href="http://www.oreilly.co.jp/"&gt;O'Reilly Japan&lt;/a&gt; have reached an agreement with No Starch Press to do a Japanese translation of TLPI. I'll add some more details on the web site when I have them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Update, 2012-02-18: It's likely that this translation will be published toward the end of 2012. Ongoing information about this and other translations can be found on the &lt;a href="http://man7.org/tlpi/translations/"&gt;TLPI translations page&lt;/a&gt;.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-302743878500745746?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/302743878500745746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/04/japanese-translation-of-tlpi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/302743878500745746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/302743878500745746'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/04/japanese-translation-of-tlpi.html' title='Japanese translation of TLPI'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-7244117526252390260</id><published>2011-03-06T21:06:00.000+01:00</published><updated>2011-03-06T21:06:00.320+01:00</updated><title type='text'>Portability versus innovation</title><content type='html'>&lt;a style="font-style: italic;" href="http://lwn.net/Articles/430598/"&gt;Choosing between portability and innovation&lt;/a&gt;, is an article on LWN.net by Koen Vervloesem that nicely summarizes the debate about portable application development versus (non-portable) innovation based on a single platform (i.e., Linux).&lt;br /&gt;&lt;br /&gt;Although the benefits of portable programming are clear, I also have some sympathy for &lt;a href="http://fosdem.org/2011/interview/lennart-poettering"&gt;Lennart Poettering's position&lt;/a&gt; (which also gave a nice nod to TLPI):&lt;br /&gt;&lt;blockquote style="color: rgb(102, 51, 0);"&gt;In fact, the way I see things the Linux API has been taking the role of  the POSIX API and Linux is the focal point of all Free Software  development. Due to that I can only recommend developers to try to hack  with only Linux in mind and experience the freedom and the opportunities  this offers you. So, get yourself a copy of &lt;a href="http://man7.org/tlpi/"&gt;The Linux Programming Interface&lt;/a&gt;, ignore everything it says about POSIX compatibility and hack away your amazing Linux software. It's quite relieving!&lt;/blockquote&gt;I wrote TLPI in such a way that it could be used for programmers whose goal was portability (to the point that it should be useful even to programmers actually working only on UNIX platforms other than Linux). However, as Lennart suggests, TLPI can equally be used in the converse way: as a guide to fully exploiting the features of Linux, without worrying about portability.&lt;br /&gt;&lt;br /&gt;Writing TLPI so that it could be used in these dual roles seemed (and still seems) appropriate for the current circumstances. But, by the time it becomes  necessary to do a revision of TLPI, it'll be interesting to see if the operating-system landscape has changed to such an extent that Lennart's argument becomes even more compelling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-7244117526252390260?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/7244117526252390260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/03/portability-versus-innovation.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/7244117526252390260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/7244117526252390260'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/03/portability-versus-innovation.html' title='Portability versus innovation'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-8014141373889767038</id><published>2011-02-17T19:33:00.000+01:00</published><updated>2011-02-17T19:33:00.472+01:00</updated><title type='text'>No Starch Press discount offer extended</title><content type='html'>No Starch press has extended their &lt;a href="http://blog.man7.org/2010/12/special-offer-from-no-starch-press.html"&gt;earlier discount offer&lt;/a&gt;, allowing you to order the paper version of TLPI from them at a 30% discount (i.e., a total price of US$70 plus shipping), and receive the ebook free (look &lt;a href="http://www.man7.org/tlpi/index.html#ordering"&gt;here&lt;/a&gt; for details on the ebook release). The offer is now extended to 30 April 2011 (this is a final deadline).&lt;br /&gt;&lt;br /&gt;To obtain the discount (and ebook), you must buy TLPI direct &lt;a href="http://www.nostarch.com/tlpi/"&gt;from the publisher's web site&lt;/a&gt;, and quote the coupon code &lt;strong&gt;Mamaku&lt;/strong&gt; (&lt;a href="http://blog.man7.org/2009/12/working-towards-cover.html"&gt;what's that?&lt;/a&gt;). (No Starch Press is located in San Francisco, so international shipping rates will apply for readers outside North America.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-8014141373889767038?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/8014141373889767038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/02/no-starch-press-discount-offer-extended.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/8014141373889767038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/8014141373889767038'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/02/no-starch-press-discount-offer-extended.html' title='No Starch Press discount offer extended'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-1289767334314978524</id><published>2011-02-15T22:14:00.000+01:00</published><updated>2011-02-15T22:15:05.861+01:00</updated><title type='text'>All ebook formats now available</title><content type='html'>The full range of ebook formats is now available: PDF, ePub, and mobi. These formats are currently all on sale on the No Starch and O'Reilly web sites, and will also soon be available through online booksellers as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-1289767334314978524?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/1289767334314978524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/02/all-ebook-formats-now-available.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/1289767334314978524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/1289767334314978524'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/02/all-ebook-formats-now-available.html' title='All ebook formats now available'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1864735639277925058.post-8766125242864314357</id><published>2011-01-20T19:33:00.006+01:00</published><updated>2011-01-20T19:44:49.835+01:00</updated><title type='text'>ebook status</title><content type='html'>Some days ago, No Starch Press &lt;a href="http://www.nostarch.com/tlpi/"&gt;started selling an ebook&lt;/a&gt; version of TLPI. The ebook is also provided for free when you buy a paper copy of TLPI from No Starch (&lt;a href="http://man7.org/tlpi/index.html#ordering"&gt;look here for coupon&amp;mdash;valid until end of February&amp;mdash;that provides a publisher discount&lt;/a&gt; for the book+ebook package).&lt;br /&gt;&lt;br /&gt;Currently, the ebook is available only in PDF form and only from No Starch. However, a full range of other ebook formats is currently in production, and when those formats are available they will be sold through the usual retail channels (and made available to No Starch customers who already have the ebook). I expect those other formats to be available around mid-February.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1864735639277925058-8766125242864314357?l=blog.man7.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.man7.org/feeds/8766125242864314357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.man7.org/2011/01/ebook-status.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/8766125242864314357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1864735639277925058/posts/default/8766125242864314357'/><link rel='alternate' type='text/html' href='http://blog.man7.org/2011/01/ebook-status.html' title='ebook status'/><author><name>Michael Kerrisk</name><uri>https://profiles.google.com/116363152901077806425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5D3iGLw_pIQ/AAAAAAAAAAI/AAAAAAAABJ0/vhl1xs2GfjM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
