最近需要把服务器上的新硬盘挂载在到/home目录下;因为/home是Linux系统中很重要的一个目录,在操作过程中也是小心翼翼,生怕捅出漏子。参照其他网友分享的资料,基本操作如下:
1.创建分区,再格式化;(这个步骤就不细说了)
2.先将硬盘挂载到临时目录,比如,/new_home
mount /dev/xvdd1 /new_home
3.将/home目录下的数据拷贝到/new_home目录下
cd /home
sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /new_home/
或
cp -a /home/* /new_home/
4.将/home目录简单备份
mv /home /old_home
5.将新的硬盘卸载,再重新挂载到/home目录下
umount /new_home
mkdir /home
mount /dev_xvdd1 /home
6.接着修改文件/etc/fstab,让硬盘在开机时进行自动挂载;重启机器前,务必确认是否有问题
mount -a
在这些步骤都完成之后,发现了以下的问题:普通用户通过ssh来登录该机器时,无法切换到该用户的主目录,提示:
'Could not chdir to home directory /home/[user]: Permission denied'
在网上一搜,一些博客说是selinux的问题,可以通过修改以下的配置来解决:
其实就是修改一下/etc/sysconfig/selinux
将SELINUX修改为permissive
就是要将selinux关闭。随后,就确认了服务器上的配置,为enforing;但没敢将selinux关闭。只能继续找其他的办法。
在一篇国外的博文,看到了解决的方法:
1.首先,是将selinux关闭,确认是不是这个引起的(这个步骤我没做);如果是的话,则按下面方法修改:
可以先用指令:ls --context -d /home 看一下/home/[user]目录的属性,应该是这样的:
drwx------ [user] [user] unconfined_u:object_u:user_home_dir_t:so /home/[user]
其中,很重要的一个属性 是:user_home_dir_t
2.然后使用指令:restorecon /home 恢复 SELinux 文件属性文件属性即恢复文件的安全上下文
3.重新设置用户主目录:usermod -d /home/[user] -m [user]
4.修改目录属性:chcon -t user_home_dir_t /home/[user]
至此,问题解决!