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
invocação:
sudo ./test.sh
Gostaria de definir uma senha para configurar o diretório de compartilhamento samba
usando um script de shell. Eu escrevi o seguinte script test.sh
:
#!/bin/bash
pass=123456
(echo "$pass"; echo "$pass") | smbpasswd -s -a $(whoami)
Isto imprime o seguinte:
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
Como aponta, eu não estava rodando como root, quando eu o executo como root, ou seja, sudo ./test.sh
, ele roda bem. Mas o problema é que ele adiciona root
em vez de noobuser
, que é meu usuário logado.
Como posso adicionar noobuser
fazendo algo semelhante (sinto que estou sentindo falta de algo aqui)?
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
invocação:
sudo ./test.sh
se você não quiser passar argumentos para o script, então você pode tentar isso
#!/bin/bash
pass=123456
echo $pass
echo $pass | smbpasswd -s -a $(who am i | awk '{print $1}')
e, em seguida, invoque o script.
Tags samba ubuntu scripting shell-script