在流浪盒上精确64(ubuntu 12.04)
使用Chef创建用户资源时,不会创建主目录:
我的食谱:
user "myuser" do
supports :manage_home => true
shell "/bin/bash"
home "/home/myuser"
comment "Created by Chef"
password "myencryptedpassword"
system true
provider Chef::Provider::User::Useradd
action :create
end
当我进行身份验证时:
$ su - myuser
Password:
No directory, logging in with HOME=/
directory "/home/myuser" do
owner "myuser"
group "myuser"
mode 00755
action :create
end
答案 0 :(得分:3)
虽然系统用户通常没有家庭目录,但是如果您指定home
,即使系统用户也会创建家庭目录。我已经尝试过了,无法重现这个问题。
正在发生的事情是文档中隐藏的一点点。 chef documentations说:
系统|用于创建系统用户。此属性可以与useradd一起用作提供程序,以创建将-r标志传递给useradd的系统用户。
如果查看useradd的手册页:
-r, --system Create a system account. System users will be created with no aging information in /etc/shadow, and their numeric identifiers are chosen in the SYS_UID_MIN-SYS_UID_MAX range, defined in >/etc/login.defs, instead of UID_MIN-UID_MAX (and their GID counterparts for the creation of groups). Note that useradd will not create a home directory for such an user, regardless of the default setting in /etc/login.defs (CREATE_HOME). You have to specify the -m options if you want a home directory for a system account to be created.
但是,如果指定主目录,似乎主厨 明确地传递-m
选项。因此,我无法重现这个问题。
答案 1 :(得分:1)
在用户创建后,您是否已将home属性添加到配方中?当我第一次开始创建系统用户时,我没有在管理配方并确认用户已创建之前添加:manage_home和home位到配方。在添加主目录管理后,后续运行配方并且home属性实际上不起作用,直到我删除用户并再次运行配方。
我认为如果用户已经存在,useradd将不再执行,因此通过配方添加-m将不会发生,除非用户被删除并且配方重新运行干净的系统并发送useradd - RM。
答案 2 :(得分:1)
我能够重现这个问题并解决它。 提示是user resource的厨师文档。 "除非/etc/login.defs中的CREATE_HOME设置为no"否则将创建[homedir]。在新的Ubuntu安装上,该行不存在。如果失踪,也许默认为否。
在/etc/login.defs中我添加了:
CREATE_HOME yes
一旦添加,我的厨师运行将完成并创建homedir,允许我然后修改用户homedir的内容。此方法可能比为每个用户手动创建homedirs更简单。