chsh以后进不去系统的解决之道暨FreeBSD下shell使用简介
chsh以后进不去系统的解决之道暨FreeBSD下shell使用简介
.Weu334 { display:none; }
前言:
来源"岁月联盟"
经常见很多朋友说把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
"岁月联盟"
这是因为login的时候读取的是/etc/pwd.db和/etc/spwd.db,所以在你更改了/etc/passwd和/etc/master.passwd之后还需要重新生成这两个文件。 www.Syue.com
www.Syue.com
三: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.
Www.Syue.Com
[本文来自"岁月联盟"]
必须是uid为0的用户才可以,而系统默认的用户中除了root之外还有个toor用户,因此要使用这种方法,必须在还能正常使用的时候passwd toor,给它设置一个密码,这样root用户出问题之后可以以toor用户登录su –m,然后重新chsh或者按照方法二那样自己修改密码文件,并重新生成pwd.db文件。
(www.Syue.com)
信息来自"岁月联盟"
#su -m的用法刚开始理解有误,特更正一下:
(Syue.com)
WWW.SYUE.COM
例如要在 pgsql 数据库的 data 目录下生成 ssl 证书,要求 own 是 pgsql,你可以 su -m pgsql 之后再在该目录下操作。
[资源来自"岁月联盟"]
uid=0的用户可以用setuid()抛弃特权,扮演其他用户的身份
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/15856/showart_2143382.html
页:
[1]