/usr/local/bin/bash 复制代码

/usr/local/bin/bash 复制代码

我可以在 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 脚本,它需要在没有用户输入的情况下自动执行此操作...

有任何想法吗?

答案1

以下是使用文件描述符的示例:

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

答案2

你需要确保你的 FreeBSD 系统已安装以下内容

bash(pkg_add -r bash) 期望(pkg_add -r 期望)

下面是一个脚本,它将自动生成随机密码并自动将其应用于 root 帐户。您可以将其设为启动脚本。我将首先创建以下目录。

  1. 从根目录(不是 root 的主目录)mkdir .script
  2. 拥有普通用户账户
  3. mkdir /var/log/.rec
  4. chown 普通用户:普通用户 /var/log/.rec
  5. 将 passgen.sh 脚本放入位于根文件结构中的 .script 中
  6. chmod 777 passgen.sh

    /usr/local/bin/bash 复制代码

    乘客人数=head -c 10 /dev/random | uuencode -m - | tr -d '\n' | cut -c 19-32

回显$PASSGEN> /var/log/.rec/encrypted

chown 某些用户:某些用户 /var/log/.rec/encrypted

chmod 666 /var/log/.rec/encrypted

加密即混淆

LOG=根

PASS=$PASSGEN

预期 << EOF

生成密码$LOG

期望“新密码:”

发送“${PASS}\r”

期望“重新输入新密码:”

发送“${PASS}\r”

期望 eof;

末梢血

现在根据您的 BSD 版本将其添加到您的启动 rc.local / rc.d / rc.conf。

希望这对某些人有所帮助,看起来这个编辑器正在过滤一些哈希和半引号。

谢谢你肖恩·赫伯特

相关内容