Вы просто используете обоих sudo
и su
неправильным способом. Если Вы пишете просто sudo -s
или sudo su
один, Вы закончите с интерактивной оболочкой, созданной из сценария - это - то, что делают те команды.
Так как Вам нужен блок кода оболочки, который будет выполняться как корень, необходимо перенести его так или иначе в единственную команду. Вероятно, самый простой путь состоит в том, чтобы использовать явную подоболочку:
echo "Linux user password is needed in order to ..."
sudo sh -c '
... code that requires root permission
'
Это, конечно, доставит неприятности, когда Вы пытаетесь использовать некоторые переменные, определенные в другом месте в Вашем сценарии - в таком случае, используйте двойные кавычки вместо сингла.
Но если у Вас только есть несколько команд, которые будут выполнены как корень, лучше используйте sudo
перед каждым из них.
Одна вещь, которую я нашел, smbtree
как эквивалент для NET VIEW
.