免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2413 | 回复: 4
打印 上一主题 下一主题

[已解决]Solrais9普通用户登陆不了CDE,root用户可以 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-03 11:10 |只看该作者 |倒序浏览
Solaris9 的系统,本来好好的,被一个新手在根目录下面执行了

#chmod  -R 777 *

结果重启后CDE的登陆界面都起不来了,提示“登陆不正确,请再试一次”,
然后我boot -s启动到单用户模式,执行了chmod -R  go-w * 把目录的可写权限去掉后,
CDE的登陆界面可以看到了,root用户也可以登陆进去,但是普通用户登陆不进去,现象是输入
用户名和密码后过了几秒有回到了登陆界面。

另外请问/tmp目录的权限的问题,为什么我设置了chmod -R 777 /tmp 重启后/tmp的权限
又变成了drwxr-xr-t 了?

[ 本帖最后由 slurker 于 2008-1-4 19:40 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-01-03 11:24 |只看该作者
根下执行 #chmod  -R 777 *之后会出很多问题的,就是用户最后能进去了,系统还会有别的问题,最好重装系统,或者一个一个的改会原样的权限。

论坛徽章:
0
3 [报告]
发表于 2008-01-03 13:37 |只看该作者
tmp目录的内容由内核管理,每次重启都会清空重新来过的

论坛徽章:
0
4 [报告]
发表于 2008-01-04 19:40 |只看该作者
问题解决了,写了个脚本,在另外一台好的机器上面运行,把所有的文件和权限写出到一个文件里,然后拷到坏的机器上面恢复权限,恢复后普通用户可以登陆了,估计和文件的Setuid、Setgid位有关。

备份权限脚本getfilemod.sh:
用法: #./getfilemod.sh  /  allfilemod.log  //把根目录下面所有的文件名和权限写到文件allfilmod.log里面
#!/bin/sh
TEMPFILE=/tmp/temp`date '+%m%d%H%M%S'`.log
find $1  -print > $TEMPFILE
while read LINE
do
  AMOD=`ls -ld $LINE | awk '{print $1}' | cut -c 2-10`
  UMOD=`echo $AMOD | cut -c 1-3`
  GMOD=`echo $AMOD | cut -c 4-6`
  OMOD=`echo $AMOD | cut -c 7-9`
  SETUID=0
  SETGID=0
  SBIT=0
  case "$UMOD" in
          'rwx')
                  U=7
                ;;
          'rws')
                   U=7
                SETUID=4
                      ;;
          'rw-')
                U=6
                      ;;               
          'rwS')
                U=6
                SETUID=4
                      ;;               
          'r-x')
                  U=5
                ;;
          'r-s')
                  U=5
                SETUID=4
                ;;
          'r--')
                  U=4
                ;;
          'r-S')
                  U=4
                SETUID=4
                ;;
          '-wx')
                  U=3
                ;;
          '-ws')
                  U=3
                SETUID=4
                ;;
          '-w-')
                  U=2
                ;;
          '-wS')
                  U=2
                SETUID=4
                ;;
          '--x')
                  U=1
                ;;
          '--s')
                  U=1
                SETUID=4
                ;;
          '--S')
                  U=0
                SETUID=4
                ;;
          *)
                  U=0
                ;;
  esac

  case "$GMOD" in
          'rwx')
                  G=7
                ;;
          'rws')
                   G=7
                SETGID=2
                      ;;
          'rw-')
                G=6
                      ;;               
          'rwl')
                G=6
                SETGID=2
                      ;;               
          'r-x')
                  G=5
                ;;
          'r-s')
                  G=5
                SETGID=2
                ;;
          'r--')
                  G=4
                ;;
          'r-l')
                  G=4
                SETGID=2
                ;;
          '-wx')
                  G=3
                ;;
          '-ws')
                  G=3
                SETGID=2
                ;;
          '-w-')
                  G=2
                ;;
          '-wl')
                  G=2
                SETGID=2
                ;;
          '--x')
                  G=1
                ;;
          '--s')
                  G=1
                SETGID=2
                ;;
          '--l')
                  G=0
                SETGID=2
                ;;
          *)
                  G=0
                ;;
  esac

  case "$OMOD" in
          'rwx')
                  O=7
                ;;
          'rwt')
                   O=7
                SBIT=1
                      ;;
          'rw-')
                O=6
                      ;;               
          'rwT')
                O=6
                SBIT=1
                      ;;               
          'r-x')
                  O=5
                ;;
          'r-t')
                  O=5
                SBIT=1
                ;;
          'r--')
                  O=4
                ;;
          'r-T')
                  O=4
                SBIT=1
                ;;
          '-wx')
                  O=3
                ;;
          '-wt')
                  O=3
                SBIT=1
                ;;
          '-w-')
                  O=2
                ;;
          '-wT')
                  O=2
                SBIT=1
                ;;
          '--x')
                  O=1
                ;;
          '--t')
                  O=1
                SBIT=1
                ;;
          '--T')
                  O=0
                SBIT=1
                ;;
          *)
                  O=0
                ;;
  esac
  S=`expr $SETUID + $SETGID + $SBIT `
  
  echo "$S$U$G$O $LINE" >> $2
done < $TEMPFILE
rm $TEMPFILE


恢复权限脚本setfilemod.sh:
用法:#./setfilemod.sh  allfilemod.log   //根据allfilemod.log里面的内容恢复权限

#!/bin/sh
while read LINE
do
  chmod $LINE > /tmp/chmod.log 2>&1
done < $1

[ 本帖最后由 slurker 于 2008-1-4 19:43 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-01-04 22:57 |只看该作者
强,楼主的方法不错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP