Другие ответы хорошо отвечают на вопрос в общем виде. Чтобы конкретно ответить " Как достигается этот эффект?Это где-то в исходном коде curl?":
В секции разбора аргументов исходного кода curl параметр -u
обрабатывается следующим образом:
case 'u':
/* user:password */
GetStr(&config->userpwd, nextarg);
cleanarg(nextarg);
break;
А функцияcleanarg()
определяется следующим образом:
void cleanarg(char *str)
{
#ifdef HAVE_WRITABLE_ARGV
/* now that GetStr has copied the contents of nextarg, wipe the next
* argument out so that the username:password isn't displayed in the
* system process list */
if(str) {
size_t len = strlen(str);
memset(str, ' ', len);
}
#else
(void)str;
#endif
}
Таким образом, мы можем явно видеть, что аргумент имя пользователя :пароль в argv
перезаписывается пробелами, как описано в других ответах.
Также помогает добавление trusted_users = myuser
.
По умолчанию exim не позволяет ни одному пользователю сохранять путь отправителя/возврата -