У каждого пользователя в Unix есть своя домашняя папка, предназначенная для хранения данных пользователя в месте, доступном только для него. О том, как узнать домашнюю директорию любого пользователя можно прочитать по → этой ссылке. О том, где и как создаются записи о домашнем каталоге пользователя написано в → этой статье. О том, как поменять домашнюю папку пользователя по умолчанию в Linux → по этой ссылке. Все перечисленные сведения полезны и могут помочь ручками поправить путь до домашнего каталога пользователя, однако для его смены есть удобная команда linux — usermod
. То, как с её помощью быстро поменять домашнюю директорию для пользователя и рассмотрим ниже.
Помощь по команде usermod
в linux
Зная название команды, лично я лезу в подсказки операционной системе по ней. Чего и всем советую. =) Данный случай не является исключением. Сперва посмотрим на те опции, которые описаны в хэлпе:
root@server:~# usermod -h
Usage: usermod [options] LOGIN
Options:
-c, --comment COMMENT new value of the GECOS field
-d, --home HOME_DIR new home directory for the user account
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP as new primary group
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
-h, --help display this help message and exit
-l, --login NEW_LOGIN new value of the login name
-L, --lock lock the user account
-m, --move-home move contents of the home directory to the
new location (use only with -d)
-o, --non-unique allow using duplicate (non-unique) UID
-p, --password PASSWORD use encrypted password for the new password
-R, --root CHROOT_DIR directory to chroot into
-s, --shell SHELL new login shell for the user account
-u, --uid UID new UID for the user account
-U, --unlock unlock the user account
-v, --add-subuids FIRST-LAST add range of subordinate uids
-V, --del-subuids FIRST-LAST remove range of subordinate uids
-w, --add-subgids FIRST-LAST add range of subordinate gids
-W, --del-subgids FIRST-LAST remove range of subordinate gids
-Z, --selinux-user SEUSER new SELinux user mapping for the user account
Как видно, опций у команды usermod
более, чем достаточно, но для текущей цели (смены домашнего каталога пользователя) понадобится опция -d
. Её и рассмотрим более подробно.
Как с помощью опции -d
команды usermod
в линукс поменять домашнюю директорию пользователя
Рассмотрим на живом примере. Создадим нового пользователя (как это сделать → подробно тут):
root@server:~# adduser newuser
Посмотрим на запись об этом пользователе в файле /etc/passwd
. Она имеет следующий вид:
root@server:~# cat /etc/passwd
...
newuser:x:1000:1000:,,,:/var/www/newuser:/bin/bash
...
Посмотрим содержимое этой домашней папки (она пустая):
root@server:~# ls -l /var/www/newuser
total 0
root@server:~# tree /var/www/newuser
/var/www/newuser
0 directories, 0 files
И теперь сменим домашнюю папку этому пользователю:
root@server:~# usermod -d /var/www/newuser2 newuser
root@server:~# ls -l /var/www/newuser2
ls: cannot access '/var/www/newuser2': No such file or directory
root@server:~# cat /etc/passwd
...
newuser:x:1000:1000:,,,:/var/www/newuser2:/bin/bash
...
- Командой
usermod -d /var/www/newuser2 newuser
прописали папку/var/www/newuser2
в качестве домашней для пользователяnewuser
- Но директория при этом не была создана. Это видно при попытке её прочитать:
ls -l /var/www/newuser2
- Однако, запись в файле
/etc/passwd
была изменена.
Можно конечно создать эту папку вручную командой mkdir
(читать тут), а потом прописать ей владельца и группу командой chown
(читать тут), но проще и безболезненнее воспользоваться дополнительной опцией -m
команды usermod
. Важно, чтобы папка пользователя содержала хоть что-нибудь в себе. Даже просто пустой файл. Тогда и только тогда, новая папка будет создана и в неё будет перенесено содержимое старой папки.
Поэтому для того, чтобы поменять домашнюю директорию для пользователя linux, нужно воспользоваться командой usermod с опцией -md. При этом в папке пользователя должны храниться какие-нибудь данные.
Формат команды переноса:
usermod -md /путь_до_новой_домашней_папки username
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)