我可以在 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 帐户。您可以将其设为启动脚本。我将首先创建以下目录。
- 从根目录(不是 root 的主目录)mkdir .script
- 拥有普通用户账户
- mkdir /var/log/.rec
- chown 普通用户:普通用户 /var/log/.rec
- 将 passgen.sh 脚本放入位于根文件结构中的 .script 中
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。
希望这对某些人有所帮助,看起来这个编辑器正在过滤一些哈希和半引号。
谢谢你肖恩·赫伯特