This is intended to help explain the fundamentals of the Linux system and thus how to begin using one for leisure or business.
This was an issue that caused me trouble to begin with. Somehow I managed to skip this part of learning Linux initially and thus cause me confusion later down the track. The Linux file system makes a lot of sense but works quite differently from your familiar Windows drive letter system.
The first thing you need to do is clean out the idea of drive letters. This is a concept only introducted by Windows and doesn't exist anywhere else in the computer world.
The Linux file system (like many others) is a hierarchical system starting at / as the top of it all. To put it another way, / (a forward slash) is the core of your file system, it's where everything else is referenced from and denotes a folder. A user's 'home' directory (a place a user is put by default when opening a file browser of some sort and the area of the systems hard disk that a user can call their own and put/do anythying with/to) is located, under the 'root' or core of the file system (/) as /home/<username>. for example:
If my user name was david then my home would be in:
/home/david
To further help explain this concept, an important concept to understand. You can think of / as like C:\ in Windows except that there is no D:\ or E:\ or Z:\ EVERYTHING resides under / if it's not under / then it does not exist. Sounds like an extreme comment that may have some exceptions ?? Think again. Abolutely EVERYTHING resides under / anything from your home folder to configurations of programs to physical devices to network shares and current running processes. Please re-read this again, even if you 'think' you get it :)
Now what and where things reside under / aren't terribly important to get started, just understanding the idea of this and thus knowing where to go if something says copy a file into /etc/system/ will help you greatly in using a Linux system.
This is the second of two issues i had managed to skip past when first starting with Linux. All files and folders in Linux have permissions set on them much like Windows does. Permissons simply means a way to govern who can read, write and execute certain files and folders. Its a way to keep curious users out of yuor home directory and other users out of system configuration files.
The system works on the concept of there being owner, group and other. This mean someone can own a file/folder and have rights to it; a group has certain access rights; everyone else has another. These 'rights' or permissions are broken into 3 types (previously mentioned): Read, Write and Execute. They are listed in that order, for example:
rwxrwxrwx 1 david david 3717212 Jan 25 13:58 storage/Programs/gaim-1.1.1-1.101mcnl.i586.rpm*
The first 9 letters displays the permissions. the first 3 letters are the owners rights on the file, the next 3 are the groups rights and lastly the final 3 are everyone elses or world's permissions on the file. To break that down more closely rwxrwxrwx means that the owner has Read, Write and eXecute permissions of this file; rwxrwxrwx means the group that owns this file (which means every member thats listed in that group) has Read Write and eXecute permissions; and lastly rwxrwxrwx means the whole world can Read it, Write to it and eXecute it.
Very often errors in the running of programs can be traced back to a simple persmission error. This is because many programs run as their own user account such as Postfix mail server runs as user 'postfix' Apache web server will run as user 'apache' and so forth. Therefore for apache to run right it needs to be able to read its configuration files and write to folders that its working in, if the permissions are set where someone else owns these files and only the usr have permission to read or write to the that file/folder you will have errors in starting the program.
To change the permissions on files that you own (or don't own but you are the root user and allowed to do anything) you can access the properties of the file/folder (see fig 1.) and set them there. Alternative you can use a terminal. Don't be scared, its easy. Simply cd (see appendix) to the file and issue something like chmod <who>+/-<permission> where who is either:
So putting this together we can add the write permission for the owner of the file with chmod u+w <filename>. Or we could add the read permission for the rest of the world (other) with chmod o+r <filename>. Or we can remove the read permission for the rest of the world with chmod o-r <filename>.
This all translates to a numercial system as well. 4 is read 2 is write and 1 is execute where the addition of the permissions is used. For example 4 would mean read, 6 would mean read+write (4+2), 5 would mean read+execute (4+1), 7 would mean read+write+execute (4+2+1) and 3 would mean write+execute (2+1). Any combination can be used. These then line up with user, group and world, for example: chmod 755 hello.txt would give the file 'hello.txt' permission of read+write+execute for the owner and read+execute for both the group members and other/rest of the world. Put in another way chmod 755 would give rwxr-xr-x when listing the file.
This may be beginning to sound complicated and i recommend you use your particular distributions (flavour or brand of linux) Graphcial manger to change permissions, at least to start with.
In Linux systems all the configurations (or settings) you set for programs and personal effects are stored in simple, plain, old text files. The layout of them have a similiar theme but each are generally unique. Most have comments in them (lines of text that the program will ignore when reading the file but humans can read it) that help explain the settings in them.
This may make the whole setting of settings a tedious task. Indeed it is different to the way Windows does it, but has its advantages.
As you can see there are many advantages here with the only disadvantages that i see being:
Thats basically it on this matter as each particular config file and thus program has different settings; a little googling and reading of the comments in the config file should get you started on each particular programs config file or try issuing the command "man <config-files-name>.
Some common config files are:
The concept to learn here though is that configurations or settings for programs or anything are kept in configuration files or config files. These are mostly kept in /etc for system wide settigns or in your home (~/) as a hidden file (preceeds with a dot) for personal settings.
Using a terminal is nothing to be afraid of. Unlike DOS, bash helps you along the way and damn near does all the work for you. So go ahead and open up a terminal. There could be any number of flavours of terminals on your system such as:
To begin with, here are some main commands and description you should learn first:
ls short for lists, lists everything in your current folder/directory.
pwd Print Working Directory, prints to the screen where you currently are in your system.
cd Change directory, moves you to a folder of your choice.
su substitute user, become root user. If done with a user name after it, means your becoming that user.
exit exit that user, or if you have ssh'd into another system, exit that system.
For those that have used DOS before, if shouldn't be hard to pick up. But for new user who hasn't seen a termnal or MS-DOS prompt, this might all seem a bit daunting. The bash shell helps out as much as it can. Try by typing pw and hitting the <TAB> key. You will see that it either complete the command to pwd or if you were root, offer you a few options of what you meant. Try hitting <TAB> with nothing entered yet. There's a few commands to your disposal isn't there?
The <TAB> key auto completion is invaluable when using the
command terminal and is relied upon by many people.
Another point to mention here is that you can execute programs from
anywhere. You dont need to in the directory that executable
program resides to launch it.
One more note to make before closing. Trying pushing the up arrow on your keyboard. That could come in handy couldn't it ???