All versions of Ubuntu and Ubuntu Server as well as all flavors of Linux is the type of system you described.
The main difference between Ubuntu Desktop and Ubuntu Server is that the server version installs a striped down version allowing the Administrator to pick out many packages that he prefers to install, such as the GUI desktop.
The users on the system will have access to the applications that you install system-wide. Applications installed from the repository using the Software Center or apt
are installed system-wide.
If you install an application outside of a deb distribution, it would depend on how you install it. If you compile a program, under normal circumstances the program is compiled (and should be for security) in the user's personal space, by a normal account without elevated access.
When it's time to install the complied package, many distributors of the packages will include a make install
option, that when run using the elevated sudo
command, will install the package system-wide. If it doesn't place the package system wide, it's something you would have to do manually.
You mentioned one program, numpy
. However, it would depend on the one program how you installed it. If you would be specific for a program you are having problems, you would have to include the steps you used for installing that program, so that you can have suggestions of how to make that particular program system wide. Once you do this for one or two programs, you can use the same method to do this for all your programs.
It might not be the one you are looking for, but python-numpy is available via the repository. If you install it with this command:
$ sudo apt install python-numpy
It'll be available system wide.
As far as users and permission and access to programs, creating a user by default will give the users that type of access and permission that you describe in your question.
All the users have access to programs that are in the same folders that you have access to by default. Use this command to see which paths are searched:
$ echo $PATH
You may consider placing your programs in a subdirectory of /opt
. Then place a link to that program's execute file in a default path such as usr/local/bin
.
If you have a program called saytime.sh
, you can place it into /opt/timeprogram/saytime.sh
.
Then place a link to that program in /usr/local/bin
using this command:
$ ln -s /opt/timeprogram/saytime.sh
Now the program can be run from the commandline without having to navigate to the location of the program, and not having to type a full path to the program.
For creating an Ubuntu Server, just download the server version the same way you downloaded the Desktop version. Install it the same way. But as I mentioned above, the behavior of both are the same when it comes to the criteria of your question.