符,那么该用户无法登录。
/etc/group
本文件与前面介绍的/etc/passwd文件类似,只不过保存的是用户组的信息。特定/etc/group文件的截取内容如图1-9所示。
图1-9 /etc/group文件截取内容
/etc/group文件中每行记录了一个用户组的相关信息。每行信息由4个部分构造。具体结构如下所示:
用户组名:用户组密码:用户组ID:组成员名 该文件中的每行记录由“:”分隔为4列: 1) 用户组名:标识用户组的名称; 2) 用户组密码:用户组密码,通常不需设置,如设置了会保存于/etc/gshadow文件中; 3) GID:用户组识别码,与一个用户组名对应;
4) 用户组成员的账号名称:加入该用户组的账号名称;
一个账户可能属于多个用户组,而一个账户登录到shell时,此时此刻该账户应该明确的属于一个用户组,这个用户组称为该账户的当前有效用户组。而在/etc/passwd文件的每一行记录的第4项,表明该记录对应账户的初始用户组。一般情况下,一个账户登录系统后,会以初始用户组作为其登录后的有效用户组。如果该账户分别属于多个用户组,那么它就具有这些用户组访问系统资源的相应权限。而这个有效用户组有什么意义呢?有效用户组会在创建新文件时,决定该文件所属的组。比如:Tom账户的初始用户组为Tom,并且也属于users用户组,当他登录系统后,创建一个新文件file,那么这个file的拥有者为Tom,而其用户组为Tom。因为,Tom登录系统后,其初始用户组Tom会成为其当前的有效用户组。
/etc/sudoers
登录linux系统,一般不建议使用root用户登录,为了避免误操作导致系统出错。然而linux系统中的某些操作有必须具有root权限才能执行,因此linux系统中可以使得某些用户可以以sudo方式来获取root权限来执行默写操作。使某个用户具有sudo能力,可以通过编辑/etc/sudoers文件来实现。图1-10展示了ubuntu中/etc/sudoers的默认内容。
6
图1-10 /etc/sudoers文件
要了解更详细的sudoers的配置方法,可以通过命令“man sudoers”查看帮助手册。
/etc/network/interfaces
/etc/network/interfaces文件为ubuntu的网络适配器的配置文件。该文件最重要也是最常用的作用就是设置网卡的internet网络地址信息。如图1-11中显示了该文件的一种可能的情况。
图1-11 /etc/network/interfaces文件
文件中“#”符号起注释作用。
要了解该文件的语法规则或参考配置方法,可以通过下图中给出的路径,查看network-interfaces.gz文件。
由于network-interfaces.gz文件是压缩文件,可以在命令提示符后输入命令“sudo gzip –d network-interfaces.gz”进行解压,这是在当前目录中会获得解压后的文件network-interfaces。
也可以通过命令“man interfaces”参看帮助手册,来获取interfaces文件的配置方
7
法。
home
这里主要存放你的个人数据。具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。
lib
系统程序库文件,这个目录里存放着系统最基本的动态链接共享库,类似于Windows下的system32目录,几乎所有的应用程序都需要用到这些共享库。
media
挂载媒体设备,如光驱、U盘等。
mnt
这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。有时我们可以把让系统开机自动挂载文件系统,把挂载点放在这里也是可以的。主要看/etc/fstab中怎么定义了;比如光驱可以挂载到/mnt/cdrom 。
opt
这里主要存放那些可选的程序。你想尝试最新的firefox测试版吗?那就装到/opt目录下吧,这样,当你尝试完,想删掉firefox的时候,你就可 以直接删除它,而不影响系统其他任何设置。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。
举个例子:刚才装的测试版firefox,就可以装到/opt/firefox_beta目录下,/opt/firefox_beta目录下面就包含了运 行firefox所需要的所有文件、库、数据等等。要删除firefox的时候,你只需删除/opt/firefox_beta目录即可,非常简单。
proc
操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见/etc/fstab 。
8
sbin
大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目录是相似的;我们记住就行了,凡是目录sbin中包含的都是root权限才能执行的。
tmp
这是临时目录。对于某些程序来说,有些文件被用了一次两次之后,就不会再被用到,像这样的文件就放在这里。有些linux系统会定期自动对这个目录进行清理,因此,千万不要把重要的数据放在这里。
usr
这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。 如果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts ,帮助目录 /usr/share/man或/usr/share/doc,普通用户可执行文件目录/usr/bin 或/usr/local/bin 或/usr/X11R6/bin ,超级权限用户root的可执行命令存放目录,比如 /usr/sbin 或/usr/X11R6/sbin 或/usr/local/sbin 等;还有程序的头文件存放目录/usr/include。
lost_found
在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。
selinux
selinux就是linux下的安全服务,把服务和系统独立地分开来,这样服务被攻击了就不能影响到系统的安全
var
这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放
9
地。
2. Linux系统基本命令 2.1 shell
shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。同Linux本身一样,shell也有多种不同的版本。目前主要有下列版本的shell: ? Bourne shell:是贝尔实验室开发的。
? BASH:是GNU的Bourne Again shell,是GNU操作系统上默认的shell。
? Korn shell:是对Bourne shell的发展,在大部分内容上与Bourne shell兼容。 ? C shell:是SUN公司shell的BSD版本。 与shell相关的操作
? 查看Linux系统中支持的shell类型: more /etc/shells
? 查看当前使用的shell类型: echo $SHELL
? 查看默认shell的类型: more /etc/passwd
? 修改默认shell的类型:
sudo usermod –s shell路径 用户名
或者sudo vi /etc/passwd 然后编辑对应用户那行后面对应的shell部分
2.1.1 shell数据重定向(输入重定向和输出重定向)
linux的文件描述符,是linux用以跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 shell启动后,会默认打开3个文件描述符,分别是:
1) 标准输入:STDIN , 在/dev/stdin , 一般指键盘输入, 其文件描述符是0; 2) 标准输出:STDOUT, 在/dev/stdout, 一般指终端(terminal), 就是显示器, 其
文件描述符是1;
3) 标准错误:STDERR, 在/dev/stderr 也是指终端(terminal), 不同的是, 其文件
描述符是2。
我们在shell中执行命令时,每一个shell命令都会从shell父进程那里继承这3个文件描述符,通过这3个文件描述符与标准输入、标准输出和标准错误的设备进行数据通信。默认情况下,一条shell命令执行时从键盘将命令输入(即STDIN句柄)发送到该命令,然后,该命令执行成功后,将命令输出(即 STDOUT 句柄)发送到屏幕窗口。Linux
10