Text 22692, 267 rader
Skriven 2011-10-29 22:58:44 av Janis Kracht (1:261/38)
Ärende: FidoNews Vol. 28 No. 44 Neat Things You Can Do With Linux
=================================================================
Neat Things You Can Do with Linux IV
By Janis Kracht, 1:261/38, janis@filegate.net
Last time we looked at archivers, and some basic commands.
Now it's time to play a bit with "files" :)
===========================================================
Identifying what you see in a long directory list
===========================================================
Under Linux, every item you see listed in a directory list
is a file. That includes directories, binary (executable)
files, data files, etc. You can tell what a particular
listing is by looking at the first column of a long
directory display. The following is a clip of a directory
listing using ls -ltr -d (long format, sorted by time/date,
reverse, -d lists directory entries instead of the contents
of the directory).
for example:
[bbs@filegate bbbs]$ ls -ltr -d test2
drwxrwxr-x 2 bbs bbs 1024 Oct 30 13:41 test2/
The first character describes the type of file it is: directory (d).
If it is not a directory, a '-' is listed.
for example:
-rw-rw-r-- 1 bbs bbs 12 Jul 21 13:11 tst.txt
Under DOS, you are given information in directory listings regarding
type, creation date/time:
=====
DOS
=====
<DIR> TEST2 (date/time created, size)
Under linux, you not only see the creation date/time and
type, but you also see who has read, write and execute
privileges, who "owns" the file, etc.:
=====
Linux
=====
(permissions) (owner) (group) (size)(date/time) (name)
drwxrwxr-x 2 bbs bbs 1024 Oct 30 13:41 test2/
In each listing, you see the d (or -) in the first field,
followed by rwx rwx rwx.
These characters display who has read/write/execute
permissions for this file. These characters list the
permissions for this file in the order of
user/group/everyone-else:
(user/group/everyone-else)
drwxrwxr-x 2 bbs bbs 1024 Oct 30 13:41 test2/
So here you can see that the user has read/write/execute
permission, anyone in the group listed has the same
permissions, and "everyone-else" who may try to access this
file may only read it/execute it. Everyone-else then,
cannot modify the file.
|usr
---
| |group
| ---
| | |everyone-else
| | ---
| | |
| | |
--- --- ---
drwx rwx r-x 2 bbs bbs 1024 Oct 30 13:41 test2/
---------- -------------- ------------ ------
d direcotry
-r who can see this
--w who can write to it
---x it is executible or not (- means not) for this person
|ownername groupname
|Creation Date/time
|filename
So, the above file, test2, is a directory, owned by user
bbs. User bbs has read/write/execute permissions for this
file, while anyone else in the _group_ bbs may also
read/write/execute. All other persons may only
read/execute.
===========================================================
chmod - change file access permissions
===========================================================
There may be times when you would like to keep a directory
"private" so that it is only visible (readable) by
yourself. Or there may be times when you want a file to be
only readable and not executible, etc. You can make any
file on a linux system private by changing the attributes
with the chmod command. i.e., Since directories are only
files, you can therefore change the directory's attributes.
In order to change a files attributes, you need to
understand the bit pattern of the chmod command.
Using this bit pattern, you assign a number to the
user/group/everone-else fields of one or all files. It is
the cumulative value of octal digits 0-7 for bits 4, 2 and
1 that defines the permissions as to who may r/w/x.
A value of 4 gives the field read access.
A value of 2 gives write access.
A value of 1 gives execute access.
If you add the values of the bits you want to change, you
have the value of
the field.
Sounds scary, but it's easier to see when you look at it with this table
adding up the bits with values of bits 4, 2, and 1.
EVERY EVERY EVERY
(USER GROUP ONE-ELSE/USER GROUP ONE-ELSE/USER GROUP ONE-ELSE)
xxx xxx xxx
--- --- ---
421 421 421 These are values that are added.
rwx rwx rwx
775
4+2+1 4+2+1 4+1
rwx rwx r-x
660
4+2+0 4+2+0 0+0+0
rw- rw- ---
So to make our new directory rwx by user bbs ONLY,
Original at creation:
drwxrwxr-x 2 bbs bbs 1024 Oct 30 13:41 test2/
you would type:
chmod 700 test2
This changes the permissons to:
drwx------ 2 bbs bbs 1024 Oct 30 13:41 test2/
(4+2+1/0+0+0/0+0+0)
7 0 0
To make it readable by all, but not executible:
chmod 666 test2
drw-rw-rw- 2 bbs bbs 1024 Oct 30 13:41 test2/
4+2/4+2/4+2
6 6 6
To make it rw for everyone, but rwx only for user bbs:
chmod 766 test2
So now the permissions look like this:
drwxrw-rw- 2 bbs bbs 1024 Oct 30 13:41 test2/
4+2+1/4+2+0/4+2+0
7 6 6
There is something you learn very quickly when you run a
*nix operating system.. #1, don't log in as root
(superuser) to perform general tasks. If a file is
removed, changed, whatever, user root can do it anywhere on
the system, in any directory. Therefore user root could
delete an entire directory tree "by mistake" and nothing on
the system would hinder this. I.e., there is no prompt
"Are you sure?", like you'd see on a DOS command like DEL
*.*.
Likewise, when you use chmod to change the access of a
file, it is generally a good idea to log in to the system
as "non-root", for example, user janis, or user bbs to
change the permisions of a file.
That way, if you
mistakenly change the attributes to something you didn't
mean to, or if you attempt to change a file that you didn't
mean to change, your limited permissions can generally
prevent total disaster <smile>.
===========================================================
More options to chmod
===========================================================
As usual, see man chmod for all options.
You can change the permissions of entire directories and or
subdirectories with the -R switch (recursive):
chmod -R 775 /home/ftp/pub
This makes every file and directory rwx by the user that owns it,
everyone in the group, and r-x (read/execute) for everyone-else.
Also, another often used switch to chmod is a+x. a+x adds the
executible flag to a file while not affecting the other previously
set flags (such as who can execute the file).
To use the a+x switch, you would type:
chmod a+x filename
===========================================================
Some bonuses to having everything be a file under Linux
===========================================================
One of the benefits of everything being a file under linux
is that you can make a simple text file executible with
chmod, and then execute it. Of course, if the text file
you do this to doesn't contain any shell commands to
execute, it won't do anything <g>.. but if you create a
shell script with your favorite text editor, like joe, or
vi, that does contain commands you can save the file, issue
the command chmod a+x filename, and then that file becomes
an executible program.
Here's an example of shell script that changes the text in
the file files.bbs from all upper case to all lower case:
==========start bash script==========
#!/bin/sh
cat files.bbs | tr A-Z a-z > files.new
========= end bash script ===========
if you save this file as say, up2low, you can then type
chmod a+x up2low
and then execute it
./up2low
FIDONEWS Vol 28 No 44 Page 5 October 31 2011
-----------------------------------------------------------------
--- BBBS/Li6 v4.10 Dada-1
* Origin: Prism bbs (1:261/38)
|