Сохранять сценарий Python3 работающим при смене пользователя на Linux - PullRequest
1 голос
/ 29 января 2020

Я пытаюсь создать базовый установщик инструментов для Kali Linux, в основном сценарий, который устанавливает все инструменты, которые обычно приходится устанавливать вручную, но также создает нового пользователя и переключается на него.

Мой сценарий до сих пор выглядит так:

# --------------
# Imports
# --------------
import os
import getpass
# --------------
# Get Username
user = getpass.getuser()
# -
# Colors
colorGreen = "\033[1; 32; 40m end="""
# -
# --------------
# Functions
# --------------

# Update & Upgrade


def upgrade():
    os.system('sudo apt update && sudo apt upgrade')
# -

# Add new User


def addUser():
    print("### Creating a Low Priv User ###")
    user = input("Choose a username: ")
    os.system('sudo adduser ' + user)
    print("### Adding new user to Sudo ###")
    os.system("sudo usermod -aG sudo " + user)
    os.system("sudo chsh -s /bin/bash " + user)
    print("### Done ###")
    print("### Switching to new user... ###")
    os.system("su " + user)
    print("### Done! Welcome {}".format(user))


# --------------
# Function Calls
# --------------
upgrade()
addUser()
# -

Как только я достигну конца, который равен os.system("su " + user), сценарий естественным образом останавливается. su% username% - команда для переключения на вновь созданного пользователя.

В идеале, я хочу, чтобы после этого скрипт продолжал работать, поэтому я могу установить инструменты внутри вновь созданного пользователя.

Есть ли способ достичь этого? Или есть другой способ сделать это? Я знаю, что мог бы использовать что-то вроде git clone NewTool/home/{user}/opt/ и go оттуда, но это кажется неудобным.

Было бы здорово, если бы кто-то указал мне правильное направление!

Приветствия

1 Ответ

0 голосов
/ 03 февраля 2020

Немного покопался и нашел способ обойти мою проблему.

Вместо смены пользователя я просто объявил переменную user, в которой хранится имя пользователя.

Затем, когда пользователь создан, я просто использую другой синтаксис, чтобы новый пользователь используется для установки.

Пример:

user = "newUser"
os.system('sudo -u {} sudo apt install nixnote2 -y'.format(user))

На данный момент это решает мою проблему.

...