su:ユーザーIDを設定できません:無効なパラメーター

su:ユーザーIDを設定できません:無効なパラメーター

私のLinux SUSE SLSE12システムで新しいユーザーを作成し、そのユーザーに入ろうとします。私はそのコンピュータのrootユーザーです。命令セット:

> 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

次の条件の1つ以上がtrueの場合、setuid()関数は失敗し、-1を返し、errnoを適切な値に設定します。

EINVAL uidパラメーターの値が無効であり、実装ではサポートされていません。

EPERM プロセスに適切な権限がなく、uid が実際のユーザー ID または保存された設定ユーザー ID と一致しません。

EINVALこの場合は(無効な引数)です。

@MC68020が提案したように、まだ65535という制限がある可能性があるため、より低いUIDを試してみる価値があるかもしれません。ところで問題が変です。

おすすめ記事