Настройка пользователей во время установки на основе каталогов в /home

Sé que esto es bastante tarde, ¡pero en realidad encontré una respuesta para esto!

Ejecute este código después de que se inicie Gnome:

gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'imports.ui.altTab.WindowSwitcherPopup.prototype._getWindowList = function() {
let workspace = this._settings.get_boolean("current-workspace-only") ? global.screen.get_active_workspace() : null;
let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
allWindows = allWindows.filter(w => w.get_monitor() === global.screen.get_current_monitor());
return allWindows;
}'

Todo el crédito va a boisdeb en Reddit, que hizo el código js que realmente hace que esto funcione. Sería bueno si alguien realmente desarrollara el código en una extensión, pero por ahora no puedo quejarme :de que funciona de maravilla.

2
07.07.2019, 23:21
2 ответа

Are there any Gnu/Linux installers that will look at an old /home partition, and set up the users based on the directories in the root of this partition?

И да, и нет. Если /homeнаходится на отдельном разделе, то любой дистрибутив должен иметь возможность его использовать. Однако вам придется проверить UID и GID для каждого пользователя, чтобы убедиться, что они совпадают в /etc/passwdи /etc/group.

So if I install a new Gnu/Linux, and keep my old /home, the /home partition will be full of files owned by various users and groups. I also need to set up a load of users, these users need to match the ones from the old system, so that the file in /home have the correct ownership. The root of the /home partition have a directory for each user, that is owned by that user, and their primary group.

В принципе, да. Вы можете либо отредактировать соответствующие файлы конфигурации в /etc, либо заново -создать всех пользователей и группы, а затем использовать chown, чтобы исправить права доступа к файлам в ваших старых /homeкаталогах.

Therefore it should be possible to scan this directory, and create a user/primary-group for each directory that is found.

Не знаю, есть ли инструменты, которые делают это автоматически, но вот несколько команд, которые могут помочь.

ls -n /old_home
total 8
drwxr-xr-x 32 1000 1000 4096 Jul  5 18:26 old_user

chown -R new_user:new_group /home/old_user

Are there any tools that already do this?

Не то, чтобы я знал об этом.

Are they used in any Gnu/Linux installed?

Does Debian do this?

(I am about to install a new Debian.)

Отлично!

0
27.01.2020, 22:16

Не существует скрипта, который мог бы это сделать, но оболочки UNIX/Linux, в силу того, что они есть, вполне позволяют объединить ряд инструментов, чтобы управлять хотя бы частью того, что вам нужно.

#!/bin/bash
for homedir in /home/*
do
    user="${homedir##*/}"
    uid="$(stat -c %u "$homedir")"
    gid="$(stat -c %g "$homedir")"

    groupadd --gid "$gid" "$user"
    useradd --gid "$gid" --uid "$uid" --shell /bin/bash --home-dir "$homedir" --no-create-home "$user"
done

Проверка ошибок не выполняется, но в большинстве случаев groupaddи useraddзавершатся благополучно. Добавьте к обеим командам префикс (, например )echo, чтобы увидеть, что произойдет, прежде чем запускать ее в реальной среде. Я также настоятельно рекомендую вам заранее сохранить копии файлов /etc/passwd, /etc/shadow, /etc/groupи /etc/gshadow, чтобы, если все пойдет не так, вы могли безопасно восстановить базу данных пользователей до исходных значений и повторить попытку..

3
27.01.2020, 22:16

Теги

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