引子
初学linux那会儿,学到建立用户时,了解到会自动建立用户组和家目录。因为用户组和家目录同名,所以涉及到相关命令时,常对这两个概念感到模糊,甚至混为一谈。去网上寻求答案,找了一圈“家目录和用户组有什么关系/区别”,始终得不到好的解答。而在学了一段时间后,对当初的疑问有了一个比较完善的回答,特此记录一下。
一些参数
我们用useradd来创建新用户,而该命令的 -D 参数可以查看有关新建一个新用户的相关参数,举其中两个:
SKEL=/etc/skel #家目录建立时所参考的目录
HOME=/home #家目录存放的位置
同样可以查看相关参数的,还有文件/etc/login.defs 。该文件里面有几条参数,为
GID_MIN 500 #最小值
GID_MAX 60000 #最大值
#建立新用户时,如果不指定用户组,就会自动建立一个同名的用户组。此用户组的GID由这个 最小值500 与/etc/group下的最大GID进行比较,两者最大的值加一而得。
CREATE_HOME yes #是否自动帮新建用户建立家目录。
如果把它变为no,那么新建的用户后登录时,就会收到警告,提示字符(就是输命令时最左边那串,那是全局变量PS1,感兴趣的可以去了解了解)会变得奇奇怪怪,此时你再用pwd就会发现,你是在/root目录下的。
#建立的家目录放哪,自然就是上文提到的/home目录里了
家目录是用户登录时进入的第一个目录,在提示字符上显示~,如果使用pwd,大概率会得到 /home/用户名 这样一个结果,这便是家目录。
而用户组与文件目录的权限有关,是有GID对应的,并不是某个具体的目录。
所以这两者并不是一个东西。
扩展:修改用户所在组和修改家目录
以下操作自然用root来操作
如果想要修改已有用户的所在组很简单,使用usermod -g 用户组 用户名即可。
而若想修改用户的家目录(即登录时进入的第一个目录),则进行以下步骤:
1.用usermod -d 目录 用户 来修改家目录(容易被进程占用,导致出错)或在/etc/passwd下修改对应栏位(第六个栏位即为家目录)
2.用chown -R 用户名:组名 文件 修改该目录及其该目录下文件的拥有者和所属组(不然出现权限不够进不去“家门”的情况就尴尬了)
3使用chmod 700 目录更改该目录的权限为700
——————————————
本文含有个人总结,如有错误,敬请斧正,万分感谢!