Chinaunix首页 | 论坛 | 博客
  • 博客访问: 38082
  • 博文数量: 8
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-16 23:26
文章分类

全部博文(8)

文章存档

2014年(1)

2011年(2)

2010年(4)

2008年(1)

我的朋友

分类: BSD

2010-01-07 20:15:43

chsh以后进不去系统的解决之道暨FreeBSD下shell使用简介

  前言:

来源"岁月联盟"

  经常见很多朋友说把shell改成了bash,现在进不去系统了,询问如何解决,觉得有必要把它作个总结,希望大家一定不要更改root用户shell,追求强大的功能没错,但为此放弃则不可取,随便把shell的知识普及一下(注:本人对shell其实也是一知半解J),让大家对shell有个初步的印象。

[信息来源"岁月联盟"]


  p.s.宣传一下CU的shell版 ,高手如云啊,学shell的好去处,希望不要在我开始学的时候没落了,呵呵。 信息来源"岁月联盟"

资源来自"岁月联盟"

  如果您把root的shell改成了bash(很多人因为bash的强大功能而选择了它,或者是从linux转到BSD上的,习惯了bash),而导致进不去系统了,可以通过以下几种方式解决:

SYUE.COM

  []

  一:系统启动时,选择“4”,进入“单用户”模式,输入“boot -s”进入单用户的提示符“#”,依次键入如下命令: []

内容来自"岁月联盟"

  fsck -p
  mount -u /
  mount -a -t ufs
  swapon -a
  chsh -s /bin/csh 内容来自"岁月联盟"

"岁月联盟"

  二:这个方法其实和方法一相似,进入单用户模式以后,把/etc/passwd和/etc/master.passwd里root的shell都改成/bin/csh,然后执行:

来源"岁月联盟"

信息来自"岁月联盟"

  fsck -p
  mount -u /
  mount -a -t ufs
  swapon -a
  ee /etc/passwd
  ee /etc/master.passwd
  pwd_mkdb /etc/master.passwd

[Syue.com]

"岁月联盟"

  这是因为login的时候读取的是/etc/pwd.db和/etc/spwd.db,所以在你更改了/etc/passwd和/etc/master.passwd之后还需要重新生成这两个文件。

  三:su -m成为root,这样tcsh就成为你作为root时候的shell了,然后chsh即可。
man su可以看到:

信息来源"岁月联盟"

[信息来源"岁月联盟"]

  -m      Leave the environment unmodified.  The invoked shell is your
             login shell, and no directory changes are made.  As a security
             precaution, if the target user's shell is a non-standard shell
             (as defined by getusershell(3)) and the caller's real uid is non-
             zero, su will fail.

  [本文来自"岁月联盟"]

  必须是uid为0的用户才可以,而系统默认的用户中除了root之外还有个toor用户,因此要使用这种方法,必须在还能正常使用的时候passwd toor,给它设置一个密码,这样root用户出问题之后可以以toor用户登录su –m,然后重新chsh或者按照方法二那样自己修改密码文件,并重新生成pwd.db文件。

()

信息来自"岁月联盟"

  #su -m的用法刚开始理解有误,特更正一下:

(Syue.com)

  例如要在 pgsql 数据库的 data 目录下生成 ssl 证书,要求 own 是 pgsql,你可以 su -m pgsql 之后再在该目录下操作。

[]

[资源来自"岁月联盟"]

  uid=0的用户可以用setuid()抛弃特权,扮演其他用户的身份

阅读(1002) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~