home *** CD-ROM | disk | FTP | other *** search
-
-
- A Beginner's Guide To Unix
- --------------------------
-
- The information contained in this file
- is by no means new or original. I was
- simply asked to compile some basic
- commands and concepts for the access
- and use of Unix systems. I would like
- to give credit to the many other files
- which I have gained this information
- from, and to the people who have helped
- me learn what I know today.
-
- I will not cover any detailed or
- complicated features of Unix. I am
- merely going to provide the means to
- access low-security systems and
- navigate the shell.
-
- Access:
- -------
-
- All Unix systems are provided with
- default accounts. They are used for
- system administration and such. Many
- system operators are too lazy or naive
- to remove them. You may find the
- following accounts on a system, with no
- passwords:
-
- daemon
- uucp
- bin
- adm
- sysadm
- admin
- sysadmin
- nuucp
- sync
-
- Others may have been added, such as:
-
- user
- guest
- demo
- test
- public
- help
- field
- system
- operator
-
- You can also try common first or last
- names (john,fred,smith,etc...). Be sure
- to use lowercase for the login name. If
- you enter a capital letter as the first character, the system will assume that
- you terminal is incapable of displaying
- lowercase. From then on, in order to
- enter capital letters you must precede
- each by a "\". This can become quite
- annoying, and you will probably never
- see an account with a capital letter as
- the first character.
-
- Of the above defaults, the uucp or
- nuucp accounts are often used for Unix
- to Unix communications (uucp stands for
- Unix to Unix CoPy). If this is the
- case, the system will give send the
- uucp identifier, "Shere". In this case,
- the account is basically useless
- unless you can call via another system
- through the uucp command.
-
- The sync account is a self-running Unix
- management account. If present, it will
- run a few housekeeping chores and log
- off. The only reason I included this is
- that many systems provide a greeting
- message or something of the sort when
- you log on as sync. Occasionally you
- can obtain information which will help
- you find an account.
-
- If you cannot get in via the above
- methods, try using "who". If present,
- it will display a list of all accounts
- currently online. You can try those
- and hope they have no password.
-
- If you are desperate, just hack
- blindly. Often the login name and
- password are the same. You can also
- try initials (as in names...rlb,jhs,
- etc...).
-
- Once you are in:
- ----------------
-
- If you make it through the front door,
- you do not necessarily have access to
- the shell. Often accounts have programs
- run automatically for specific users,
- such as system administration programs
- (useful), accounting programs, etc...
- In this case, you can try to break out
- of the program (either through a menu
- option or a loophole). Try various
- escape/break related control characters
- (escape [ascii 27], ctrl-c [ascii 3],
- etc...).
-
- When you are in the shell, you will be
- greeted by one of two prompts. Either
- a "$", denoting basic access, or a "#",
- denoting superuser access. If you have
- superuser access, most of your work may
- be done (depending on other security
- measures that have been taken).
- Either way, the following will help
- you get higher access.
-
- First, you'll need some basic commands
- for moving around:
-
- stty
- This command sets your terminal
- characteristics. Before you attempt
- anything else, you should set some
- important ones. First, your delete
- character. Many systems do not use
- the common ctrl-h [ascii 8]. Also,
- the delete on your computer may not
- be the standard ctrl-h. To set your
- delete character, type:
-
- stty erase (character)
-
- Do not use the parentheses. Spacing
- is important. You can replace
- (character) by hitting your own
- delete key, or typing a control key
- sequence.
-
- If you would like to enter something
- a bit more visual to reassure
- yourself, you can use:
-
- stty erase \^(character)
-
- To enter a control character without
- actually hitting control. Replace
- character with the desired control
- character. Ex:
-
- stty erase \^h
-
- Sets the erase character to ctrl-h.
-
- If you make a mistake doing this,
- hit return and start over
- (obviously if the system does not
- know your erase character, you
- cannot edit your mistakes).
-
- Once your control character is set,
- you will want to set your break
- character. This is vital for file
- editing, which we will cover
- shortly. To set the break character,
- type:
-
- stty intr (character)
-
- The same options as the delete
- character apply.
-
- To view the current setting, simply
- enter stty by itself. Often, the
- system will already be configured to
- your liking. Occasionally, the stty
- command will not display the erase
- or break (intr) characters, in which
- case you should enter them to be
- sure. All control characters will be
- displayed in the ^(character)
- format.
-
- ls
- This is the list-files command. It
- will show the names of all non-
- hidden files in the current
- directory. The display will either
- be a single list or multi-column
- display. The command lc toggles
- between the two. In either case, the
- files will be sorted alphabetically
- (numbers first, followed by most
- punctuation symbols, then capital
- letters, and finally lowercase
- letters).
-
- ls has many options, which I will
- cover later.
-
- pwd
- Displays the current directory path
- from the root directory (/).
-
- cd
- Change directory. Those familiar
- with the MS-DOS environment will
- have no trouble with this command.
- To change directories, simply supply
- a path from the root directory.
- To go to the "lib" directory, within
- the "usr" directory, you would
- enter:
-
- cd /usr/lib
-
- cat
- Displays a file. Often it is
- difficult to differentiate between
- text files and data files. If you
- wish to abort the display, type
- your break character.
-
- Cat requires the full pathname to
- access files outside the current
- directory, but for files within
- the current directory, the filename
- will suffice.
-
- Ex:
-
- cat /etc/passwd
-
- Will display the passwd file within
- the etc directory. This file is
- present on all systems. It is
- immensily useful in gaining higher
- access (basically, it is necessary
- to gain any access).
-
- These commands will help you for now.
- After setting your terminal options,
- enter:
-
- cd /etc
-
- We will be doing most of our work in
- there for the time being. You should
- have had your buffer on long before
- this on the system, but turn it before
- executing the following command if you
- haven't:
-
- cat /etc/passwd
-
- Often these files are quite large, so
- after a while you may want to abort it.
- Often what you are looking for will be
- within the first few lines.
-
- Each line of the passwd file represents
- an individual user. There are seven
- fields to each entry. A typical entry
- looks like this:
-
- user:x:100:100:Elmo:/usr/user:/bin/sh
-
- The first field is the login ID. The
- second is the password field. In newer
- releases, it will contain an "x". Older
- releases may contain the actual
- encrypted password (a string of
- seemingly random characters). On new
- systems the encrypted password are
- found in the /etc/shadow file. The
- third field is the user ID number.
- Fourth is the group ID number (more
- on groups later). Fifth is merely a
- comment about this user (often their
- name, or in an administrative account,
- its duties). Sixth is the home
- directory. The system will place you
- in your home directory when you log on.
- The final field contains the path and
- file names for the default shell or
- program. If this field is empty, the
- system defaults to /bin/sh.
-
- You cannot gain a user's password via
- this file. You may be able to obtain
- access through a higher account,
- however. When looking for high-level
- accounts, you will want to examine the
- fourth field. The lower numbers often
- denote administrative accounts. The
- group "root" belongs to is most likely
- what you will want.
-
- To discover more about the groups, view
- the /etc/group file. This contains the
- group names, the encrypted password
- required to change into/out of this
- group (almost always "NONE"), the group
- ID number (to compare to the passwd
- file), and a list of the group's
- members.
-
- You will want to scan the passwd and
- group files to find any accounts that
- belong to the same group as root, or
- a group which root is in. Often root
- will be the only member of its group,
- so you will have to look for other
- administrative account groups (those
- containing such accounts as adm,admin,
- sysadm,sysadmin and so on).
-
- Once you have found these accounts,
- you can attempt to gain their access.
- The command:
-
- su (login ID)
-
- allows you to essentially "become" that
- user. Replace (login ID), of course,
- with the account you want to assume.
- If the account has no password, the
- process is automatic. Otherwise, you
- will be prompted for a password. You
- can try the login ID as a password, but
- this may not work. If it does, make a
- note of it. Otherwise, you can try
- other methods, or go on to another
- account.
-
- Hopefully, you will find an account
- with no password. If you have found
- an older system, without the
- /etc/shadow file, an empty password
- field (::) will tell you immediately
- which accounts do not have passwords.
- If it is a newer system, it will
- contain an "x" regardless of the
- presence of the password status.
-
- If you find yourself in this dilemna,
- you may still be able to find an list
- of those accounts without passwords.
-
- If you have the superuser ("#") prompt,
- you may be able to read the /etc/shadow
- file. The format for this file is:
-
- login ID:(encoded pw):6480:14:28
-
- The first field is the same as the
- login ID found in the /etc/passwd file.
- Each entry in /etc/passwd should have
- a corresponding one in /etc/shadow. The
- second field will be blank, denoting
- no password, or contain the
- afformentioned "random" characters.
- Third is a numeric code describing
- when the password was last changed.
- Fourth and fifth are the minimum and
- maximum number of days between
- mandatory password changes. Often the
- last two fields are empty, which means
- users are not required to change thier
- passwords.
-
- Here, again, you should look for any
- accounts without passwords, and
- examine the group file as mentioned.
-
- Now, hopefully, you will have some
- decent access. Many of the accounts
- with no password are that way for a
- reason - they do not allow shell
- access; but that never stopped anyone.
-
- If you discover an account that runs
- a program and then logs off, or runs
- a program which allows you to
- interact in a boring way, you can use
- this to your advantage. Look in the
- seventh field of this account's passwd
- information. It will contain the
- path and filename of the program being
- run.
-
- At this point, security on most systems
- is extremely low. Many system operators
- are sure that by stopping you from
- directly getting access, they have
- stopped you totally. By "tricking" the
- system, you can get access indirectly.
-
- If you find a program being run, go
- back to the account which gave you
- shell access. Then enter the directory
- where the program was (do not include
- the file "/" and the filename). You
- want to change the filename of the
- program. To do this, type:
-
- mv (filename) (backup filename)
-
- To change /usr/prog to /usr/prog.b, you
- would enter:
-
- mv /usr/prog /usr/prog.b
-
- Make sure you remember the filename
- you give it. It is also a good idea
- to keep it in the same directory. Now,
- you have to create a dummy file to
- replace it. We will have to use the
- "ed" file editor to do this. MAKE SURE
- YOU HAVE SET YOU BREAK CHARACTER. You
- cannot use ed without having a break
- character. To make the file, type:
-
- ed (filename)
-
- Where (filename) is the name of the
- file you just renamed. Use the OLD name
- (the one in the passwd file)! ed will
- respond with:
-
- ?(filename)
-
- meaning the file does not exist yet.
-
- Some basic ed commands are:
-
- q
- Quit. If you attempt to quit after
- making changes, ed will not quit
- until you hit "q" again (this is to
- remind you to save changes).
- w
- Write file (saves all the changes
- you make).
- ,p
- Displays all lines.
- /(string)
- Searches the buffer for (string),
- and displays that line.
- a
- Add lines (starting at the current
- line).
- i
- Insert lines at the current line.
- d
- Delete the current line.
- h
- Turns help on (shows verbose error
- messages).
-
- Entering a line number will bring you
- to that line. When editting a file
- which already exists, ed will show you
- the current number of bytes in the file
- rather than "?(filename)". If you
- attempt to write a file, and ed replies
- with "?(filename)", you do not have
- access to write that file.
-
- Now, back to the dummy file. Type "a"
- to add lines. Enter:
-
- echo "Blah"
- /bin/sh
-
- Then, after pressing return on the
- /bin/sh line, type your break
- character. Write the file and quit the
- editor. You now have your dummy program
- set up. The command "echo" is a simple
- print command. You can enter as many
- as you like, or none at all. They are
- merely to reassure you that your
- program is running. The important part
- of this is the "/bin/sh", which runs
- the shell program.
-
- You must now give all users access to
- your program, so the account will be
- able to use your newly created
- program. Type:
-
- chmod +rwx
-
- This will give read, write, and execute
- permissions to all users (more on
- permissions some other day).
-
- You should now logon again as the
- account which uses this program.
- If you did everything right, you should
- now have control of the shell,
- hopefully with superuser access ("#"
- prompt). If you still do not have
- superuser access, go back and try
- something else. Be sure to do the next
- few steps whether it works or not, to
- insure your continued use of the
- system. Delete your dummy program by
- typing:
-
- rm (filename)
-
- Be sure to include the directory path
- in the filename, as before. Now,
- rename the old file back to its
- original name (just reverse the
- filenames in the previous rename
- command).
-
- Now everything is back to normal. If
- you did not get access, you will have
- to go back to your old account to set
- the files back to normal. Make sure you
- do this, or you may cause damage to the
- system. This will result in higher
- security. Also, real hackers never
- damage systems for without cause.
- Laziness is not an excuse.
-
- If you are still without decent access,
- you will have to consult another file.
- I may write another soon on more ways
- to gain access, but for now, this
- should help enough people. From now on,
- I will assume you have achieved
- superuser access within an
- administrative group. You will most
- likely want an account of your own now.
- Use the ed command to edit the
- /etc/passwd file. Somewhere in the
- mid-beginning section (within the first
- 4-12 lines), add an account using one
- of the default account not already
- present (from the first list, if
- possible), or commandeer an unused (be
- sure it is unused) default account
- already there.
-
- Set you ID number and group to those
- of the root account (usually 0:3).
- Set your directory wherever you like,
- and set the shell filename to either
- /bin/sh, or leave it blank. In the
- password (second) field, what you
- enter depends on the system. If it is
- an older system where the encrypted
- passwords are stored in the passwd
- file, just enter whatever password you
- like there. The system will encrypt it
- for you when you save it. If it is the
- newer "x" system, put an "x" there, and
- do the following, otherwise skip this.
-
- New system users will have to enter
- the command:
-
- /etc/pwconv
-
- This command will recreate the
- /etc/shadow file based on the
- information in the passwd file. Just
- to be sure, ed the shadow file, and
- leave the password field blank for
- your newly created account (use the
- /(string) command within ed to jump
- directly to your login ID).
-
- Now, you can call back as your new
- account. You should enter:
-
- passwd
-
- to create a password for your account
- if it doesn't already have one.
-
- If all has gone well, you now have an
- account of your own. I will now give
- a list of other commands which you can
- play around with.
-
- Unix commands:
- --------------
-
- banner (string)
- This is a "fun" command, which will
- take (string) and expand it into
- block letters on your display.
-
- write (user)
- Will send a message to another user.
- After entering the command, the
- system will wait for you to type a
- message and terminate it with your
- eof character. Change your eof
- character by entering:
-
- stty eof (character)
-
- wall
- Like write, but sends to all users.
-
- who
- Displays a list of everyone online.
-
- mail (user)
- Send email to any user in the passwd
- file. To read your mail, just type
- mail.
-
- exit
- Logout of the system. I should have
- mentioned this before, but I forgot.
- You can also use your eof
- character at the shell prompt to
- logout.
-
- echo
- Prints text or variables, as shown
- before.
-
- env
- Display all variables in your
- environment. More on shell
- variables soon.
-
- rmdir (directory)
- Delete a directory.
-
- mkdir (directory)
- Make a directory.
-
- cp (original) (backup)
- Copy a file.
-
- grep (string) (filename)
- Searches through (filename) until
- it finds (string), and then
- displays the entire line (string)
- was found on.
-
- date (time & date)
- Alone, date displays the time and
- date. It can also be used to set
- it.
-
- cal (date)
- Alone, cal displays a calendar of
- the current month. With optional
- month and year, it will display
- any year from 1 to 9999.
-
- There are many more commands, but to
- explain them all could take forever.
- Most systems contain online help files
- which you can access by typing either:
-
- man (command)
-
- or:
-
- help (command)
-
- For a list of commands, look in the
- various "bin" directories. They
- contain the actual programs.
-
- Variables:
- ----------
-
- The shell allows the use of variables.
- All variables are represented by
- capital letters. You can create your
- own, or view/change standard system
- variables. Some standard variables are:
-
- PATH
- This will show the order the shell
- searches in to find commands. You
- will most likely find a number of
- directories ending in "bin". An
- example could be:
-
- :/bin:/usr/bin:/usr/lib/bin:/etc
-
- This means that when you type a
- command, the system checks to
- directories in that order before
- finally giving up and reporting an
- error if the command is not found
- (All commands are files).
-
- PS1
- This is the main shell prompt,
- usually "$" or "#", depending on
- your access. You can change this
- to whatever you like.
-
- TERM
-
- Some systems keep track of what
- type of terminal you are using, for
- use in formatting output (usually
- through other programs).
-
- LOGNAME
- The login ID you are using.
-
- HOME
- Your home directory.
-
- TZ
- Timezone.
-
- MAIL
- The file your mail is sent to.
-
- There are others, but they tend to vary
- with the account. Enter the env command
- to display the variables in use.
-
- Variables you create within shell
- programs (such as the dummy program
- that was discussed before) retain thier
- values for the life of the program
- only (they do not affect the other
- shell variables).
-
- You can change a variable like this:
-
- TERM=ansi
-
- Whenever you want to view a variable,
- or use it for another purpose, precede
- it with a "$". Ex:
-
- echo $LOGNAME
-
- will display your login ID.
-
- Misc:
- -----
-
- I seem to have run out of memory, so
- forget it for now. Hopefully I'll write
- so more soon...
-
- - Midnite Raider
-
-
-
- Downloaded From P-80 International Information Systems 304-744-2253 12yrs+
-