mirror of
https://github.com/clearml/dropbear
synced 2025-01-31 10:57:01 +00:00
switch user when opening authorized_keys
This commit is contained in:
parent
1df5c97144
commit
93f3c31807
@ -201,6 +201,8 @@ static int checkpubkey(char* algo, unsigned int algolen,
|
||||
unsigned int len, pos;
|
||||
buffer * options_buf = NULL;
|
||||
int line_num;
|
||||
uid_t origuid;
|
||||
gid_t origgid;
|
||||
|
||||
TRACE(("enter checkpubkey"))
|
||||
|
||||
@ -227,8 +229,21 @@ static int checkpubkey(char* algo, unsigned int algolen,
|
||||
snprintf(filename, len + 22, "%s/.ssh/authorized_keys",
|
||||
ses.authstate.pw_dir);
|
||||
|
||||
/* open the file */
|
||||
/* open the file as the authenticating user. */
|
||||
origuid = getuid();
|
||||
origgid = getgid();
|
||||
if ((setegid(ses.authstate.pw_gid)) < 0 ||
|
||||
(seteuid(ses.authstate.pw_uid)) < 0) {
|
||||
dropbear_exit("Failed to set euid");
|
||||
}
|
||||
|
||||
authfile = fopen(filename, "r");
|
||||
|
||||
if ((seteuid(origuid)) < 0 ||
|
||||
(setegid(origgid)) < 0) {
|
||||
dropbear_exit("Failed to revert euid");
|
||||
}
|
||||
|
||||
if (authfile == NULL) {
|
||||
goto out;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user