To be honest I don't understand some of the apparent fascination for having books about FreeBSD. Don't get me wrong here: they can definitely provide useful information which can help you to sort things out. But you really don't need to know the contents of a whole book to "use FreeBSD". In fact, if you'd try to do that then I think you're being counter-productive.
Because let's ask ourselves this: What actually involves "using FreeBSD" for you?
This can be something completely different depending on your needs. And sometimes it doesn't actually involve FreeBSD at all. Maybe you want to run a webserver? Cool stuff, but then you're not looking at how to use FreeBSD perse, what you want to learn is how to set up and manage the webserver of your choice. A majority of time will be spend on configuring the webserver and testing this out, and a small part of that would involve FreeBSD itself.
At its very core I'd say that "using FreeBSD" roughly involves a few main steps:
- Installing the OS.
- Knowing how to configure base services (/etc/defaults/rc.conf) and settings.
- Setting up SSH to logon securely, using crontab to perform specific tasks at given times, using newsyslog to manage your stuff in /var/log, etc.
- Installing & removing software.
- pkg, pkg-info, pkg-add, pkg-install, pkg-delete.
- Optionally there's a configuration aspect to address as well.
- Understanding the concept of the base system and /usr/local is also important here.
- Securing your environment against abuse.
- Knowing about file & directory permissions.
- Knowing about filesystem settings and limitations (
mount -ur /usr/src
, mount -o noexec /tmp
).
- Knowing about extended permissions (
chflags schg <myfile>
, setfacl -d -m g:admins:rwx dir
(blatant copy from setfacl(1))).
- Knowing about sockets and 'listening services' (
sockstat -l
).
- Knowing about the available firewalls, picking one which best suits your needs and then learning more about that one.
- Understanding that root is different and best left alone.
- Knowing how to get around your OS.
- cd, ls, mount, du, su, fuser, sockstat, swapinfo, w, top, wall, more (or less), etc.
- Learn how your shell works (/bin/sh) or picking one which best suits your needs.
- Still learning how /bin/sh works because a majority of all shell scripts on FreeBSD use it.
- Becoming somewhat familiar with /bin/csh because root likes it
Now how could you possibly achieve such an obviously complicated task? Surely you need books and study material to even come close?
Each to their own, but I'd say:
naaah. What you need is the drive to get your hands 'dirty' and the knowledge where to get the reference material you might need which can show you how to use whatever you want to use.
And I have to agree with
lebarondemerde above: it all starts with
man(1), together with an equally important command:
apropos(1).
The most important aspect of "learning how to use FreeBSD" is learning / understanding where to find the relevant information you need to carry out your task(s). And that part is
definitely first and foremost handled by the manualpages.
And sure, it's not always easy. So here I am on a "strange" command line yet I do know one thing: I want to add a new user. But how?
Code:
peter@zefiris:/home/peter $ apropos add user | wc -l
675
That seems like a bit much to go through! But wait... actually reading
man(1) taught me that there were different sections; 9 in total. 1 is the 'General commands' section but 8 is the "System Manager's Manual". And wouldn't you agree that adding a user to your system is the task of the system manager?
If only we could limit our search to... ah, here it is (from
apropos(1)):
Code:
-s section
Restrict the search to the specified section of the manual. By
default, pages from all sections are shown. See man(1) for a
listing of sections.
So let's try that again, shall we?
Code:
peter@zefiris:/home/peter $ apropos -s 8 add user | wc -l
40
peter@zefiris:/home/peter $ apropos -s 8 add user | head -n 5
adduser(8) - command for adding new users
ip6addrctl(8) - configure address selection policy for IPv6 and IPv4
nfsuserd(8) - load user and group information into the kernel for NFSv4 services plus support manage-gids for all NFS versions
rmuser(8) - remove users from the system
adding_user(7, 8) - procedure for adding new users
And voila
I obviously need
adduser(8).
It takes getting used to, I'm sure, but in my not so humble opinion
this is the way into FreeBSD and any other solid Unix environment.
Those 5 steps I mentioned earlier are definitely important, but the key to get there lies in understanding how to use
man, how the synopsis of the manual pages is set up and... understanding that sometimes the best part about a manualpage is its '
SEE ALSO' section which can point you to other related programs and/or tasks.
Now sure.. sometimes this approach doesn't work. It's not always as clean cut as I described here. For example; try using this system to learn how to compile (or build) the kernel and I think you'll fail. But that's what the handbook is for: filling in those gaps. This is why
lynx exists on my system, why I maintain
/usr/doc and why just running
lynx
takes me to the handbook on all of my servers.
... where I can find chapter 8: Configuring the FreeBSD kernel.