私の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を試してみる価値があるかもしれません。ところで問題が変です。