今日刚准备下班,研发同事就是WEB服务器访问不了; 一看QQ聊天记录有同事在处理,于是下班。
刚进电梯处理故障同事打电话来说明了情况, 确实无法处理。抓紧时间回家开始解决。
登录服务器进行以下操作无果:
检查WEB目录权限。。。。。。。 正常
检查进程。。。。。。。。。。。 正常
使用root用户启动WEB服务器。。。正常访问
至此肯定是用户权限的问题, 逐使用sudo和su切换到普通用户看看权限问题
切换用户时提示:
cannot change directory to /home/www: Permission deniedsu: /bin/bash: Permission denied
从没遇到这种情况, 逐上网搜索:
关键词1: linux 只有root用户可访问资源 无果
关键词2: linux 普通用户不能访问系统资源 无果
关键词3: cannot change directory to /home/www: Permission denied 无果
关键词4: su: /bin/bash: Permission denied
找到以下文章:
按照文中的方法处理,问题解决。以下是文章的内容:
客户一个oracle突然当机了,由于业务启动,客户下意识的重启了服务器,系统是起来了,准备切换到oracle用户下启动数据库,可以怎么都无法su切换,真是火上浇油呀,描述如下:在root用户下,su到一个普通用户oracle,得到如下错误:[root ~]# su - oraclesu: warning: cannot change directory to /home/oracle: Permission deniedsu: /bin/bash: Permission denied而oracle用户也无法通过直接登录,出现同样错误。这是一个非常奇怪的问题,到底是什么导致的呢?思路如下:1,程序执行权限问题2,程序依赖的共享库权限问题3,目录权限问题4,根空间问题。检查/bin/bash,权限正确,检查/home/oracle权限正确,检查/lib/ld-***.so,权限也正确。继续调试,检查/etc/passwd,将oracle的home设置为/tmp,把/tmp设置为777,这个权限应该是最宽松的。而su出现同样的错误。也就是oracle用户无法访问777权限的/tmp。问题到底出现在哪里呢?最后通过star命令,看到了问题根本,[root ~]#stat /输出如下:因为你ls是看不到的。 File: “/” Size: 1024 Blocks: 2 IO Block: 1024 目录Device: 803h/2051d Inode: 2 Links: 22Access: (0666/drw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2007-12-01 22:28:48.000000000 +0800Modify: 2007-12-01 22:28:34.000000000 +0800Change: 2007-12-01 23:17:35.000000000 +0800问题出来了,这里的权限是错误的,X权限的丢失造成的。[root ~]#chmod 755 /修改后,问题消失。产生上述问题的方法:第一种,chmod 666 /,可以导致。或者,第二种,chmod 700 /lib/ld-xxxx.so,也可以导致su失败。有兴趣可以自己试一下。/ 权限的丢失对于各种运行在自己用户身份上的daemon也存在同样的影响。 |
非常感谢,这位仁兄的经验分享。