我已经编写了一个脚本来添加 chrooted sFTP 用户。
useradd 命令是:
sudo useradd -Ng sftponly -ms /bin/false "$USER"
它有效吗?
groups $USER
$USER : sftponly
是的,太棒了!
然后我查看了 /etc/group,发现 sftponly 中没有 $USER。我尝试登录和退出(应该不需要 - 我不是 $USER),但没有任何变化。(对于 $USER == yoko):
ftp:x:114:
sftponly:x:1003:george,john,paul,ringo
incron:x:115:
为什么在使用组时我在正确的组中看到 $USER,但在 /etc/group 中却看不到?
答案1
您不应使用useradd
,而应使用adduser
。但是,如果您坚持使用useradd
,则应执行以下操作:
sudo useradd -Ng sftponly -G sftponly -ms /bin/false "$USER"
该-g
选项仅更改/etc/passwd
文件,使“sftponly”成为用户的主要(登录)组 ID。-G 选项会修改/etc/groups
。
答案2
来自useradd
手册页:
-g, --gid GROUP
The group name or number of the user's initial login group.
用户的初始登录组是文件中第 4 个字段的组/etc/passwd
。如果您在其中搜索“yoko”,/etc/passwd
则会找到类似以下内容的内容:
yoko:x:<yoko's UID>:1003::<yoko's home>:/bin/false
其中1003
是组的 GID sftponly
。