I am looking for a shell script (or any other way), that puts a user in a home directory jail. So for example, I have a user named richard and I don't want him wandering outside /usr/users/richard. I don't want him to cd to anywhere including cd ..
Somebody said you can do that with chroot, but I looked it up on the man pages and it says it is used to change the root directory.
Hi, mz043.
As far as I know, you have two options:
One is to create a chroot jail for your users (As you've been told). This involves several tasks: create a dummy "root filesystem", copy libs, binaries, etc... The use of sudo, and some shell scripting among others. There are lots of info on the Net, depending on your OS.
The other is the use of a restricted shell. I don't know what OS you are using but perhaps a "man -k restricted" would give you some clues
I want to avoid chroot, as I don't have much experience with UNIX sysadmin and chroot sounds like the kinda thing that if you get wrong, you quietly pack up your stuff, take a cab to the airport and board the first avail flight
I use tru64 unix --- to be honest I think I'll use Access Control Lists. With them I can restrict access to areas I want. I can do that on the group level as well, so no need to do it for each user individually.
$ rksh
$ cd ..
rksh: cd: restricted
$ cd /
rksh: cd: restricted
$ /usr/sbin/ifconfig
rksh: /usr/sbin/ifconfig: restricted
$
from the man page:
rksh is used to set up login names and execution environ-
ments whose capabilities are more controlled than those of
the standard shell. The actions of rksh are identical to
those of ksh, except that the following are disallowed:
o changing directory \(see cd\(1\)\)
o setting the value of SHELL, ENV, or PATH
o specifying path or command names containing /
o redirecting output \(>, >|, <>, and >>\)
o changing group \(see newgrp\(1\)\).
The restrictions above are enforced after .profile and the
ENV files are interpreted.
When a command to be executed is found to be a shell pro-
cedure, rksh invokes ksh to execute it. Thus, it is possi-
ble to provide to the end-user shell procedures that have
access to the full power of the standard shell, while impos-
ing a limited menu of commands; this scheme assumes that the
end-user does not have write and execute permissions in the
same directory.
The net effect of these rules is that the writer of the
.profile has complete control over user actions, by perform-
ing guaranteed setup actions and leaving the user in an
appropriate directory \(probably not the login directory\).
The system administrator often sets up a directory of com-
mands \(that is, /usr/rbin\) that can be safely invoked by
rksh.
still it's not perfect, but a good way to start...