Я хотел бы установить пароль для установки общего каталога samba
с помощью сценария оболочки. Я написал следующий сценарий test.sh
:
#!/bin/bash
pass=123456
(echo "$pass"; echo "$pass") | smbpasswd -s -a $(whoami)
Он напечатает следующее:
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
Как указано, я не запускал его как root, когда я запускал его как root, то есть sudo ./test.sh
, все работает нормально. Но загвоздка в том, что он добавляет root
вместо noobuser
, который является моим зарегистрированным пользователем.
Как я могу добавить noobuser
, выполнив нечто подобное (у меня такое чувство, что я что-то здесь упускаю)?
если вы не хотите передавать аргумент скрипту, вы можете попробовать это
#!/bin/bash
pass=123456
echo $pass
echo $pass | smbpasswd -s -a $(who am i | awk '{print $1}')
и затем вызвать скрипт.
test.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
вызов:
sudo./test.sh