Я хочу настроить машину Linux, таким образом, что, когда конкретный пользователь, названный студентом, выходит из системы, их / корневой каталог вытерт чистый и сброс.
В основном я хочу выполнить эти действия, когда пользователь выходит из системы:
userdel student
rm -r /home/student
useradd -m student
echo student | passwd --stdin student
Существует ли более простой путь, чем удаление и воссоздание пользователя?
Примечание: Цель здесь состоит в том, чтобы вытереть содержание корневого каталога пользователя и повторно заполнить корневой каталог пользователя от/etc/skel. Я предполагаю, что просто пытаюсь работать вокруг проблем принадлежности файла, которые возникают когда копия/etc/skel по/home/student.
Править: То, что я должен сделать, подражать пути который useradd -m
копирует материал с /etc/skel
кому: /home/student
и изменяет владельца, группу и полномочия. Как я могу сделать что useradd -m
обходится без необходимости удалить и затем воссоздать пользователя?
Возможно, я пропускаю что-то, но почему удаляют и воссоздают пользователя вообще, если все, что Вы хотите, должно убрать корневой каталог?
Не можете Вы просто сделать a
rsync -a --delete /etc/skel/ /home/student/
каждый раз пользователь выходит из системы?
Возможно, также уничтожьте все пользовательские процессы, если кого-либо оставляют, но вот именно.
ОБНОВЛЕНИЕ: Для изменения владельца файлов необходимо просто работать
chown -R student:student /home/student/*
после rsync.
Я сомневаюсь, что полномочия должны быть изменены, но если так, Вы оказываетесь перед необходимостью делать это на файле основанием файла, чем-то как
chmod +x /home/student/bin/*
Отмеченный с "ударом", таким образом, я предполагаю, что Вы смотрите на вход в систему командной строки вместо 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]* .
Сначала 3 строки вышеупомянутого являются стандартными (по крайней мере, на моей машине Ubuntu), и остальное не было протестировано. Этот маршрут имеет преимущество не необходимости быть выполненным исключительно как корень.
Подготовка:
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/*.desktop
s - перепишите вышеупомянутый сценарий с полными путями и без фоновой обработки rm
.
Не полагайтесь на пользователей, освобождающих их собственные каталоги на выходе из системы. См.: ctrl+alt+backspace, pkill gnome
, и питание физически доступного компьютера.
Ubuntu 8.10 и позже появляется стандарт с опцией "Guest session". Это переключается на гостевую учетную запись со всеми обычными программами и каталогами в девственном состоянии. Любые изменения, которые вносит гость, потеряны, когда гость выходит из системы. В любое время можно переключиться на нормальную сессию, просто введя пароль.