Назад | Перейти на главную страницу

создавать домашние каталоги после создания пользователей

Я создал несколько пользователей с:

$ useradd john

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

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

Также вы можете использовать mkhomedir_helper

Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]

Вам нужно будет создать каталог пользователей вручную. Это требует трех шагов:

  1. Создать каталог в соответствии с /etc/passwd, обычно там уже будет запись / home / login.
  2. Скопируйте исходные файлы из / etc / skel
  3. И, наконец, установите правильные разрешения:

    • mkdir /home/YOU
    • cd /home/YOU
    • cp -r /etc/skel/. .
    • chown -R YOU.YOURGROUP .
    • chmod -R go=u,go-w .
    • chmod go= .

Кстати: я всегда скучаю по -m вариант для useradd тоже. По крайней мере, системы на основе Debian должны иметь adduser команда, которую я рекомендую использовать, а не useradd. Если ты пропустил -m вариант, который также стоит рассмотреть deluser а затем воссоздайте пользователя с соответствующими параметрами.

Изменить: добавлено -r для копирования также каталоги.

Это может показаться глупой идеей, но если пользователи на самом деле ничего не делают, вы можете сделать:

cat /etc/passwd | cut -f 1 -d : >/tmp/users.list

Затем отредактируйте /tmp/users.list, чтобы он содержал только тех пользователей, которых вы хотите. Затем сделайте:


for i in `cat /tmp/users.list`
do
    userdel $i
    useradd -m $i
done

Однако многие дистрибутивы на основе Redhat создают вам новый домашний каталог при первом входе в систему, если он указан в / etc / passwd, где должен быть каталог.

Чтобы проверить это, сделайте «su -» и посмотрите, «правильно ли». Если этого не произойдет, я думаю, что приведенный выше сценарий будет работать вполне нормально.

mkdir -p /home/john
chown john:john /home/john
usermod -d /home/john john

Я считаю, что это должно помочь

Вы можете использовать что-то вроде пам_мхомедир чтобы это никогда не было проблемой для пользователей в будущем. pam_mkhomedir - это модуль PAM, который автоматически создает домашний каталог пользователя при входе в систему, если он не существует, и заполняет его файлами из / etc / skel (или любого другого каталога skel, который вы укажете).

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

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

#!/bin/bash
cat /etc/passwd | while IFS=: read n x i g c d r
do
  # my system has uid started at 1000, but has nfsnobody at 65534:
  if [[ "$i" -ge 1000 && "$i" -le 65000 && ! -x "$d" ]]
  then
    cp -av /etc/skel "$d"
    chown -R "$i:$g" "$d"
    # may needed in SELinux system:
    restorecon -R "$d"
    # add your chmod as your need:
    chmod -R o-rw "$d"
  fi
done

Если вы редактируете /etc/login.defs содержать

CREATE_HOME yes

тогда домашние каталоги будут автоматически созданы для всех будущих пользователей, если вы не сообщите системе не сделать так.

Другой вариант - использовать PAM для входа в систему и использовать модуль pam_mkhomedir для автоматического создания домашнего каталога при первом входе в систему.

Войдите в систему с пользователем john и напишите из оболочки:

xdg-user-dirs-update

Это оно! Не используйте sudo или su, вам не нужен root-доступ для создания некоторых каталогов. Из учетной записи root вы можете использовать:

sudo -u john xdg-user-dirs-update

Таким образом, вы выполните команду как john, что может быть полезно, если вы допустили ошибку с более чем одним пользователем.

Мой первый шаг после useradd должен su - <user>.

Создает домашние каталоги, копирует скелеты и т. Д. - по крайней мере, на CentOS 4 я делаю это чаще всего.

Это именно то, что mkhomedir_helper $USERNAME команда делает.

Вы можете просто отредактировать / etc / passwd. Второе после последнего поле - это домашний каталог пользователя.

greeblesnort:x:1000:1000:greeblesnort,,,:/home/greeblesnort:/bin/bash
usermod -d /home/john john

или

usermod --home /home/john john

и читать

man usermod

;)