내 Linux SUSE SLSE12 시스템에서 새 사용자를 생성하고 해당 사용자로 들어가려고 합니다. 나는 해당 컴퓨터의 루트 사용자입니다. 명령 세트:
> whoami
root
> useradd -u 123456 new_user
> id new_user
uid=123456(new_user) gid=100(users)
> su new_user
su: cannot set user id: Invalid argument
질문이 있으신가요 su
? 으로 전환할 수 없는 이유는 무엇입니까 new_user
? 나도 su - new_user
이것을 시도했고 같은 결과를 얻었습니다. new_user
해당 명령을 사용하여 비밀번호 도 설정했지만 passwd
여전히 작동하지 않습니다. 어떻게 해결하나요?
답변1
답변은 아니지만 더 자세한 의견입니다.
su
이 오류 메시지는 실패 시 생성됩니다 setuid
.
static void
change_identity (const struct passwd *pw)
{
#ifdef HAVE_INITGROUPS
errno = 0;
if (initgroups (pw->pw_name, pw->pw_gid) == -1)
error (EXIT_CANCELED, errno, _("cannot set groups"));
endgrent ();
#endif
if (setgid (pw->pw_gid))
error (EXIT_CANCELED, errno, _("cannot set group id"));
if (setuid (pw->pw_uid))
error (EXIT_CANCELED, errno, _("cannot set user id"));
}
에 따르면 man 3 setuid
:
다음 조건 중 하나 이상이 참인 경우 setuid() 함수는 실패하고 -1을 반환하며 errno를 적절한 값으로 설정합니다.
EINVAL uid 매개변수의 값이 유효하지 않으며 구현에서 지원되지 않습니다.
EPERM 프로세스에 적절한 권한이 없으며 uid가 실제 사용자 ID 또는 저장된 설정 사용자 ID와 일치하지 않습니다.
EINVAL
이 경우에는 (잘못된 인수) 입니다 .
@MC68020이 제안한 것처럼 여전히 65535라는 제한이 있을 수 있으므로 더 낮은 UID를 시도해 볼 가치가 있을 수 있습니다. 그런데 문제가 이상해요.