NAME | SYNOPSIS | API RESTRICTIONS | DESCRIPTION | NOTES | ATTRIBUTES
#include <arpa/ftpd/systemAuth.h>void systemBeuser(FtpConn * conn);
The function or functions documented here may not be used safely in all application contexts with all APIs provided in the ChorusOS 5.0 product.
See API(5FEA) for details.
These functions manage multiple server connections. When multiple connections with different credentials are handled simultaneously, they must be synchronized.
Normally, the server's effective uid does not matter. However, when a thread needs a particular uid for an operation, a lock is taken and the effective uid is changed. When the operation is complete, the lock is released. If the application is mono-threaded, no lock is necessary. If the credentials are irrelevant, these routines do nothing.
The functions are defined as follows:
systemBeuser acquires the identity lock and sets the server's identity to that associated with the connection.
systemBesuper acquires the identity lock and sets the server's identity to that of the superuser.
systemBeany releases the identity lock.
The following code examples manage connections and credentials. They assume that conn->user_uid and conn->super_user are application-dependent extensions of the FtpConn structure, initialized by systemPass (3FTPD).
static KnMutex credMutex = K_KNMUTEX_INITIALIZER; void systemBeuser(ApplFtpConn* conn) { mutexGet(&credMutex); seteuid(conn->user_uid); } void systemBesuper(ApplFtpConn* conn) { mutexGet(&credMutex); seteuid(conn->super_user); } void systemBeany(ApplFtpConn* conn) { mutexRel(&credMutex); } |
The FTP library uses systemBesuper and systemBeany , but does not use systemBeuser . Application side routines that open files are expected to use systemBeuser before opening a file, and systemBeany once the file is open.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | API RESTRICTIONS | DESCRIPTION | NOTES | ATTRIBUTES