Requires CrushFTP version 9.3.1+
The concept of a limited server is such that the owner of the hardware or OS can delegate server administration out to a third party, another admin. This delegation allows the server owner to set a locked location for server config files, and the server install versus the location user data files are placed.
In this limited mode, the TempAccounts and Preview folders need to be moved from the default CrushFTP folder location to a location within the user data root. Then correct the path settings on Preferences->Preview page "Previews Path", respectively on Server Admin->Shares page, "General Settings" menu "Location of temp account file system" field. Otherwise image/document preview thumbnails or shared files can not be retrieved. If also the "server.file.strict" flag is set to "true", the CrushFTP service won't even start up for it's in violation of it's own access rules.
Example:
The server install could be: /C:/CrushFTP9/ , in UNIX-style path notation, regardless of operating system family
So prefs, user config, certificates, private keys can all be there.
The user data storage could be: /D:/UserData/ , same UNIX-style path notation
So even if the admin tried to, they could not give a user access to something located in the C: drive. They can only give users access to things in the D:\UserData\ folder area and sub areas. The core functions in CrushFTP prevent accessing items out of their area.
The configuration is done via startup flags that change the behavior of CrushFTP.
file.warn = log an error about the violation, mainly useful for debugging why something got blocked (default=true)
file.log = if a separate audit log should be kept with all the error info (default=false)
file.strict = if its true, the action is blocked. Otherwise its allowed and just the error info is logged (default=false)
security.exec = controls if external processes can be launched from the Preview config or not (default=true)
Windows:#
Edit the CrushFTPServer.ini file in the "service" subdirectory of the CrushFTP installation folder and append this to it (note the double backslashes due to config file encoding):vmarg.2=-Dcrushftp.server.root=C:/CrushFTP9/ vmarg.3=-Dcrushftp.user.root=C:/ftproot/ vmarg.4=-Dcrushftp.server.file.warn=true vmarg.5=-Dcrushftp.server.file.log=false vmarg.6=-Dcrushftp.security.exec=true vmarg.7=-Dcrushftp.server.file.strict=true
OSX / Linux / Other#
Edit the startup launcher (OSX=CrushFTP.command file in the CrushFTP folder, CrushFTP9.app/Contents/MacOS/CrushFTP.command) (Linux=/var/opt/CrushFTP9/crushftp_init.sh)Find the "-Xmx" which is setting the memory arguments and configure these arguments before it:
-Dcrushftp.server.root=/var/opt/CrushFTP9/ -Dcrushftp.user.root=/home/UserData/ -Dcrushftp.server.file.warn=true -Dcrushftp.server.file.log=false -Dcrushftp.server.file.strict=true -Dcrushftp.security.exec=true -Xmx.........
In all cases, matching case is important even if the OS filesystem is not case sensitive.
Applying the crushftp.server.root and crushftp.user.root JVM runtime parameters at least , will have the equivalent results of UNIX chrooting.