Linux从入门到精通(续5)
3.1.5 重启/关闭计算机
reboot重启.
halt 关机(不关闭电源).
在关闭计算机之前最好把所有的运行程序都关闭。从GUI 的主菜单(GNOME 或者KDE)选择"Logout"。接着,在logout 的窗口里,选择"Shutdown"。
命令:shutdown -h -t 00
3.1.6 处理挂起的程序
出错的程序都可以被中止
一个在前台运行的文本程序可以在任何时候使用C 中止,但是这对比较大的应用程序不起作用,因为这些应用程序为避免用户的误操作,通常把C 的功能屏蔽。当程序被挂起时,你可以使用Z 将程序送到后台运行(不是百分百可行),或者切换到不同的终端(使用),然后,使用相同的用户名登录到系统。一旦你重新回到系统里,找到你需要中止的程序:
ps
这个命令代表"列出当前状态"(print status),可以显示当前系统中由该用户运行的进程列表。
在ps 的输出中,找到挂起的程序的PID 号,然后执行命令:
kill 123
该命令将中止PID 号码为123 的进程。
作为一般用户,我只能中止那些由我运行的进程。而作为超级用户可以中止任何进程。想要看系统中所有正在运行的进程的完整列表,用命令:
ps -axu | more
这命令将列出正在运行的所有进程(选项a),包括那些没有控制终端的进程(选项x),包括每个进程所属的用户名(选项u)。因为显示的内容可能要超过一个屏幕,所以用管道命令"|"加上"more"让换屏幕之间有个停顿。
kill 命令另有一个快捷的方法killall,举例:
killall netscape
这个命令将中止名称是netscape 的所有进程
killall pppd
3.1.7 命令选项
大部分命令带很多选项,大部分选项在字符前面带有"-",举个例子:
dir -l
显示当前目录下的文件(以长文件名格式显示,不带选项为缺省时按短文件名格式显示),
dir -l -a
或者
dir -la
以长文件名格式(选项-l)显示所有文件包括隐含文件(选项-a)。一般情况下,选项只带一个字符。这是为了遵循旧的Unix 的传统。当然也有一些新的选项不止一个字符:
dir --help
这里,如果选项超过一个字符,选项前面就必须使用两个"-"作为引导。以上命令显示关于命令dir 的一些简单帮助信息。如果显示的内容超过一个屏幕,可以使用管道命令:
dir -help | more
3.2 用户,密码,文件访问权限和安全性
3.2.1 主目录, 根目录和添加新用户
对于一般用户来说,主目录(home directory)是硬盘上唯一可以原来写东西的地方。一般的路径名是/home/login_user_name。主目录用于存储各种用户文件:设置文件,程序配置文件,用户文档,数据,netscape 的缓存,邮件等等。
作为一个普通用户,你可以在主目录下建立新的目录安排你自己的目录结构。其他用户无法阅读你的文件或者写数据到你的主目录,除非你给他们适当的权限。除了自己的主目录以内的文件,一般用户也可以看到,阅读和执行很多系统里的文件,但是一般来说他们不能修改和删除这些文件。
root 用户(也叫"超级用户")是一个特殊的系统管理帐号,可以修改系统里的任何文件。经常使用root 用户作为缺省的登录用户不是什么好习惯――你的误操作将有可能导致严重后果。建议设置一个一般用户给自己作为日常使用的帐号,只在必要使用root 用户的权限时才登陆到root用户模式下。一般来说,root 用户是Linux 初始化安装后的唯一一个用户。
使用root 用户建立一个普通用户:
adduser joe
passwd joe
[输入用户秘密]
[再次输入用户秘密确认]
在上述的例子里,要求超级用户root。
一般建议用户在第一次登录到系统的时候立刻修改自己的密码:
passwd
Changing password for joe
(current) UNIX password: [输入旧的密码]
New password: [输入新的密码]
Retype new password: [重复输入新的密码]
passwd: all authentication tokens updated successfully.passwd
实际上,当你输入密码时,出于安全原因,键盘输入并不会显示在屏幕上。如果你是第一次修改密码,看不到键盘输入的结果可能会有点不适应。
在Linux 里,同一个密码可以用来:
· 登录到文本终端
· 登录到图形用户界面(GNOME 或者KDE)
· 取消锁定的文本终端
· 取消密码保护的图形用户界面下的屏幕保护(GNOME 或者KDE)
3.2.2 密码安全性
以下是一些不好的密码:
· 根本没有密码
· 密码就是"password"
· 密码和登录用户名相同
· 你的名字,女儿的名字,儿子的名字,妻子的名字,丈夫的名字??或者任何一个亲人的名字。人的名字其实非常的有限――只要查一下一些类似"如何给婴儿取名"之类的书就可以了,不要以为你是印度来的就没有人知道你的名字。
· 你的姓或者其他人的姓。姓的数量比名字更加有限!
· 你家小狗的昵称,老婆的昵称等等。昵称的数量比姓更少!
· 你喜欢的体育俱乐部的名称,节日名称,牙膏的名称等等。避免使用非常出名的足球队的名称,也不要用任何摇滚乐队的名字
· 你的生日,社会保险号码,等等。
· 公司,部门,小组的名称
· 密码写在你的记事本上或者计算机壳子上
· 你在因特网联机商店使用的密码,电子邮件邮箱的密码等
· 任何在字典里可以找到的单词。英文字典其实没有包含你想象中那么多的单词(10 万个单词?10 万个单词的文件小于1MB!)。一个水平很一般的黑客很容易就加密所有的字典词汇然后逐一和你的密码比较。一个不可否认的事实,因特网上的确已经存在用来制造 "字典攻击"的现成工具。不信?试着找一个工具来破解你的密码看看有多容易!
· 任何其他词汇,姓,宠物或者成语,不管是哪一种语言。对于一个有经验的黑客来说,如果他已经覆盖了一种语言,稍微加工一下就可以很容易覆盖其他常用的语言。有多少常用的语言?40 个?黑客只需要把预先做好的几个文件加到破解文件清单里就行了。
· 任何以上的密码在前面或者后面加上一两个数字或者字符
3.2.3 忘记了超级用户密码怎么办
尽管我从来不会忘记自己的密码,但是我还是会仔细研究一下这个专题,以防将来有一天突然看到我的朋友在阅读我的ICQ 聊天记录时,可能会派上用场。
第一种办法:
最容易解决"忘记密码问题"的方法是将Linux 重新启动到单用户模式,可以在"lilo"的命令提示符下输入:
linux single
第二种办法
另外一个解决"超级用户密码丢失"的办法是使用Linux 启动盘或者安装CD 来启动你的计算机。然后找到你计算机硬盘上的root 分区,使用mount 命令挂载该分区,接着修改文件/etc/shadow。因为当我从软盘启动Linux 时,我可以不需要输入任何密码就成为root 用户。在密码文件里,把root 用户的加密密码删除,所以root 的密码将是空的。
3.2.4 忘记了普通用户密码怎么办
如果是普通用户(非root 用户)忘记密码,这个不是什么大问题,因为root 可以修改任何人的密码。举个例子(要求root 用户)
passwd barbara
按回车键后,将提示输入用户barbara 的新密码(root 用户不需要知道旧的密码)。如果一个普通用户想要修改自己的密码,该用户会被要求输入旧的密码(这是一个安全特性,以避免当你离开你的坐位有人试图修改你的密码).
3.2.5 关闭或删除一个用户
用户帐号可以被临时关闭或者永久删除
对于永久性(不可恢复)的删除一个用户帐号,我一般这样做:
- 以root 登录
- 把我的用户标识改成要删除的那个用户,检查是否有新的重要的电子邮件:
su doomed_user_login_name
logout
- 删除用户和用户组:
userdel doomed_user_login_name
groupdel doomed_user_login_name
- 然后把该用户从所属的其他用户组里面删除:
usermod -G doomed_user_login_name doomed_user_login_name
- 强制删除该用户的主目录和主目录下的所有文件和子目录:
rm -fr /home/doomed_user_login_name
3.2.6 文件的所有权和访问权
Linux(还有其他Unix)是一个安全,多用户的操作系统,同时,这也产生了文件访问权限的复杂性。没有设置好文件的访问权限可能会导致一些莫名其妙的问题。充分了解文件的访问权限是管理任何多用户操作系统(Linux, Unix, Windows NT)的最重要环节。
我的建议是:学习Linux(或者其他Unix)的文件访问权限的内容,你从来不会为此感到后悔。
使用chmod 命令来修改属于你的文件的访问权限。
使用umask 设置缺省文件属性
目录权限:
目录的访问权限和一般文件的访问权限是不同的。对于一般文件:
r =允许读文件内容
w =允许修改文件内容
x =允许执行该文件
对于目录而言:
r =允许列出该目录下的文件和子目录
w =允许生成和删除该目录下的文件
x =允许访问该目录
3.3 用"&", "at", "batch"和"cron"进行作业调度
3.3.1 怎样在后台执行命令
在命令的最后加上&。
举例,以下命令将在X 窗口下后台启动icq 客户端程序,所以当icq 运行时,我的X 窗口不会被挂住。
licq&
3.3.2 怎样在某一特定时间执行命令(使用at"和"batch")
at 命令可以让你指定特定的日期和时间来运行某个程序。
在命令行输入batch 然后回车,在"at>"命令提示符下,输入想要在后台运行的程序名称。程序试图立刻运行,但是其实会等到系统载荷小于0.8 的时候才会开始运行。你可以通过检查虚拟文件/proc/loadavg 来检查系统载荷:
cat /proc/loadavg
3.4 Shell