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:
parent
3e942adb21
commit
4ed08824e5
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user