2013-06-08 3 views
1

Я новый техник по фотографии в небольшой школе искусств и отвечаю за небольшую лабораторию Mac. К сожалению, наш отдел ИТ. dosen't предлагает прямую поддержку для macs (только для сети), поэтому мне нужно свернуть рукава и узнать, как я иду.сценарий bash для создания папки для пользователя при входе в систему и установки разрешений доступа

Лаборатория работает как единый управляемый логин (без пароля) на всех компьютерах на протяжении веков, и это вызвало множество трудностей, но я работаю над тем, чтобы изменить это на modle, который принимает учетные данные Active Directory, создавая нового пользователя на лету. При выходе из системы пользовательская учетная запись будет уничтожена для нормализации пользовательской среды между каждым сеансом.

Недостатком является то, что для немногих студентов, которые выполняют повторную работу на определенной станции, любые файлы, которые они создают, будут, конечно, уничтожены. Как работа, я бы хотел создать сценарий входа, который создает безопасное место для сохранения их файлов на многораздельном диске и устанавливает разрешения для этого каталога для записи только для всех других пользователей, кроме admin.

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

Я установил это как файл .command с разрешениями на выполнение для его проверки - и папка и псевдоним создаются, как ожидалось, но параметры владельца/группы не принимаются. - владелец - моя учетная запись администратора, и группа остается «персоналом». Я также создал пользователя «test» и группу студентов.

Большое спасибо за ваши мысли.

#!/bin/bash 
# Create a safe place for users to save their files 
# We will destroy this directory if it's empty on log out 
# Using sudo for the time being for testing, wont have to when it's run at login by root 

# Dont run if user is admin 
if [ `whoami` == "comdesadmin" ]; then 
exit 1 
fi 

if [ `whoami` != "comdesadmin" ]; then 

#User name 
USERNAME="test"; 
#USERNAME=`whoami` ; 

# Group name 
USERGROUP=student; 
#Set direcory path 
USERSAFEFOLDER=/Volumes/nest/$USERNAME 

# Create the directory for the user if it isn't there 
# user names shouldn't have any spaces so this should be ok 
mkdir -p $USERSAFEFOLDER; 

# Set the ownership to the current users (as this be being run by root) 
sudo chown -R guest $USERSAFEFOLDER; 

# Set the group 
sudo chgrp $USERGROUP $USERSAFEFOLDER; 

# Set write only to everyone else 
chmod 700 $USERSAFEFOLDER; 

# Make alias on the desktop for them 
osascript <<END_SCRIPT 
tell application "Finder" 
    make new alias to folder (posix file "$USERSAFEFOLDER") at desktop 
end tell 
END_SCRIPT 

echo "Sucess"; 

fi 
exit 0 
+0

Я рекомендую задать этот вопрос на apple.stackexchange.com для поддержки правильного администрирования пользователей на базе Mac OS X. – chepner

+0

Я не знал о apple.stackexchange - хороший крик. – orionrush

ответ

5
  1. Второй if совершенно не нужен (if [ `whoami` != "comdesadmin" ]), потому что это прямая противоположность первого. Вы можете просто удалить эту строку (и его закрытие fi на дне)

  2. Это может быть хорошей идеей, чтобы изменить первую строку #!/bin/bash -e таким образом сценарий завершается немедленно, когда шаг не удается

  3. Вместо в том числе sudo для тестирования, это проще и лучше, чтобы проверить без SUDO линий, а также по телефону сам скрипт с Судом, как пользователь вы хотите проверить, например:

    sudo -u username -g groupname .command 
    
  4. chown и chgrp линия не должна быть необходима при запуске с sudo

  5. exit 0 в конце ненужно, так как echo команды перед этим будет завершаться с 0, который будет использоваться в качестве выходного кода самого скрипта

  6. ; в в конце строк не нужен

  7. Это лучше использовать $() вместо кавычки во всех отношениях, например $(whoami) вместо `whoami`

+0

Большое спасибо за советы по очистке. Я бросил sudo, потому что не видел результатов от chown или chgrp и думал, что это может быть проблема с разрешениями. Любые идеи относительно того, почему они не будут применять правильную группу или пользователя? – orionrush

+0

также можете указать мне на статью или статью о том, что вы описываете в третьем номере. Я не уверен, что я буду следовать за вами. – orionrush

+0

Я добавил # 7. Что касается №3, так как вы ожидаете, что скрипт будет выполняться пользователями при входе в систему, лучше протестировать скрипт, запустив его как одного из этих пользователей или тестового пользователя. Замените 'username' и' groupname' в соответствующей команде примера. В соответствии с 'chown',' chgrp', я действительно не вижу, что вы пытаетесь сделать. Скрипт будет запускаться пользователями при входе в систему, но обычные пользователи не могут изменять права собственности на файлы в любом случае. Я думаю, что это не нужно, и, может быть, вы в замешательстве. – janos

Смежные вопросы