
214
|
Chapter 10: Scripting
Now let’s try to run hello with a relative pathname:
admin@server1:~$ ./hello
bash: ./hello: Permission denied
This time Linux found it but didn’t run it. It failed because the hello file does not
have executable permissions. You need to decide who will be allowed to execute it:
only you (the owner), anyone in your group, and/or users in other groups. This is a
practical security decision that administrators must make frequently. If permissions
are too broad, others can run your script without your knowledge; if they’re too nar-
row, the script might not run at all.
The command to change permissions is called chmod (for change mode), and it can
use old-style Unix octal numbers or letters. Let’s try it both ways, giving read/write/
execute permissions to yourself, read/execute permissions to your group, and noth-
ing to others (what have they ever given you?). For the octal style, read=4, write=2,
and execute=1. The user number will be 4+2+1 (7), the group 4+1 (5), and others
0:
admin@server1:~$ chmod 750 hello
admin@server1:~$ ls -l hello
-rwxr-x--- 1 admin admin 50 2006-08-03 15:44 hello
The other style of permission arguments, using letters, is probably more intuitive:
admin@server1:~$ chmod u=rwx,g=rx hello
admin@server1:~$ ls -l hello
-rwxr-x--- 1 admin admin 50 2006-08-03 15:44 hello
To quickly add read and execute permissions for yourself, your group, and others,
enter: ...