Open Lighting Architecture 0.10.9
Loading...
Searching...
No Matches
Credentials.h
Go to the documentation of this file.
1/*
2 * This library is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU Lesser General Public
4 * License as published by the Free Software Foundation; either
5 * version 2.1 of the License, or (at your option) any later version.
6 *
7 * This library is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 * Lesser General Public License for more details.
11 *
12 * You should have received a copy of the GNU Lesser General Public
13 * License along with this library; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15 *
16 * Credentials.h
17 * Handle getting and setting a process's credentials.
18 * Copyright (C) 2012 Simon Newton
19 */
20
33#ifndef INCLUDE_OLA_BASE_CREDENTIALS_H_
34#define INCLUDE_OLA_BASE_CREDENTIALS_H_
35
36#include <unistd.h>
37#include <string>
38
39#ifdef _WIN32
40#ifndef uid_t
41#define uid_t int
42#endif // uid_t
43#ifndef gid_t
44#define gid_t int
45#endif // gid_t
46#endif // _WIN32
47
48namespace ola {
49
55// These functions wrap their POSIX counterparts.
56
66bool SupportsUIDs();
67
73bool GetUID(uid_t* uid);
74
80bool GetEUID(uid_t* euid);
81
89bool SetUID(uid_t new_uid);
90
103bool GetGID(gid_t* gid);
104
110bool GetEGID(gid_t* egid);
111
119bool SetGID(gid_t new_gid);
120
137int GetGroups(int size, gid_t list[]);
138
145bool SetGroups(size_t size, const gid_t *list);
146
155typedef struct {
157 std::string pw_name;
158
160 std::string pw_passwd; // no passwd for now
161
163 uid_t pw_uid;
164
166 gid_t pw_gid;
167
169 std::string pw_dir;
170
172 std::string pw_shell;
174
191bool GetPasswdName(const std::string &name, PasswdEntry *passwd);
192
203bool GetPasswdUID(uid_t uid, PasswdEntry *passwd);
204
213typedef struct {
215 std::string gr_name;
220 std::string gr_passwd; // no passwd for now
222 gid_t gr_gid;
223 // vector<string> gr_mem; // no members for now
224} GroupEntry;
225
241bool GetGroupName(const std::string &name, GroupEntry *passwd);
242
253bool GetGroupGID(gid_t gid, GroupEntry *passwd);
258} // namespace ola
259#endif // INCLUDE_OLA_BASE_CREDENTIALS_H_
bool GetPasswdUID(uid_t uid, PasswdEntry *passwd)
Lookup a user account by UID.
Definition Credentials.cpp:258
bool GetEGID(gid_t *egid)
Get the effective group ID.
Definition Credentials.cpp:106
bool SetGroups(size_t size, const gid_t *list)
Set the supplementary group ID's of the process.
Definition Credentials.cpp:158
bool GetEUID(uid_t *euid)
Get the effective UID of the process.
Definition Credentials.cpp:76
bool GetGroupName(const string &name, GroupEntry *group_entry)
Lookup a group account by name.
Definition Credentials.cpp:336
int GetGroups(int size, gid_t list[])
Get the supplementary group ID's of the process.
Definition Credentials.cpp:148
bool GetGroupGID(gid_t gid, GroupEntry *group_entry)
Lookup a group account by GID.
Definition Credentials.cpp:351
bool GetGID(gid_t *gid)
Get the real Group ID.
Definition Credentials.cpp:91
bool SetGID(gid_t new_gid)
Set the effective Group ID of the process.
Definition Credentials.cpp:135
bool SetUID(uid_t new_uid)
Set the effective UID of the process.
Definition Credentials.cpp:121
bool GetPasswdName(const string &name, PasswdEntry *passwd)
Lookup a user account by username.
Definition Credentials.cpp:243
bool SupportsUIDs()
Check whether the current platform supports User and Group IDs.
Definition Credentials.cpp:53
bool GetUID(uid_t *uid)
Get the real UID of the process.
Definition Credentials.cpp:61
The namespace containing all OLA symbols.
Definition Credentials.cpp:44
Contains information about a group.
Definition Credentials.h:213
std::string gr_name
name of the group
Definition Credentials.h:215
gid_t gr_gid
Group ID.
Definition Credentials.h:222
std::string gr_passwd
password for the group
Definition Credentials.h:220
Contains information about a user.
Definition Credentials.h:155
gid_t pw_gid
real Group ID
Definition Credentials.h:166
std::string pw_dir
user's home directory
Definition Credentials.h:169
std::string pw_passwd
Unused currently.
Definition Credentials.h:160
uid_t pw_uid
real User ID
Definition Credentials.h:163
std::string pw_name
name of the user
Definition Credentials.h:157
std::string pw_shell
user's shell program
Definition Credentials.h:172