Alternative to passwd --stdin in Ubuntu












0















I'm attempting to migrate an OpenVPN server from a CentOS box to an Ubuntu 18.04 one.



There is a script which creates new VPN users. Part of this is that it generates a new password for the user and then passes this in as the Linux password for the new user (there is MFA on top of this so this is only one part of the authentication process).



However the script uses the following line to do this:



echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin


And after messing around for a long time I've discovered that Ubuntu doesn't have the --stdinoption for passwd.



What I haven't been able to find, however, is an alternative way of doing this.



These are the relevant parts of my script.



We generate a password:



VPN_PASSWORD=$(cat /dev/urandom | tr -dc 'A-Z0-9' | head -c 8)


We add a new user and attempt to assign this password to it:



echo "Adding Unix user ${VPN_USER}"
useradd -G vpnusers -m -s /sbin/nologin $VPN_USER
if [ "$?" != 0 ]
then
echo "Could not create user. (Are you sudo?!)"
exit 1
fi

echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin
echo "User created."


The user is being created but I'm getting this error regarding the password:



passwd: unrecognized option '--stdin'
Usage: passwd [options] [LOGIN]


I've been trying for a day to find and answer to this and tried many, many things but I think my fundamental lack of Ubuntu knowledge is the real issue here.










share|improve this question



























    0















    I'm attempting to migrate an OpenVPN server from a CentOS box to an Ubuntu 18.04 one.



    There is a script which creates new VPN users. Part of this is that it generates a new password for the user and then passes this in as the Linux password for the new user (there is MFA on top of this so this is only one part of the authentication process).



    However the script uses the following line to do this:



    echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin


    And after messing around for a long time I've discovered that Ubuntu doesn't have the --stdinoption for passwd.



    What I haven't been able to find, however, is an alternative way of doing this.



    These are the relevant parts of my script.



    We generate a password:



    VPN_PASSWORD=$(cat /dev/urandom | tr -dc 'A-Z0-9' | head -c 8)


    We add a new user and attempt to assign this password to it:



    echo "Adding Unix user ${VPN_USER}"
    useradd -G vpnusers -m -s /sbin/nologin $VPN_USER
    if [ "$?" != 0 ]
    then
    echo "Could not create user. (Are you sudo?!)"
    exit 1
    fi

    echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin
    echo "User created."


    The user is being created but I'm getting this error regarding the password:



    passwd: unrecognized option '--stdin'
    Usage: passwd [options] [LOGIN]


    I've been trying for a day to find and answer to this and tried many, many things but I think my fundamental lack of Ubuntu knowledge is the real issue here.










    share|improve this question

























      0












      0








      0








      I'm attempting to migrate an OpenVPN server from a CentOS box to an Ubuntu 18.04 one.



      There is a script which creates new VPN users. Part of this is that it generates a new password for the user and then passes this in as the Linux password for the new user (there is MFA on top of this so this is only one part of the authentication process).



      However the script uses the following line to do this:



      echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin


      And after messing around for a long time I've discovered that Ubuntu doesn't have the --stdinoption for passwd.



      What I haven't been able to find, however, is an alternative way of doing this.



      These are the relevant parts of my script.



      We generate a password:



      VPN_PASSWORD=$(cat /dev/urandom | tr -dc 'A-Z0-9' | head -c 8)


      We add a new user and attempt to assign this password to it:



      echo "Adding Unix user ${VPN_USER}"
      useradd -G vpnusers -m -s /sbin/nologin $VPN_USER
      if [ "$?" != 0 ]
      then
      echo "Could not create user. (Are you sudo?!)"
      exit 1
      fi

      echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin
      echo "User created."


      The user is being created but I'm getting this error regarding the password:



      passwd: unrecognized option '--stdin'
      Usage: passwd [options] [LOGIN]


      I've been trying for a day to find and answer to this and tried many, many things but I think my fundamental lack of Ubuntu knowledge is the real issue here.










      share|improve this question














      I'm attempting to migrate an OpenVPN server from a CentOS box to an Ubuntu 18.04 one.



      There is a script which creates new VPN users. Part of this is that it generates a new password for the user and then passes this in as the Linux password for the new user (there is MFA on top of this so this is only one part of the authentication process).



      However the script uses the following line to do this:



      echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin


      And after messing around for a long time I've discovered that Ubuntu doesn't have the --stdinoption for passwd.



      What I haven't been able to find, however, is an alternative way of doing this.



      These are the relevant parts of my script.



      We generate a password:



      VPN_PASSWORD=$(cat /dev/urandom | tr -dc 'A-Z0-9' | head -c 8)


      We add a new user and attempt to assign this password to it:



      echo "Adding Unix user ${VPN_USER}"
      useradd -G vpnusers -m -s /sbin/nologin $VPN_USER
      if [ "$?" != 0 ]
      then
      echo "Could not create user. (Are you sudo?!)"
      exit 1
      fi

      echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin
      echo "User created."


      The user is being created but I'm getting this error regarding the password:



      passwd: unrecognized option '--stdin'
      Usage: passwd [options] [LOGIN]


      I've been trying for a day to find and answer to this and tried many, many things but I think my fundamental lack of Ubuntu knowledge is the real issue here.







      passwd






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked yesterday









      shaneohshaneoh

      4716




      4716






















          1 Answer
          1






          active

          oldest

          votes


















          1














          To set a user's password from the shell use chpasswd:



          echo "username:cleartext_password" | sudo chpasswd





          share|improve this answer























            Your Answer








            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "89"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1115795%2falternative-to-passwd-stdin-in-ubuntu%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            To set a user's password from the shell use chpasswd:



            echo "username:cleartext_password" | sudo chpasswd





            share|improve this answer




























              1














              To set a user's password from the shell use chpasswd:



              echo "username:cleartext_password" | sudo chpasswd





              share|improve this answer


























                1












                1








                1







                To set a user's password from the shell use chpasswd:



                echo "username:cleartext_password" | sudo chpasswd





                share|improve this answer













                To set a user's password from the shell use chpasswd:



                echo "username:cleartext_password" | sudo chpasswd






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered yesterday









                PerlDuckPerlDuck

                6,37711335




                6,37711335






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Ask Ubuntu!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1115795%2falternative-to-passwd-stdin-in-ubuntu%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    How did Captain America manage to do this?

                    迪纳利

                    南乌拉尔铁路局