2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-09-01 23:05:17 +00:00

o Add requiretty option

o Move O_NOCTTY to compat.h
This commit is contained in:
Todd C. Miller
1999-10-08 01:12:50 +00:00
parent 1296f28845
commit 2c4fefde5a
5 changed files with 35 additions and 20 deletions

View File

@@ -155,4 +155,11 @@
# endif /* __hpux */ # endif /* __hpux */
#endif /* HAVE_SETEUID */ #endif /* HAVE_SETEUID */
/*
* On POSIX systems, O_NOCTTY is the default so some OS's may lack this define.
*/
#ifndef O_NOCTTY
# define O_NOCTTY 0
#endif /* O_NOCTTY */
#endif /* _SUDO_COMPAT_H */ #endif /* _SUDO_COMPAT_H */

View File

@@ -176,6 +176,9 @@ struct sudo_defs_types sudo_defs_table[] = {
}, { }, {
"insults", T_FLAG, { 0 }, "insults", T_FLAG, { 0 },
"Insult the user when they enter an incorrect password" "Insult the user when they enter an incorrect password"
}, {
"requiretty", T_FLAG, { 0 },
"Only allow the user to run sudo if they have a tty"
}, { }, {
"loglinelen", T_INT, { 0 }, "loglinelen", T_INT, { 0 },
"Length at which to wrap log file lines (0 for no wrap): %d" "Length at which to wrap log file lines (0 for no wrap): %d"

View File

@@ -98,26 +98,27 @@ struct sudo_defs_types {
#define I_PATH_INFO 20 #define I_PATH_INFO 20
#define I_FQDN 21 #define I_FQDN 21
#define I_INSULTS 22 #define I_INSULTS 22
#define I_REQUIRETTY 23
/* Integer values */ /* Integer values */
#define I_LOGLEN 23 /* wrap log file line after N chars */ #define I_LOGLEN 24 /* wrap log file line after N chars */
#define I_TS_TIMEOUT 24 /* timestamp stale after N minutes */ #define I_TS_TIMEOUT 25 /* timestamp stale after N minutes */
#define I_PW_TIMEOUT 25 /* exit if pass not entered in N minutes */ #define I_PW_TIMEOUT 26 /* exit if pass not entered in N minutes */
#define I_PW_TRIES 26 /* exit after N bad password tries */ #define I_PW_TRIES 27 /* exit after N bad password tries */
#define I_UMASK 27 /* umask to use or 0777 to use user's */ #define I_UMASK 28 /* umask to use or 0777 to use user's */
/* Strings */ /* Strings */
#define I_LOGFILE 28 /* path to logfile (or NULL for none) */ #define I_LOGFILE 29 /* path to logfile (or NULL for none) */
#define I_MAILERPATH 29 /* path to sendmail or other mailer */ #define I_MAILERPATH 30 /* path to sendmail or other mailer */
#define I_MAILERFLAGS 30 /* flags to pass to the mailer */ #define I_MAILERFLAGS 31 /* flags to pass to the mailer */
#define I_MAILTO 31 /* who to send bitch mail to */ #define I_MAILTO 32 /* who to send bitch mail to */
#define I_MAILSUB 32 /* subject line of mail msg */ #define I_MAILSUB 33 /* subject line of mail msg */
#define I_BADPASS_MSG 33 /* what to say when passwd is wrong */ #define I_BADPASS_MSG 34 /* what to say when passwd is wrong */
#define I_TIMESTAMPDIR 34 /* path to timestamp dir */ #define I_TIMESTAMPDIR 35 /* path to timestamp dir */
#define I_EXEMPT_GRP 35 /* no password or PATH override for these */ #define I_EXEMPT_GRP 36 /* no password or PATH override for these */
#define I_PASSPROMPT 36 /* password prompt */ #define I_PASSPROMPT 37 /* password prompt */
#define I_RUNAS_DEF 37 /* default user to run commands as */ #define I_RUNAS_DEF 38 /* default user to run commands as */
#define I_SECURE_PATH 38 /* set $PATH to this if not NULL */ #define I_SECURE_PATH 39 /* set $PATH to this if not NULL */
/* /*
* Macros for accessing sudo_defs_table. * Macros for accessing sudo_defs_table.

8
sudo.c
View File

@@ -304,6 +304,14 @@ main(argc, argv)
exit(1); exit(1);
} }
/* Bail if a tty is required and we don't have one. */
if (def_flag(I_REQUIRETTY)) {
if ((fd = open(_PATH_TTY, O_RDWR|O_NOCTTY)) == -1)
log_error(NO_MAIL, "sorry, you must have a tty to run sudo");
else
(void) close(fd);
}
/* Require a password unless the NOPASS tag was set. */ /* Require a password unless the NOPASS tag was set. */
if (!(validated & FLAG_NOPASS)) if (!(validated & FLAG_NOPASS))
check_user(); check_user();

View File

@@ -77,10 +77,6 @@
#define TCSASOFT 0 #define TCSASOFT 0
#endif /* TCSASOFT */ #endif /* TCSASOFT */
#ifndef O_NOCTTY
#define O_NOCTTY 0
#endif /* O_NOCTTY */
#ifndef lint #ifndef lint
static const char rcsid[] = "$Sudo$"; static const char rcsid[] = "$Sudo$";
#endif /* lint */ #endif /* lint */