Я создал несколько пользователей с:
$ useradd john
а я забыл указать параметр -m
для создания домашнего каталога и копирования файлов скелета каждому пользователю. теперь я хочу это сделать и не хочу воссоздавать всех пользователей (должен быть более простой способ). Итак, есть ли способ создать пользовательские каталоги и скопировать файлы скелета?
Я подумал о создании каталогов, назначении их соответствующему пользователю, копировании всех файлов скелетов и передаче их соответствующему пользователю. но если есть такая команда, как useradd -m
это не создает снова пользователя, а создает каталоги, было бы лучше.
Также вы можете использовать mkhomedir_helper
Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]
Вам нужно будет создать каталог пользователей вручную. Это требует трех шагов:
/etc/passwd
, обычно там уже будет запись / home / login.И, наконец, установите правильные разрешения:
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
;)