在尝试为 vsftpd 创建新的 FTP 用户时,我偶然发现了这个问题。使用以下命令创建新用户并尝试使用 FileZilla 登录后,我会收到“密码不正确”错误。
useradd f -p pass -d /home/f -s /bin/false
Run Code Online (Sandbox Code Playgroud)
这样做之后,/etc/shadow包含
f:pass:1111:0:99:2:::
Run Code Online (Sandbox Code Playgroud)
一旦我运行以下命令并提供相同的通行证
passwd f
Run Code Online (Sandbox Code Playgroud)
/etc/shadow包含
f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::
Run Code Online (Sandbox Code Playgroud)
似乎在我运行passwd时会发生加密,但不会在useradd 时发生
重要的是,在执行此操作后,我可以使用完全相同的凭据登录到 FTP。
我使用 CentOS 5.11,vsftpd 用于 FTP,FileZilla 用于 FTP 访问
/var/log/secure包含:
Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, shell=/bin/false
Run Code Online (Sandbox Code Playgroud)
为什么当我传递-p pass
给 useradd时它不起作用?我需要做什么才能让它发挥作用?
我通过执行以下操作添加了一个新的 linux 用户
useradd -d /var/www/mywebsite.com -m newuser
passwd newuser
Run Code Online (Sandbox Code Playgroud)
我通过使用以下命令登录服务器来测试帐户
ssh newuser@mywebsite.com
Run Code Online (Sandbox Code Playgroud)
登录后,shell 不允许我执行选项卡自动完成。例如,我会输入 /var/www/myweb{tab},但选项卡按钮只会在 shell 中输入一个空格。此外,按向上和向下箭头键不会给我输入的最新 shell 命令。
当我以 root 身份 ssh 登录时,一切正常。但是当我以新用户身份 ssh 登录时它不起作用。
我错过了什么?
谢谢
从adduser
命令中,我看到了--system
创建系统用户的选项。系统用户将使用/bin/false
并默认属于nogroup
. 它也不会将 复制/etc/skel
到主目录。
在哪种情况下我更喜欢创建系统用户?
我希望能够让su
另一个用户以减少的权限运行脚本。不幸的是,我每次都必须输入密码,有没有办法在不需要密码提示的情况下创建用户?
删除用户后,该用户添加的 crontab 是否也被删除?我问这个是因为我可以在
/var/spool/cron/
Run Code Online (Sandbox Code Playgroud)
当我 cat 文件时,我可以看到该用户添加的 cron。用户不再存在,cron 将无法工作。但是为什么crontab文件还在呢?
创建没有密码的用户的好方法是什么?没有密码,我的意思是一个帐户,它只能由使用 su/sudo 命令的 root 帐户使用(如 Apache 或 Nginx 使用的“nobody”用户)。
我已经读过在 /etc/shadow 文件的密码字段中放置 * 可以工作,但我想知道是否有办法使用 useradd 命令来做到这一点。
我想过这样做:
useradd my_new_user -s /sbin/nologin -p '*'
Run Code Online (Sandbox Code Playgroud)
但我不确定 useradd 命令可以这样使用。我还没有找到任何关于它的参考。
当我创建一个用户useradd
在CentOS 5的命令,将创建主目录和它的/ etc / skel中的文件复制到该目录中,但是当我给useradd
与-d
选择一些不同的路径,主目录不创建skeloton文件,如.bachrc
,.bash_history
等等。
如果有人可以给出提示,那么我可以解决这个问题。实际上我需要执行一些特定的命令 .bashrc 文件,但它不存在。我手动创建了它,但它在用户登录时并没有执行。
问候
我想在不需要任何交互的情况下添加新用户,因此使用指定的密码。我试过上面的命令:
useradd -m -p user -s /bin/bash user
Run Code Online (Sandbox Code Playgroud)
所以它应该是一个user
with password user
,但我无法通过 SSH 登录。
只是想知道是否可以将我想使用的密码传递给 ubuntu 中的 adduser 命令,以便它可以自动化。
我想做这样的事情
echo "密码" | 添加用户测试
这将消除填写 adduser 命令所需的表单并为“test”用户设置密码“password”的需要。
Ansible 中的用户模块有一些问题。一切都在技术上工作,只是不像我预期的那样。Ansible 似乎在 Ubuntu 中使用“useradd”而不是较新的“adduser”,我认为它在创建用户时缺少一些配置设置。如果我让 Ansible 创建用户,则该帐户已创建并处于活动状态,但该帐户的行为有点奇怪。特别是,不存在 user@hostname 提示。我确实确认它正在使用 /bin/bash。作为 Ansible 创建的用户的提示,我得到的只是 $. 甚至不显示当前工作目录。我想使用 Ansible 创建管理员帐户,但如果它的行为像这样,则不会。但是,如果我在操作系统中使用 adduser 手动创建用户,则帐户会按预期设置。有什么想法吗?
Ansible 用户提示:
$
Run Code Online (Sandbox Code Playgroud)
手动用户创建提示:
username@hostname:directory$
Run Code Online (Sandbox Code Playgroud)
这是剧本的示例用户部分:
- name: Add user
user:
name: Username
password: 'Password Hash'
groups: sudo
state: present
Run Code Online (Sandbox Code Playgroud)