问题描述:
学校机房的samba服务器中本来所有用户都是存放在/home目录下的,但是我在为用户统一修改权限时发现这样极不方便。因为老师和学生的权限肯定是不同的,但他们又都在同一个目录下,修改起来很麻烦。
我的解决办法是:在/home目录下新建一个teacher目录用来存放教师的用户家目录,再新建一个student用来存放学生的用户家目录,这样下次修改权限时就可以直接用通配符来分别为教师和学生修改了。
既然有了想法,就开始实施吧。
我选择使用usermod命令一个一个的辛苦的为每个用户修改家目录,而不是简单粗暴地修改/etc/passwd文件。
以下以“sxy”这个用户来做演示,注:此时我的工作目录在/home下,且/home/teacher与/home/student目录已创建。
usermod -md student/sxy sxy
修改后,查看/home下已经没有sxy这目录了,此目录已被迁移至/home/student下。
然而, 重点来了!!!!
虽然成功的迁移了目录,但是我用windows登陆samba服务器的时候点sxy这个共享目录竟然提示我“找不到路径”???注:此处的sxy共享是使用[homes]配置的。
排错过程:
我的第一步:怀疑,是不是因为samba的用户数据库中记录的还是旧的文件路径,要将用户重新加入数据库才能解决问题?
结果:用户重新加入samba数据库后问题依旧。
第二步:怀疑,是不是samba的[homes]字段必须使用默认的家目录路径,也是就是存放在/home下,不能自定义家目录?
结果:新建了一个系统用户“test”,创建用户时指定其家目录为/home/student/test并将其加入samba用户数据库中后,发现其家目录的共享可正常访问。
第三步:陷入沉思~~~随后怀疑,是不是因为usermod命令修改用户家目录改的不够彻底(比如说,某些系统配置文件中的用户家目录的路径还是以前的)。
结果:删除一个samba家目录共享无法访问的用户“lzl”,并在重新建立时使用相同的用户名,且指定家目录为/home/student/lzl同时加入到samba用户数据库中后samba的家目录共享又可以正常访问了。
第四步:感觉上,第三步中貌似找到了问题的原因。就在我准备一个个删除并重建用户时突然一个想法冒出来,我是不是可以切换到一个之前修改过家目录的“问题用户”上,来看看其家目录到底变没变。
结果:使用su – sxy命令尝试切换到“sxy”这个用户上时抛出错误:
第五步:我注意到,第四步的报错中的路径是相对路径而不是绝对路径,马上查看/etc/passwd文件,发现,所有的“问题用户”的家目录都是相对路径而正常用户都是绝对路径。
问题用户:
正常用户:
至此,问题的原因彻底搞清楚了,那就是因为我在使用usermod修改家目录时使用的是相对路径。
解决办法:使用usermod命令重新修改为绝对路径,或直接改/etc/passwd文件。