为 samba 用户设置密码的 Shell 脚本

skr*_*mit 3 scripting ubuntu samba shell-script

我想samba使用 shell 脚本设置一个密码来设置共享目录。我写了以下脚本test.sh

#!/bin/bash

pass=123456
(echo "$pass"; echo "$pass") | smbpasswd -s -a $(whoami)
Run Code Online (Sandbox Code Playgroud)

这将打印以下内容:

When run by root:
    smbpasswd [options] [username]
otherwise:
    smbpasswd [options]

options:
  -L                   local mode (must be first option)
  -h                   print this usage message
  -s                   use stdin for password prompt
  -c smb.conf file     Use the given path to the smb.conf file
  -D LEVEL             debug level
  -r MACHINE           remote machine
  -U USER              remote username
extra options when run by root or in local mode:
  -a                   add user
  -d                   disable user
  -e                   enable user
  -i                   interdomain trust account
  -m                   machine trust account
  -n                   set no password
  -W                   use stdin ldap admin password
  -w PASSWORD          ldap admin password
  -x                   delete user
  -R ORDER             name resolve order
Run Code Online (Sandbox Code Playgroud)

正如它所指出的,我没有以 root 身份运行它,当我以 root 身份运行它时,即,sudo ./test.sh它运行良好。但问题是,它添加root而不是noobuser,这是我登录的用户。

我如何noobuser通过做类似的事情来添加(我感觉我在这里遗漏了一些东西)?

Dev*_*laN 5

测试.sh:

#!/bin/bash

pass=123456

if [ -z "$SUDO_USER" ]; then
    echo "This script is only allowed to run from sudo";
    exit -1;
fi

(echo "$pass"; echo "$pass") | smbpasswd -s -a "$SUDO_USER"
Run Code Online (Sandbox Code Playgroud)

调用:

sudo ./test.sh
Run Code Online (Sandbox Code Playgroud)