linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发能力已经得到业界的认可,目前大多数企业级应用甚至是集群项目都部署运行在linux操作系统之上,很多软件公司考虑到开发成本都首选linux,在中国软件公司得到广泛的使用。
Linux主要的发行版本
1、 虚拟机软件下载:
Linux目录结构概述
Linux没有炫目的可视化操作界面,它的操作大部分都是直接执行命令,而可执行文件都是保存在相应的目录中的,所以我们对linux的操作大多数时候都是查找和执行这些可执行文件的。
linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
在Linux世界里,一切皆文件。
Linux具体目录结构
1) root : 该目录为系统管理员目录,root是具有超级权限的用户。
2) bin ->usr/bin : 存放系统预装的可执行程序,这里存放的可执行文件可以在系统的任何目录下执行。
3) usr是linux的系统资源目录,里边存放的都是一些系统可执行文件或者系统以来的一些文件库。
4) usr/local/bin:存放用户自己的可执行文件,同样这里存放的可执行文件可以在系统的任何目录下执行。
5) lib->usr/lib: 这个目录存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。
6) boot : 这个目录存放启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
7) dev: dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,Linux中的设备也是以文件的形式存在。
8) etc: 这个目录存放所有的系统管理所需要的配置文件。
9) home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名以用户的账号命名,叫作用户的根目录;用户登录以后,默认打开自己的根目录。
10) var : 这个目录存放着在不断扩充着的东西,我们习惯将那些经常被修改的文件存放在该目录下,比如运行的各种日志文件。
11) mnt : 系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容
12) opt: 这是给linux额外安装软件所存放的目录。比如你安装一个Oracle数据库则就可以放到这个目录下,默认为空。
13) tmp: 这个目录是用来存放一些临时文件的。
Linux的远程操作工具
在软件公司中,无论是测试服务器还是正式服务器都是部署在公司Linux系统上的,而Linux系统通常是各开发小组共享的,因此程序员需要远程登录到centos进行项目管理或者开发。远程登录客户端有Xshell、Xftp等多种工具 , 我们学习使用Xshell和Xftp , 其它的远程工具大同小异。
Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。它通过互联网到远程系统的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
Xshell 是目前最好的远程登录到Linux操作系统的软件,流畅的速度并且完美解决了中文乱码的问题,是目前程序员首选的软件。
3. 安装和使用:参考 “Xshell安装手册.docx”
3. 安装和使用:参考“Xftp安装手册.docx”
vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在Linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
vim是vi的增强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。
Vi和vim三种常见模式:
一般模式: 以vi/vim 命令打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』快捷键来处理档案内容,也可以使用『复制、贴上』快捷键来处理你的文件数据。
编辑模式:按下i, I, o, O, a, A, r, R等任何一个字母之后才会进入编辑模式, 一般来说按i即可.
命令行模式:在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim 、显示行号等的动作则是在此模式中达成的 !
Vi和vim常用快捷键
1. 一般模式拷贝当前行(yy) , 拷贝当前行向下的5行(5yy),并粘贴(p)。
2. 一般模式删除当前行(dd) , 删除当前行向下的5行(5dd)。
3. 一般模式下,在文件中查找某个单词,[命令模式下:(/关键字),回车查找, 输入(n) 就是查找下一个]。
4. 一般模式下,使用快捷键到达文档的最首行[gg]和最末行[G]。
5. 一般模式下,在一个文件中输入"xxxx" ,然后又撤销这个动作(u)。
6. 一般模式下,并将光标移动到10行shift+g
第二步:输入shift+g
7. 命令行模式下,设置文件的行号,取消文件的行号.[命令行下(: set nu) 和(:set nonu)]。
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。root用户是系统默认创建的管理员账号。
useradd zhangsan:创建一个账号叫zhangsan,此时会创建账号、创建一个组zhangsan并且把zhangsan分到此组中、还会在/home下创建一个目录叫zhangsan作为新创建用户的根目录。
注意:从高权限用户切换到低权限用户时,不需要输密码;否则,需要输密码。
另:exit命令可以回到原来的用户。
Linux的组类似于角色,系统可以对有共性的多个用户进行统一的管理。每一个用户都至少属于一个组,创建用户时如果不指定组,会默认创建一个跟用户名相同的组,并且把新创建的用户分配到组中,root用户默认属于root组。
将用户添加到组/从组中移除:
reboot: 现在重新启动计算机
sync: 把内存的数据同步到磁盘.
在使用Linux过程中,如果遇到不熟悉的指令,一个是可以到网络上去查找,另一个是可以使用帮助指令。
man [命令或配置文件]
功能描述:获得帮助手册上的信息
功能描述:获得命令内置的帮助信息
block device 即块设备文件,如硬盘;支持以block为单位进行随机访问 |
symbolic link 即符号链接文件,又称软链接文件 |
pipe 即命名管道文件 |
socket 即套接字文件,用于实现两个进程进行通信 |
ugo强调对文档内容的访问控制,如文件的内容,文件夹的内容【文件名称,文件名称列表,文件本身】,而不控制文件属性的访问权限,如
这些属性信息一般使用所有者和非所有者以及root来区分。所有者可以修改文件的这些属性信息,不过你不能将自己的文件归属到别人下面,或者非你的主组下面。root可以修改任何信息
如果要文件系统支持该特性和,需要安装特定的库和工具命令。
Linux 文件系统扩展属性 — Extended Attributes/xattr。 EA是目前流行的POSIX系统中文件系统具有的一项特殊功能,可以给文件、文件夹添加额外的key/value的键对值,键和值都是字符串并且有一定长度的限制。
常用到的命令如下:setfattr、getfattr、attr。 setfattr可以设置EA,getfattr可以获取EA,attr是一个综合命令,可以设置、获取、删除、列举所有等操作。
ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。
既然是作为UGO权限管理的补充,ACL自然要有UGO办不到或者很难办到的本事,例如:
ACL需要Linux内核和文件系统的配合才能工作,当前我们能见到的大多数Linux发行版本默认都是支持的。但最好还是能够先检查一下:
我们可以使用setfacl和getfacl命令来设置或观察文件/目录的acl权限。
文件设置了acl之后,先复制了原先的ugo权限,上面没有指定uid和gid的u,g,other就是复制了ugo的权限。
acl权限一般与最大有效权限mask结合使用,ACL权限与mask权限相与的值相与后的权限,为设定的真实权限。mask只对除所有者权限之外的权限生效。
如果设定ACL权限为 r-- ,mask的权限为r-x,那么真实权限为r--。
如果设定ACL权限为 rwx ,mask权限为r-x,那么真实权限为r-x。
默认情况下,acl不能继承。通过给文件夹指定一个default的acl,就可以被其下的文档继承啦。
权限基于用户。运行的进程需要从执行它的用户获取权限。权限信息是文件的属性,它指明了用户与文件之间的关系。但是真正操作文件的却是进程,也就是说用户所拥有的权限是通过进程来体现的
在 Linux 系统启动后,init 系统会 fork 出子进程执行 /sbin/getty 程序等待用户登录。当用户进行登录操作时,该子进程通过 exec 函数开始执行 /bin/login 程序(此时该进程已经变成了 login 进程)。由 login 进程验证我们的用户名和密码并查询 进程的子进程都会继承该有效身份。**我们可以通过下图来理解用户从 tty 登录系统的过程(此图来自互联网):
来决定进程对系统资源的访问权限。
/etc/shadow中的"*"不表示空的密码,和"!!"一样,它可能也表示锁住账户.空的密码是/etc/shadow中的密码域为空.至于"*"和"!!"为什么表示锁住账户,我想可能是因为unix采用的加密算法不会得到密文为"*"和"!!"的字符串,推而广之,在密码域放置任何不可能为密文的字符都可以锁住账户,"%"也许就行.
使用linux计时。即从的天数。
从最近一次修改开始不可被改动的天数。是个相对值
密码过期并需要修改的时间
从最近一次修改开始后的天数。是个相对值
密码过期前几天开始警告。相对密码过期时间是个相对值
在此期间你依旧可以登陆bash。但是系统会要求你修改密码。超过此期限,账号被锁住。是个相对值
一个账号的生命。即从的天数。到了这个点账号被锁住。和密码有没有过期没关系。
x,真是密码在shadow中。很少用到组密码
组里哪些人是将本组作为附加组的
/etc/skel/* 用户加目录下的默认文件都是从这里复制过去的
只有管理员和文件所有者可以修改权限
-c : 若该档案权限确实已经更改,才显示其更改动作 -f : 若该档案权限无法被更改也不要显示错误讯息 -v : 显示权限变更的详细资料 -R【常用】 : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
只有管理员可以把文件所有者更改为其他人
* 用户可以是用户名或者用户ID * 组可以是组名或者组ID; user: 更改为指定所有者和其基本组 -c 显示更改的部分的信息 -f 忽略错误信息 -h【常用】 修改软连接的归属而不是它指向的文档 -R【常用】 处理指定目录以及其子目录下的所有文件 -v 显示详细的处理信息 --deference【常用】 作用于符号链接的指向,而不是链接文件本身 --reference=<目录或文件>【常用】 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组 --from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变 --help 显示帮助信息
只有管理员可以把文件所有组更改为其他组
指令-修改那个时间-时间参考
-a :全部的文件,连同隐藏档( 开头为. 的文件) 一起列出来(常用) -A :全部的文件,连同隐藏档,但不包括. 与.. 这两个目录 -d :仅列出目录本身,而不是列出目录内的文件数据(常用) -f :直接列出结果,而不进行排序(ls 预设会以档名排序!) -F :根据文件、目录等信息,给予附加数据结构,例如:*:代表可执行文件;/:代表目录;=:代表socket 文件;|:代表FIFO 文件; -h :将文件容量以人类较易读的方式(例如GB, KB 等等)列出来; -i【常用】 :列出inode 号码,inode 的意义下一章将会介绍; -l :长数据串行出,包含文件的属性与权限等等数据;(常用) -n :列出UID 与GID 而非使用者与群组的名称(UID与GID会在账号管理提到!) -r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小; -R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来; -S :以文件容量大小排序,而不是用档名排序; -t :依时间排序,而不是用档名。 --color=never :不要依据文件特性给予颜色显示; --color=auto :让系统自行依据设定来判断是否给予颜色 --full-time :以完整时间模式(包含年、月、日、时、分) 输出
mv不能覆盖非空的文件夹
mv移动文件,行为如下:
忽略不存在的文件和任何提示 在提示模式为一次的情况下,如果用户选择了否,那么rm操作会停止。如果选择了一直,那么选择否的文件会跳过
tac倒着查看文件内容
?字符串:向上搜寻『字符串』的功能;
N:反向的重复前一个搜寻(与/ 或? 有关!)
G:前进到这个数据的最后一行去(注意大小写);
tail 查看后面几行
在path中查找指令。-a 参数表示列出所有找到的,而不是第一个。
-uid n #n 为数字,这个数字是用户的账号ID,亦即UID
-mtime n #n 为数字,意义为在n 天之前的『一天之内』被更动过内容的文件; -mtime +n # 列出在n 天之前(不含n 天本身)被更动过内容的文件档名; -mtime -n #列出在n 天之内(含n 天本身)被更动过内容的文件档名。
-exec 开头,;结尾可以写其他shell指令。加斜杠是为了转译;因为;再shell中有特殊含义。{}代表一个匹配的文件
正则的分组编号方式是从左到右,按照遇到分组的左括号顺序来编排序号。
设n是分组序号,那么\n表示在这个位置我要有一个和分组n一样的字符串
grep默认使用多行全局匹配。
修改密码其他属性请使用其他参数
userdel -f 除了-r的效果。连同名的组也一起删除
我们只需要记住默认清空,需要特殊定制查询文档即可
option的优先级 > 配置文件[login.defs]>默认值[useradd]。选项之间也有优先级,优先级高的没有指定,低的指定了就会生效。
只要看配置,默认值就知道默认情况下的创建用户行为:
一般默认的够用了,如需要定制,参考如下文档
区别useradd。usermod没有默认值和配置哦。需要用户指定
配合-G使用,添加附加组 设置用户家目录。目录不存在则创建。 第七个字段,密码失效宽限日期 默认情况下先把用户从之前的附加组中移除,然后把用户添加到后面列出的附加组中。其实就是覆盖替换。加上-a一起用则表示附加 修改用户名。家目录和邮箱目名字需要手动修改哦!!! 设置签名后的密码。不推荐使用。 修改uid。加上-o,可以使用重复的uid.用户邮箱和家目录中的文件归属会自动转成新的uid
这个命令用于详细的修改shadow中的参数。本身也是一个suid命令。如果没有明确说只能root使用,那么这个选项所有用户都能使用。只能用户修改查看自己的的密码信息
查看linux发行版本的信息
显式uid,gid,附加组信息
w 执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。
单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
who 显示当前登录的人是谁
lastlog 检查最近登陆的有哪些用户
一、查看与用户相关文件命令:
#直接打印文件内容并且显示行号
用户名:用户名不要太长。Niejunzhong
X: 密码位 保留,以前的linux存放密码
Etc/passwd每个用户都有读权限。早些密码放置在密码位。
登录名:加密密码:最后一次修改的时间:最小时间间隔:最大时间间隔:警告时间:账号闲置时间:失效时间:标志。
超级用户缺省没有写权限,照样可以进行修改或删除。
为什么普通用户可以更改密码?
SetUID的定义:当一个可执行程序具有SetUID权限,用户执行这个程序时,将以这个程序的所有者的身份执行。
Passwd的所有者是root所有普通用户在更改密码时是变成root所有者来执行这个命令的。
修改用户配置文件添加用户(原理)
2、Mkdir 创建宿主目录 给予权限 用户 目录
此时可以登录命令提示符不同
5、Cp skel里的文件到新用户的宿主目录
Login.defs 配置邮件 最大时间间隔最小时间间隔(root不限定)自动创建目录 Umask
Etc/default/useradd 宿主目录缺省目录账号是否被禁用账号失效时间
登录前:etc/issue 避免暴露系统版本信息
Uid为0的用户叫做超级用户,命令提示符前
1、伪用户与系统和程序服务相关
2、伪用户通常不需要或无法登陆系统
上一页12 下一页 阅读全文