Как я могу создать нового пользователя через терминал macOS 10.14

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

В конечном счете, я хотел бы запустить это, чтобы удалить 5 учетных записей пользователей и всю их информацию, а затем создать 5 новых учетных записей (это в классе, где у меня 36 компьютеров), но я изо всех сил пытаюсь правильно создать одного пользователя с помощью следующий скрипт.

Любая помощь приветствуется.

#!/bin/bash

USERNAME=per1
FULLNAME="Period 1"
PASSWORD="test"
SECONDARY_GROUPS="staff" 

# ====

if [[ $UID -ne 0 ]]; then echo "Please run $0 as root." && exit 1; fi

# Find out the next available user ID
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((MAXID+1))

# Create the user account
dscl . -create /Users/$USERNAME
dscl . -create /Users/$USERNAME UserShell /bin/bash
dscl . -create /Users/$USERNAME RealName "$FULLNAME"
dscl . -create /Users/$USERNAME UniqueID "$USERID"
dscl . -create /Users/$USERNAME PrimaryGroupID 20
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME

dscl . -passwd /Users/$USERNAME $PASSWORD


# Add use to any specified groups
for GROUP in $SECONDARY_GROUPS ; do
    dseditgroup -o edit -t user -a $USERNAME $GROUP
done

# Create the home directory
createhomedir -c > /dev/null

echo "Created user #$USERID: $USERNAME ($FULLNAME)"
Где/как именно скрипт не делает то, что вы хотите?
Это создает пользователя, но я считаю, что есть проблема с созданием домашнего каталога. Возможно, проблема с разрешением. Например, я не могу просмотреть ни одну папку в Finder.
Я получаю эту ошибку при входе в созданную учетную запись: Невозможно открыть папку «Рабочий стол», поскольку у вас нет разрешения на просмотр ее содержимого.
Ну, не вдаваясь во все подробности: как вы ожидаете createhomedirузнать, для какого пользователя он должен создать домашний каталог?
Спасибо! Я добавил пользователя, и скрипт теперь работает
Пара дополнительных рекомендаций по скрипту: Не нужно добавлять staffв качестве вторичной группы, так как она уже настроена как основная группа пользователей (персонал — это группа №20). Кроме того, я рекомендую использовать нижний или смешанный регистр для вашей оболочки и переменных среды, поскольку существует множество переменных, написанных заглавными буквами (например, , , и т. д.), которые имеют $PATHособое $USERзначение $UID, и если вы случайно повторно используете одну из них для чего-то в противном случае это может вызвать проблемы.

Ответы (2)

#!/bin/bash

USERNAME=per1
FULLNAME="Period 1"
PASSWORD="test"
SECONDARY_GROUPS="staff" 

# ====

if [[ $UID -ne 0 ]]; then echo "Please run $0 as root." && exit 1; fi

# Find out the next available user ID
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((MAXID+1))

# Create the user account
dscl . -create /Users/$USERNAME
dscl . -create /Users/$USERNAME UserShell /bin/bash
dscl . -create /Users/$USERNAME RealName "$FULLNAME"
dscl . -create /Users/$USERNAME UniqueID "$USERID"
dscl . -create /Users/$USERNAME PrimaryGroupID 20
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME

dscl . -passwd /Users/$USERNAME $PASSWORD


# Add use to any specified groups
for GROUP in $SECONDARY_GROUPS ; do
    dseditgroup -o edit -t user -a $USERNAME $GROUP
done

# Create the home directory
createhomedir -c -u $USERNAME > /dev/null

echo "Created user #$USERID: $USERNAME ($FULLNAME)"
Разница между исходным сценарием и этим здесь заключается в добавлении -u $USERNAMEк createhomedirкоманде.

Ответ Джона Винсента очень полезен, так как он может создать для вас пользователя с помощью скрипта...

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

Еще немного важной информации о SecureToken: https://derflounder.wordpress.com/2018/01/20/secure-token-and-filevault-on-apple-file-system/

Вы можете добавить secureToken с помощью root:

sysadminctl -adminUser root -adminPassword <rootPassword> -secureTokenOn <user> -password <userPassword>

Вы можете проверить статус secureToken следующим образом:

sysadminctl -secureTokenStatus username_goes_here