| What is Cygserver? |
| |
| Cygserver is a program which is designed to run as a background service. |
| It provides Cygwin applications with services which require security |
| arbitration or which need to persist while no other cygwin application |
| is running. |
| |
| The implemented services so far are: |
| |
| - Control slave tty/pty handle dispersal from tty owner to other |
| processes without compromising the owner processes' security. |
| - XSI IPC Message Queues. |
| - XSI IPC Semaphores. |
| - XSI IPC Shared Memory. |
| - Allows non-privileged users to store obfuscated passwords in the |
| registry to be used for setuid(2) to create user tokens with network |
| credentials. This service is used by `passwd -R'. Using the stored |
| passwords in setuid(2) does not require running cygserver. The |
| registry storage is the same as Windows uses to store passwords for |
| accounts running Windows services. |
| |
| |
| Cygserver command line options: |
| |
| Options to Cygserver take the normal UNIX-style `-X' or `--longoption' form. |
| Nearly all options have a counterpart in the configuration file (see below) |
| so setting them on the command line isn't really necessary. Command line |
| options override settings from the Cygserver configuration file. |
| |
| The one-character options are prepended by a single dash, the long variants |
| are prepended with two dashes. Arguments to options are marked in angle |
| brackets below. These are not part of the actual syntax but are used only to |
| denote the arguments. Note that all arguments are required. Cygserver |
| has no options with optional arguments. |
| |
| The options recognized are: |
| |
| -f, --config-file <file> |
| |
| Use <file> as configuration file instead of the default configuration |
| line. The default configuration file is /etc/cygserver.conf, typically. |
| The --help and --version options will print the default configuration |
| pathname. |
| |
| This option has no counterpart in the configuration file, for obvious |
| reasons. |
| |
| -c, --cleanup-threads <num> |
| |
| Number of threads started to perform cleanup tasks. Default is 2. |
| Configuration file option: kern.srv.cleanup_threads |
| |
| -r, --request-threads <num> |
| |
| Number of threads started to serve application requests. Default is 10. |
| The -c and -r options can be used to play with Cygserver's performance |
| under heavy load conditions or on slow machines. |
| Configuration file option: kern.srv.request_threads |
| |
| -p, --process-cache <num> |
| |
| Number of processes which can connect concurrently to cygserver. |
| Default is 62. Each process connected to cygserver is a synchronization |
| object which has to be maintained. The data structure to maintain these |
| processes is the so-called "process cache". In theory, an arbitrary |
| number of processes could connect to cygserver, but due to the need to |
| synchronize, the higher the number of connected processes, the more |
| synchronization overhead exists. By using this option, you can set an |
| upper limit to the synchronization effort. If more than 62 processes |
| try to connect to cygserver concurrently, two additional synchronization |
| threads are necessary, and one for each further 62 concurrent |
| processes. So, useful values for the --process-cache option are 62, 124, |
| 186, 248, 310. 310 is the maximum value. |
| Configuration file option: kern.srv.process_cache_size |
| |
| NOTE: The number of child processes of a single parent process is limited |
| to 256. So in case of taking advantage of a process cache size beyond 256, |
| keep in mind that not all of these processes can be child processes of one |
| single parent process. |
| |
| -d, --debug |
| |
| Log debug messages to stderr. These will clutter your stderr output with |
| a lot of information, typically only useful to developers. |
| |
| -e, --stderr |
| |
| Force logging to stderr. This is the default if stderr is connected to |
| a tty. Otherwise, the default is logging to the system log. By using |
| the -e, -E, -y, -Y options (or the appropriate settings in the |
| configuration file), you can explicitely set the logging output as you |
| like, even to both, stderr and syslog. |
| Configuration file option: kern.log.stderr |
| |
| -E, --no-stderr |
| |
| Don't log to stderr. Configuration file option: kern.log.stderr |
| |
| -y, --syslog |
| |
| Force logging to the system log. This is the default, if stderr is not |
| connected to a tty, e. g. redirected to a file. |
| |
| -Y, --no-syslog |
| |
| Don't log to syslog. Configuration file option: kern.log.syslog |
| |
| -l, --log-level <level> |
| |
| Set the verbosity level of the logging output. Valid values are between |
| 1 and 7. The default level is 6, which is relatively chatty. If you set |
| it to 1, you will get only messages which are printed under severe conditions, |
| which will result in stopping Cygserver itself. |
| Configuration file option: kern.log.level |
| |
| -m, --no-sharedmem |
| |
| Don't start XSI IPC Shared Memory support. If you don't need XSI IPC |
| Shared Memory support, you can switch it off here. |
| Configuration file option: kern.srv.sharedmem |
| |
| -q, --no-msgqueues |
| |
| Don't start XSI IPC Message Queues. |
| Configuration file option: kern.srv.msgqueues |
| |
| -s, --no-semaphores |
| |
| Don't start XSI IPC Semaphores. |
| Configuration file option: kern.srv.semaphores |
| |
| -S, --shutdown |
| |
| Shutdown a running daemon and exit. Other methods are sending a SIGHUP |
| to the Cygserver PID or, if running as service under NT, calling |
| `net stop cygserver' or `cygrunsrv -E cygserver'. |
| |
| -h, --help |
| |
| Output usage information and exit. |
| |
| -v, --version |
| |
| Output version information and exit. |
| |
| |
| How to start Cygserver: |
| |
| Before you run Cygserver for the first time, you should run the |
| /usr/bin/cygserver-config script once. It creates the default |
| configuration file and, upon request, installs Cygserver as service |
| when running under NT. The script only performs a default install, |
| with no further options given to Cygserver when running as service. |
| Due to the wide configurability by changing the configuration file, |
| that's typically not necessary. |
| |
| It's best practice to run Cygserver as a service under LocalSystem |
| account. This is the way it is installed for you by the |
| /usr/bin/cygserver-config script. |
| |
| |
| The Cygserver configuration file: |
| |
| Cygserver has many options, which allow to customize the server |
| to your needs. Customization is accomplished by editing the configuration |
| file, which is by default /etc/cygserver.conf. This file is read only |
| once on startup of Cygserver. There's no option to re-read the file on |
| runtime by, say, sending a signal to Cygserver. |
| |
| The configuration file determines how Cygserver operates. There are |
| options which set the number of threads running in parallel, options |
| for setting how and what to log and options to set various maximum |
| values for the IPC services. |
| |
| The default configuration file delivered with Cygserver is installed |
| to /etc/defaults/etc. The /usr/bin/cygserver-config script copies it to |
| /etc, giving you the option to overwrite an already existing file or to |
| leave it alone. Therefore, the /etc file is safe to be changed by you, |
| since it will not be overwritten by a later update installation. |
| |
| The default configuration file contains many comments which describe |
| everything needed to understand the settings. A comment at the start of the |
| file describes the syntax rules for the file. The default options are shown |
| in the file but are commented out. |
| |
| It is generally a good idea to uncomment only options which you intend to |
| change from the default values. Since reading the options file on Cygserver |
| startup doesn't take much time, it's also considered good practice to keep |
| all other comments in the file. This keeps you from searching for clues |
| in other sources. |
| |
| |
| If you have problems with Cygserver, or you have found a bug, or you |
| think you have found a bug, or you don't understand configuration file |
| options, the mailing list <cygwin@cygwin.com> is the right place to ask |
| questions. |
| |
| Have fun! |