Bash

我可以在 freebsd 上使用 pw adduser 自動創建密碼使用者嗎?

  • May 3, 2014

我可以在 freebsd 上使用 pw adduser 自動創建密碼使用者嗎?

pw useradd [name] [switches]
       -V etcdir      alternate /etc location
       -C config      configuration file
       -q             quiet operation
 Adding users:
       -n name        login name
       -u uid         user id
       -c comment     user name/comment
       -d directory   home directory
       -e date        account expiry date
       -p date        password expiry date
       -g grp         initial group
       -G grp1,grp2   additional groups
       -m [ -k dir ]  create and set up home
       -M mode        home directory permissions
       -s shell       name of login shell
       -o             duplicate uid ok
       -L class       user class
       -h fd          read password on fd
       -H fd          read encrypted password on fd
       -Y             update NIS maps
       -N             no update
 Setting defaults:
       -V etcdir      alternate /etc location
       -D             set user defaults
       -b dir         default home root dir
       -e period      default expiry period
       -p period      default password change period
       -g group       default group
       -G grp1,grp2   additional groups
       -L class       default user class
       -k dir         default home skeleton
       -M mode        home directory permissions
       -u min,max     set min,max uids
       -i min,max     set min,max gids
       -w method      set default password method
       -s shell       default shell
       -y path        set NIS passwd file path

據此,我可以。但我不知道如何……似乎我需要使用文件描述符,但我無法看到如何做到這一點的任何範例。我有一個 bash 腳本,它需要在沒有使用者輸入的情況下自動執行此操作……

有任何想法嗎?

這是使用文件描述符的範例:

echo password | pw useradd -h 0 user1

每個 Unix 程序通常具有三個標准文件描述符:

  • stdin(0)
  • stdout(1)
  • stderr(2)

在這種情況下,我們告訴pw從 fd 0 讀取輸入,也就是stdin。您可能需要查看bash手冊頁,其中包含各種可以使用文件描述符和重定向執行的奇特事情的範例。

請注意,此範例存在一些安全問題——任何ps在正確時間執行該命令的人都可以看到該echo命令的參數。這在您的環境中可能是也可能不是問題。你可以這樣做:

pw useradd -h 0 user1 <<EOP
password
EOP

引用自:https://serverfault.com/questions/212104