Make the check for non-executable shell only a warning.
Although it is a good idea to check for an inadvertent typo in the shell name it is possible that the shell might not be present on the system yet when the user is added.
This commit is contained in:
@ -1328,15 +1328,22 @@ static void process_flags (int argc, char **argv)
|
|||||||
if ( ( !VALID (optarg) )
|
if ( ( !VALID (optarg) )
|
||||||
|| ( ('\0' != optarg[0])
|
|| ( ('\0' != optarg[0])
|
||||||
&& ('/' != optarg[0])
|
&& ('/' != optarg[0])
|
||||||
&& ('*' != optarg[0]) )
|
&& ('*' != optarg[0]) )) {
|
||||||
|| (stat(optarg, &st) != 0)
|
|
||||||
|| (S_ISDIR(st.st_mode))
|
|
||||||
|| (access(optarg, X_OK) != 0)) {
|
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
_("%s: invalid shell '%s'\n"),
|
_("%s: invalid shell '%s'\n"),
|
||||||
Prog, optarg);
|
Prog, optarg);
|
||||||
exit (E_BAD_ARG);
|
exit (E_BAD_ARG);
|
||||||
}
|
}
|
||||||
|
if ( '\0' != optarg[0]
|
||||||
|
&& '*' != optarg[0]
|
||||||
|
&& strcmp(optarg, "/sbin/nologin") != 0
|
||||||
|
&& ( stat(optarg, &st) != 0
|
||||||
|
|| S_ISDIR(st.st_mode)
|
||||||
|
|| access(optarg, X_OK) != 0)) {
|
||||||
|
fprintf (stderr,
|
||||||
|
_("%s: Warning: missing or non-executable shell '%s'\n"),
|
||||||
|
Prog, optarg);
|
||||||
|
}
|
||||||
user_shell = optarg;
|
user_shell = optarg;
|
||||||
def_shell = optarg;
|
def_shell = optarg;
|
||||||
sflg = true;
|
sflg = true;
|
||||||
|
Reference in New Issue
Block a user