Style Cleanup Required
This document is intended to help power users from other operating systems understand Ubuntu, which offers some very attractive features for power users.
Are you a power user?
A power user is a person who is able to use a computer system in an advanced capacity. Power users generally have a good knowledge of the system that they use.
Features for power users
Ubuntu is usually targeted to home users with little to no computer knowledge. Most administrative tasks are nicely hidden by a GUI, which helps new users learn the Ubuntu operating system fast. For most users this is fine but some will want to use tools that allow much more control. Thankfully, under the nicely polished graphical interface lies the power of Unix and Linux. In this section I will try to describe some of the power tools available to users under Ubuntu. This document is targeted to users who are probably very experienced with other operating systems but are relatively new to Ubuntu, Linux and Unix in general. Hopefully this document can clear up some of the jargon us Linux/Unix geeks use all the time. (Please add suggestions at the end of this document. I want to know what you would like to learn)
The Bash Shell
The Shell, what is it?
Wikipedia defines the shell as follows: "A Unix shell, also called 'the command line', provides the traditional user interface for the Unix operating system. Users direct the operation of the computer by entering command input as text for a shell to execute. Within the Microsoft Windows suite of operating systems the analogous program is command.com, or cmd.exe for Windows NT-based systems. In Gnome, the shell is accessible by clicking on Application->Accessories->Terminal. I suggest dragging and dropping the terminal into the top bar for easy access. After a couple of times using it you will become addicted to it. (ED: For those you are currently scared or disgusted by the fact that they might have to touch a command prompt at some point: The Linux shell is not MS-DOS. It is better, more powerful, and tons of fun. Most tasks on Linux can now be done in the GUI but the shell will give you much more control. It is often faster to type a command than to use a graphical user interface.)
For more info check out BasicCommands
One interesting feature of the shell is that it is highly scriptable. Shell scripting is similar to batch scripting on DOS. The shell's language which is a mix of commands and built-in functions is extremely useful in system administration tasks such as automatisation of repetitive tasks. But the Bash shell language can be used to program very complex programs (I had a friend who solved the 8 queen problem in bash. Awesome!). You can learn more about bash scripting from various sources:
Advanced Bash-Scripting - A tutorial for users with no prior scripting or programming experience.
Of course, programming languages like perl, python and ruby might be more convenient for large projects but Bash scripting is available and quite speedy for small scripts. All services or daemons on Ubuntu have a startup script written in bash that can be found in /etc/init.d/ .
So the shell is great but what else, besides listing files, can it do? Much much more. Click on the following sections for more commands and techniques to use :
For Windows Power Users
How to share files
Ubuntu can easily share files between both Windows and other Unix systems such as OS X and Solaris. To share folders between Windows and Linux clients, take a look at Samba. A guide specific to Ubuntu can be found here: SettingUpSamba
While sharing folders between Unix machines can be done easily with samba, it is more common to use NFS. Check out this guide to set it up: SettingUpNFSHowTo.
DOS vs Linux Command Prompt(shell in Unix speak)
Some of you might have some experience with DOS and still may remember all those dir, chdir... commands. Without going into the details, the command prompt in Linux is more robust than DOS. Here is a small conversion sheet to help you out: http://www.faqs.org/docs/linux_intro/app2.html
What about computers that are not on your local network? SSH has some nifty tools that you can use to securely (meaning encrypted) transfer files. Check out the SSH how to here: SSHHowto. Since SSH is so important here is a quick start up guide.
- Install the openssh-server package.
From Windows you can use PuTTY(http://www.chiark.greenend.org.uk/~sgtatham/putty/) to issue commands remotely and transfer files.
- On another Linux computer, Use the 'Connect to Server' tool under the Places menu to connect to an SSH server. Select SSH from the drop down menu. Fill out the server box with the IP or DNS name of the server. Also in the folders section put /home/YourUsername to go to your home folder on the particular machine.
- Alternatively, use the scp command (look up the manual page by using man scp in a terminal) to transfer files.
Understanding the operating System
You may hear a lot of folks saying things like "Linux is an operating system", which is incorrect. Linux is only the kernel part of the operating system, which is the equivalent of the NT kernel on WindowsXP or Darwin on OS X. So what does the kernel do? Read the following guide: LinuxKernel (under construction) for a better understanding. So what then can you consider the operating system? Well quite frankly, it is not clearly defined in Computer Science, but for our discussion consider Ubuntu to be the Operating System. So you already got familiar with the Shell now lets look at other topics.
There are two different (but related) things that are considered filesystems. One is the way your files are stored on disk at the lowest level. think of NTFS and FAT32 on Windows. There are multiple Filesystems that linux uses. The most common is EXT3. Which is a safe choice if you ever decided to pick one of them. Another popular choice is ReiserFS. While ReiserFS is fast with super small files (Like 4kb or something) it's not much better than EXT3 in my personal opinion. Take a look at LinuxFileSystemExplained for more info.
Next lets talk about the Linux Filesystem structure. First, everything starts at / (called root (think of a inverted tree)). Under root (/ from now on) you will find everything. Here is a list of the most important stuff you will need:
- /home : Under there each "real" system users have their personal folder containing all of their files and personal configurations.
- /etc : This folder is for system configuration files. Most core system applications have configuration files here. You can use your favorite text editor to modify them (much better than delving into the registry on Windows in my opinion)
- /usr : Contains most of the application files. Think of Program Files on Windows
For an extensive list check this wiki page : LinuxFileSystemTreeOverview
All application and system utilities are called processes when they are started (Think services on Windows and Applications in the task manager). There are many processes and they are organised in a tree-like fashion. Think of it this way:
- You start a terminal and type the ls command. What happens is that the shell will start a new process which in turn executes ls. This processes is the child of the shell.
All processes are childs or "init" (the all-master process). Type pstree in a terminal to see this tree structure. All processes have a process id number which you can find by typing the ps command (ps aux will list all process on the system using a pipe grep to find a specific process by its name or owner.) To stop a process that is not responding you can use the kill command (kill "process id goes here")
Linux is a pretty robust operating system but it is not completely secure. No network-capable Operating System is secure. But with this in mind, Linux has great security features that you should know about. For example, Linux's iptables tool and kernel modules allow for pretty complex and robust firewalls to be built.
Here is an overview of what you can use to keep your system secure:
Users and Groups
The default Linux authentication system is quite simple. All users have a line in the /etc/passwd file and all groups have a line in the /etc/group file. You can use the tool under system->administration-users to add and remove groups or users. Also Linux has 2 very useful commands to create these:
- useradd ex: sudo useradd nic
- groupadd ex: sudo groupadd nic (refresher:what runs inside the terminal is a shell)
(ps. you should look at the man pages for all the options you can setup. Useful ones include -g and -G to setup the users initial group and all of the other groups he is part of.)
To remove users and groups use the following commands:
Linux also supports network authentication. The classical way is to use NIS which is sort of deprecated because it is not very secure (the information is sent unencrypted). But since it is quite easy to setup, it is usually a nice way to go for home setups. Look up the how-to here: SettingUpNISHowTo.
If you need a more scalable and secure solution, take a look at LDAP. Ubuntu can run multiple Ubuntu servers such as Fedora Directory and OpenLDAP. A guide to setting up Ubuntu to authenticate against OpenLDAP can be found here: LDAPClientAuthentication.
You can use the program called Firestarter in the Universe repository to set up and use a simple but powerful personal firewall. (Check the "Manage Repositories" section of the SynapticHowTo to enable the Universe repository) I personally use Firestarter on all of my work stations and I also use it to create nice scripts for my servers.
You might want to look at the IptablesHowTo to learn about the depth of Iptables firewalling.
Ubuntu as a Server
Ubuntu is a nice desktop operating system but it is also an awesome server operating system. Ubuntu has a large number of server packages that will allow you to setup a wide variety of server types. Common things that a power user might like to setup are: Home file server, mail server, web server...
Of course there are many more cool things that you can do. Ubuntu can easily become a VoIP PBX using Asterisk. For a comprehensive list of server packages follow this link: Servers. Most of those packages have a wiki page that explains their setup and usage.
Power user applications
Below is a list of applications and packages which power users may find useful:
Brightside - Adds reactive corners to your desktop
Sabayon - Graphical user account template editor
Pessulus - Security lockdown editor
hal-device-manager - Overview of devices attached to the system
GParted - Graphical disk partition editor
gconf-editor - Editor for GNOME (GConf) settings, similar to Windows' regedit (see GConfEditor)
bum - Boot-Up Manager, similar to Windows' msconfig
deskbar-applet - Powerful multiple search-engine interface