Как реализовать изменчивый «профиль пользователя»

1348
eleven81

Я хочу настроить машину Linux таким образом, чтобы при выходе из системы определенного пользователя с именем student их / home каталог очищался и сбрасывался.

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

userdel student rm -r /home/student useradd -m student echo student | passwd --stdin student 

Есть ли более простой способ, чем удаление и воссоздание пользователя?

Примечание: цель здесь - стереть содержимое домашнего каталога пользователя и заново заполнить домашний каталог пользователя из / etc / skel. Я думаю, я просто пытаюсь обойти проблемы с владением файлами, которые возникают при копировании / etc / skel over / home / student.

Редактировать: мне нужно имитировать способ useradd -mкопирования материалов из /etc/skelв /home/studentи изменения владельца, группы и разрешений. Как я могу сделать то, что useradd -mделает, без необходимости удалять, а затем воссоздать пользователя?

3
Сообщение заблокировано. Пожалуйста, не отменяйте изменения, сделанные модераторами, в сообщения. BinaryMisfit 14 лет назад 0

4 ответа на вопрос

5
itsadok

Может быть, я что-то упускаю, но зачем вообще удалять и заново создавать пользователя, если все, что вам нужно, это очистить домашний каталог?

Вы не можете просто сделать

rsync -a --delete /etc/skel/ /home/student/ 

каждый раз, когда пользователь выходит из системы?

Может быть, также убить все пользовательские процессы, если таковые остались, но это все.

ОБНОВЛЕНИЕ: чтобы изменить владельца файлов, вам нужно просто запустить

chown -R student:student /home/student/* 

после rsync.

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

chmod +x /home/student/bin/* 
Это сохраняет владельца, группу и разрешения, которые присутствуют во всех файлах в / etc / skel. Это вызывает проблемы, потому что root владеет большинством этих файлов, и поэтому, когда пользователь входит в систему, он и его процессы не владеют файлами. Когда я запускаю useradd -m, он устанавливает владельца, группу и разрешения, необходимые для того, чтобы вход в систему действительно работал. eleven81 14 лет назад 0
Смотрите мое обновление. Это то, что вы хотели? itsadok 14 лет назад 0
Мне придется попробовать это обновление чуть позже сегодня. Это выглядит очень многообещающе! eleven81 14 лет назад 0
itsadok: Я получил его, работая со строкой rsync и строкой chown -R (без последней косой черты и звездочки) так, как я хотел. Мне не нужно было изменять какие-либо разрешения. Огромное спасибо! eleven81 14 лет назад 0
itsadok: кажется, что строка rsync не копирует скрытые каталоги (те, чьи имена начинаются с.) из / etc / skel в / home / student. Есть идеи? eleven81 14 лет назад 0
Работает для меня. Вероятно, вам следует начать другой вопрос SU, что-то должно быть не так (возможно, права на чтение?) itsadok 14 лет назад 0
0
Kevin M

Тег с "bash", поэтому я предполагаю, что вы смотрите на вход в командной строке, а не GUI

student@pc:~$ cat .bash_logout  if [ "$SHLVL" = 1 ]; then [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q fi cd ~ rm -r ~/* ~/.[a-zA-Z1-9]* cp -r /etc/skel/* /etc/skel/.[a-zA-Z1-9]* . 

Первые три строки из вышеперечисленных являются стандартными (по крайней мере, на моей машине с Ubuntu), а остальные не были протестированы. Этот маршрут обладает тем преимуществом, что его не нужно выполнять исключительно как root.

За исключением того, что он также помечен как "gdm". Dennis Williamson 14 лет назад 0
0
ayrnieu

Приготовление:

sudo mkdir /home/clean-homes/ sudo tar zcvf /home/clean-homes/$user.tar.gz ~user 

Я не использую GDM и поэтому забываю формат, /usr/share/xsessions/*.desktopкоторый он использует, но они просты. Пусть ваш вызовет скрипт

#! /bin/sh cd mkdir .old mv * .* .old rm -rf .old & tar zxpPf /home/clean-homes/$USER.tar.gz exec gnome-session # or whatever 

При этом новый пользователь выполняет всю работу по удалению старых файлов и воссозданию содержимого домашнего каталога при входе в систему. Это не решение проблемы, если вы хотите, чтобы старые файлы были защищены от нового пользователя: в этом случае вам следует создать несколько пользователей [почему бы и нет?] Или посоветовать людям запускать ваш сценарий «чистого выхода», или - если у вас есть люди, заблокированные для входа в систему только с вашим /usr/share/xsessions/*.desktops - перепишите вышеупомянутый скрипт с абсолютными путями и без фона rm.

Не полагайтесь на пользователей, очищающих свои собственные каталоги при выходе из системы. Смотрите: ctrl + alt + backspace pkill gnomeи физически доступный компьютер.

0
simplr

Ubuntu 8.10 и более поздние версии стандартно поставляются с опцией «Гостевая сессия». Это переключается на гостевую учетную запись со всеми обычными программами и каталогами в нетронутом состоянии. Любые изменения, сделанные гостем, теряются, когда гость выходит из системы. В любой момент вы можете переключиться на обычный сеанс, просто введя свой пароль.

Похожие вопросы