Я написал скрипт для добавления пользователей chroot sFTP.
Команда useradd:
sudo useradd -Ng sftponly -ms /bin/false "$USER"
Это сработало?
groups $USER
$USER : sftponly
Да, сработало. Большой!
Затем я смотрю на / etc / group и в нем нет $ USER. Я пытаюсь войти и выйти (не нужно - я не $ USER) и ничего не меняется. (для $ USER == yoko):
ftp:x:114:
sftponly:x:1003:george,john,paul,ringo
incron:x:115:
Почему я вижу $ USER в правильной группе при использовании групп, но не в / etc / group?
Из справочной страницы useradd
:
-g, --gid GROUP
The group name or number of the user's initial login group.
Первоначальная группа входа пользователя - это группа в четвертом поле в строке файла /etc/passwd
. Если вы ищете «yoko» в /etc/passwd
, вы найдете что-то вроде:
yoko:x:<yoko's UID>:1003::<yoko's home>:/bin/false
, где 1003
- GID группы sftponly
.
Вы не должны использовать useradd
, но вместо этого используйте adduser
. Однако, если вы настаиваете на использовании useradd
, вот что вы должны сделать:
sudo useradd -Ng sftponly -G sftponly -ms /bin/false "$USER"
Опция -g
изменяет только файл /etc/passwd
, делая «sftponly» первичной (входящей в систему) группой. Идентификатор пользователя. Опция -G изменяет /etc/groups
.