LINUX的安装
由于Linux发行版本的公司太多了,有名的RedHat,Mandriva,Debian,SuSE等。
Linux安装可以从光盘启动也可以从网络启动(PXE服务器)。
Linux有四种形式的虚拟网络,他们分别是:桥接(Bridge),仅主机(Host-only),NAT,和自定义等四种形式。
l
当你在VMware中安装完成Linux后,在你的物理机的网上邻居中会有两个虚拟网卡。在通常情况下,VMware1是被定义为仅主机,仅主机指虚拟机通过VMware1与物理机进行连接,物理机还有一个物理网卡。外网通过此网卡和物理机进行通信,但是此虚拟机是不能够和物理机及以外的网络进行通信的;VMware8则被定义为NAT,NAT和仅主机类似,只是在VMware1和物理网卡间做了NAT转换,此时虚拟机就能和外网进行通信;桥接(Bridge)是虚拟机直接与物理机的网卡进行连接的,所以这种形式能够和物理机,外网进行通信。最后一种是自定义模式,这种形式是虚拟机之间进行通信的,通常这种通信方式称为虚拟通道。
l
下面我们就可以在虚拟机上安装Linux了,详细步骤我们不做过多介绍。
当系统已经安装完毕后,登录系统后有两种不同的用户界面:X Windows和命令行模式。
切换X Window与命令行模式
* [ctrl]+[alt]+[F1]-[F6]:命令行登入tty1~tty6终端。
* [ctrl]+[alt]+[F7]:图形化界面桌面。
在Linux系统中,我们怎么变换身份呢?一般而言,我们都不希望以root身份登录主机,以避免被不法入侵。但主机又不可能不完全不进行修补或设置,这个时候要如何将一般用户的身份变成root呢?主要有两种方式,分别是:
用su直接将身份变成root,但这个命令需要root命令;当有很多人同时管理一台主机的时候,root的密码不就有很多人知道了?所,如果不想将密码外传,可以用sudo。
如用一般用户登录时:$su - 这时要输入root密码。
sudo 当用户执行sudo时,系统会主动去寻找/etc/sudoers文件,判断该用户是否有执行的权限;确认用户有可执行sudo的权限后便让用户“输入用户自己的密码”来确认。
sudo -u username
编辑文本文件:
在Linux中最强大,同时也最普遍的编辑器要算vi和vim了,但这对初学者很难掌握,因此,有种简单的容易学习的编辑器是nano,它是一个纯文本编辑器,一旦处于编辑器中,只需键入要添加的文本即可。Nano的其他命令需使用ctrl键。屏幕最后两行会显示要运行的命令菜单,如图:
如使用ctrl+x退出,这里忽略大小写。
一些简单的命令和帮助;
命令的一般格式:命令 选项 参数
每一项都以空格隔开,单字母选项的前面通常缀一个破折号 -
可以用-a -b 也可用 -ab
若是整个单词前面通常用 -- 如 -- help
参数是文件名或命令所需的其他数据。多个命令可以用分号(;)间隔。
date - 显示日期和时间; cal 显示日历
date +“%s” 显示时间戳; date 月日时分年.秒
当我们用日期作为一个文件的名字时用: touch a-`date +"%y-%m-%d-%H-%M-%S"`
Linux中有两个时间,一个系统时间,一个是硬件时间。
#clock 看硬件时间
我们可以用命令hwclock -w 以系统时间为准,修改硬件时间。
-s 以硬件时间为准,修改系统时间。
由于Linux中命令和参数不胜枚举,我们有时很难记住一些命令和参数。这时我们就可以使用以下命令来帮助我们获得帮助信息。
whatis :显示命令的简短描述,使用每晚更新的数据库,通常不是安装后就立即可用的。这就意味着新装的系统中,由于数据库不存在,whatis就不能运行,若等不及它自动更新的话,这时就要以根用户的身份运行“makewhatis”命令来立即生成数据库。
如 whatis date
date (1) - print or set the system date and time
其中这个括号内的数字代表Linux 中man pages 的章节号码,可以从中获得更详细的文档。
--help : 显示用法摘要和参数列表。
如 $date --help
man : man [章] 命令 提供命令的文档。 如 man 1 date
搜索man pages
man -k 关键字 列举所以匹配的pages,它使用的是whatis数据库。
-K 关键字 它使用的是man pages 文档中的内容,查询慢。
Info和man命令相似,但它所提供的信息更深入,介绍了命令的背景,发展等。不带任何参数运行info会列举所有项目。它的信息页的结构和网页相似。
Info [command]
Linux 文件结构
在linux中一切皆文件,文件和目录 被组织成一个倒转的单根系的树形结构。文件系统是从根目录开始,根目录使用单个正斜线字符(/)代表。名称区分大小写;路径使用/分隔。
系统中每个进程都有一个明确的当前(current)或工作(working)目录。
..代表父目录;― 在上一个的工作目录; . 指代当前目录;
某些重要的目录:
主目录: /root /home/用户名 每个用户都有个主目录,所有用户的个人文件(配置,数据,应用程序)都应该放这里。根用户的主目录是/root,多数非根用户的主目录位于/home目录下,通常以用户名命名。
用户可执行文件目录:/bin、/usr/bin、/usr/local/bin 除了/bin之外,/usr/bin、/usr/local/bin 也是放置“用户可执行的二进制文件的目录”如ls,mv,rm等命令都放在这个目录中
系统可执行文件目录:/sbin、/usr/sbin、/usr/local/sbin 放一些系统管理员才会用到的执行命令,如:fdisk,mount等。与/bin不一样的是,这几个目录是给root系统管理用的。但目录下的文件可以让用户查看而不能设置。
其他挂载点: /media、/mnt 这是介质被挂载(mount)到/media的子目录中。如光盘通常被挂载到/media/cdrom目录中,是挂载移动性设备;而挂载非易移动性设备通常被挂载到/mnt目录中。
配置文件:/etc 系统主要的配置文件被保存在/etc目录和他的子目录中。
临时文件:/tmp 通常被保存正在执行的程序临时放置文件的地方。系统每天都检查一次/tmp中的文件,并自动删除任何存在时间超过十天的文件。
内核和引导载入程序: /boot 引导载入程序负责把系统的核心程序载入到内存,这个核心被称为“内核”,引导载入程序,内核,以及载入程序的配置文件,都保存在/boot目录中。
服务器数据:/var、/srv 它主要放置系统执行过程中经常变化的文件,例如日志,print spools,email spools。/srv目录包含服务器数据,例如数据库和网页
系统信息:/proc,/sys /proc 自身是个“伪文件系统”。它放置的数据都在内存中,提供了有关运行着的Linux系统的信息。/src目录与硬件有关。
共享库:/lib /usr/lib /usr/local/lib 系统使用的函数库的目录。
我们可以访问文件系统的结构标准(FHS)来了解更多。
我们可以用命令“pwd”来显示当前的工作目录。
#pwd
切换目录: cd
cd /home 绝对路径; cd ..home 相对路径;
列举目录内容: ls
ls -a (包括隐藏文件) -l(显示额外信息) -ld (目录和符合链接的信息)
ls -d 列举目录名,而不是其中的内容。
复制文件和目录: cp
cp -i(交互,在覆盖文件前询问) -r(递归,递归复制整个目录和子目录)
-p (保留权限,所有者,和时间戳) -a (递归复制,同时保留权限)
如 cp -r /etc/ /tmp
cp -a /etc/passwd ~/aa/bb 则passwd中的内容全部复制到了bb中
前提是~/aa已经创建好了
cp -a /etc/sysconfig ~/aa/bb 若第一次运行时目标目录bb会被
创建,sysconfig目录中的文件会被复制到其中;当第二次运行会复制
到--bb/sysconfig中,当第三次运行时则会确认是否覆盖。
如果目标是目录,就会复制不止一个文件。 如 cp file3.txt /home/student
移动文件与目录,或重命名 mv
mv -f (强制直接移动不询问) -i (在覆盖文件前询问)
如果目标是目录,就可以移动多个文件: 如 mv bashr1 bashr2 mvtest2
则最后一个mvtest为目录
mv mvtest1 mvtest2 这样就重命名了
创建和删除文件
touch - 创建空文件或更新文件时间戳;
如 touch {report,graph}_{jan,feb} 创建了report_jan,report_feb等四个
文件;
rm - 删除文件 -i 文件 (交互式) -r 目录(递归式) -f 文件 (强制)
rm -i bashrc
创建和删除目录
mkdir 创建目录 -p (递归建立目录) -v (显示创建过程)
如 mkdir -p /test/test1/test2
命令行展开 {} mkdir x/{y1,y2}/z -p
此创建了目录 x/y1/z和x/y2/z
rmdir 删除空目录 -p 与上层空目录也删除
如 rmdir -p /test/test1/test2 这样就将/test/test1/test2 一起删除。
判断文件内容: file
如 file test.txt
常见的文件类型: 普通文件 f ; 目录文件 d ; 链接文件 l ->(字符设备 c
块设备 b) 管道文件 p ; socket文件 s ;
用户:
每个用户都被分配了一个独特的用户ID号码(UID)
UID 0 代表根用户 ; 普通用户(500-60000) ; 系统用户(1-499)
用户名和UID被保存在/etc/passwd这个文件中。
用户对他们的主目录有完全的存取权限,这就是说,他们可以随意地创建和删除文件和目录,可以随意的组织文件。
对于/etc/passwd/这个文件,我们可以用 man 5 passwd 来查看更多的详细信息。
在/etc/passwd/这个文件中,每一行都代表一个账号。每一行都用“:”分隔开,共有7部分内容,分别是:
account(账号名称)用户名; passwd(密码)在此文件中用x表示,是占位符,表示密码已经移到shadow这个加密后的文件中了; UID ; GID ;
GECOS(用户信息说明栏,没什么意义,只是解释这个账号的意义) ;
directory(家目录) ; shell ;
在/etc/shadow这个文件中,也是以“:”隔开,共有9个字段,分别是:
账号名称 : 密码 : 最近更改密码的日期 : 密码不可更改的天数 :
密码需要重新更改的天数 : 密码更改期限前的警告期限 : 密码的过期宽限期
限时间 : 账号失效日期 : 保留
添加一个用户 : useradd
useradd -u(后面接UID,是一组数字) -g(后面接的用户组的名称,基本组)
-G(用户的附加组,相关数据在/etc/group中) -M(强制,不要建立用户
的家目录) -m(强制,要建立用户的家目录) -c(这就是/etc/passwd
中第5栏的说明内容,可以随意设置) -d(指定用户的家目录)
-s(后面接一个shell) -p(指定密码) -e (过期时间)
-f (非活动时间)
passwd (修改密码) passwd [username]
修改账号的相关数据(就是/etc/passwd中的字段数据)
usermod -u(改UID) -g(后面接组名) -G(附加组)后面跟个-a (追加附加组
,若没则覆盖) -d(改家目录)后跟-m(表示新建个家目录)
-s(改shell如/bin/bash) -l(改账号名称) -L(暂时把用户的密码
冻结了,让他无法登陆) -U(将/etc/shadow密码栏的!去掉,解冻)
如 usermod -G mygrp -a oracle(用户)
usermod -d /home/donne2 -m donne
若是仅-d仅会修改/etc/passwd第六栏的内容,加上-m会将原来
的/home/donne更名为/home/donne2
删除用户 : userdel
userdel [-r] username -r (连同家目录也一起删除)
如 userdel -r donne
我们可以用finger,id来查看用户的信息
finger donne
Id donne
组群
用户被分配给组群,每个组群都被分配一个独特的组群ID号码(gid),组群中的所有
用户都可以共享属于该组群的文件。主要组群可以运行“newgrp 组群名”这一命令来
临时改变,组群名可以是用户的次要组群之一,用户可以通过exit来返回到他们原
来的组群设置。其中组群名和GID被保存在/etc/group这个文件中。
这个文件也是以冒号“:”隔开字段的,共4栏:
用户组名称(gaccount) : 用户组密码 : GID : user_list
如 #newgrp users
#exit
添加用户组 : groupadd
groupadd -g(后面跟个gid) 如 groupadd -g 1000 dba
删除用户组 : groupdel
如 groupdel dba
权限
每个文件都属于一个UID和一个GID,每个进程都使用一个UID和一个或多个GID运行。
三种存取权限类型:
1)进程使用和文件相同的UID来运行(用户,user)
2)进程使用和文件相同的GID来运行(用户组,group)
3)所以其他进程(其他,other)
如果UID匹配,就应用用户(user)权限,否则,如果GID匹配,就应用用户组(group)
权限。如果都不匹配,就应用其他(other)权限。如果某个进程UID和GID都匹配
,那么用户权限有优先使用权。
权限类型
在显示权限时,使用了四种符号:
1)r:读取文件或者列举目录内容的权限
2)w:写入文件或者在目录中创建,删除文件的权限
3)x:执行程序或者转入目录
4)-:无权限
改变文件所有者:
只有根用户才能改变文件的所有者,只有根用户或所有者才能改变文件的用户组。
chown 改变所属用户 如 chown -R student chfile
-R选项能够改变整个目录树的所属用户
chgrp 改变所属用户组 如 chgrp [-R] grouper gfile
改变权限 - 符号式方法:
chmod [-R] 模式 文件
这里的模式是:
1)u,g,o,分别代表用户,用户组和其他用户
2) +或- ,= 代表授予或拒绝,设置
3)r,w,或x,分别代表读取,写入,和执行
如 chmod u+w,go-w 。Bashrc 给所属用户以写入权限,但是拒绝用户组合
其他用户的写入权限
改变权限 - 数字式方法
4(代表读取) 2(代表写入) 1(代表执行)
如 chmod 640 myfile
使用Bash shell
命令行简化操作、文件匹配
通配符:* - 匹配0个或多个字符; ? - 匹配任何字符;
[0-9] - 匹配一个数字范围; [abc] - 匹配列表中的任何字符
[^abc] - 匹配列表以外的字符
字符类的语法是[:关键字:],关键字可以是:alpha(a-zA-Z),upper(A-Z),
Lower(a-z),digit(0-9),alnum(a-zA-Z0-9),punct(标点符号),space(空白字符)
例如:如果你想匹配数字,可以用:[[:digit:]] 若是匹配数字以外的字符
[^[:digit:]]
我们也可以使用Tab键来完成命令行,连按两下Tab键会显示你未输完的所有命令的
名称。
history
Bash保存你输入的命令历史,你可以用它来输入重复的命令。使用history命令来查
看历史命令。
history n (数字,列出最近的n行命令) -c(将当前所有history内容全部清除)
-a(将当前新增的history命令加入histfiles中,若没有加入histfiles
,则默认写入~/.bash_history)
还可以用: !! (重复前一个命令); !字符(重复一个一字符开头的命令)
!号码(按照history输出的号码来重复相应的命令)
!?abc (重复前一个包含【而不是开头是】abc的命令)
!-n (重复n个命令之前的那个命令)
!$ (重复前一个命令)
使用^old^new 来重复前个命令,把旧参数(old)换成新参数(new)
在.bashrc文件中添加以下内容可以忽略重复输入的相同命令:
#export HISTCONTROL=ignoreboth ; ignorespace(忽略空格)
ignoredups(去除连续重复的命令)
erasedups(去除不是连续重复的命令)
若重启后此设置就失效了,若永久有效则须在环境变量中修改。
命令扩展: $()或``
把一个命令的输出打印给另一个命令的参数
#echo "my $(hostname)" my station46.example.com
括号扩展:{}
打印重复字符串的简化形式:
#echo file{1,3,5} file1 file3 file5