/* 这次笔记主要记录的是 一个重大错误,和关于权限、文件操作的命令,还有/ 下几 个主要目录的内容介绍 ,参考文献: Linux鸟哥的私房菜第6章和第7章*/
#一个错误:
因为我的主机名到现在还是一串随机字符,我就想把它改掉
百度上说是修改/etc/hosts 和/etc/sysconfig/network 两个文件
我改了之后发现没反应
然后我就把上面p1里的localhost全删掉了,只留下dreamboy.gns
把p2中的GATEWAY也改掉了(因为我在控制台查到的内网IP和这个不同)
结果发现Xshell无法连接到服务器,报错如下:
然后我发现用Xftp和在控制台也连不上了,gg,不会要重置吧
还好我发现救援连接,如下
救援连接连上去之后把文件复原就可以连上去了,注意,上面提到的两个改动一个都不能改,改了任何一个都会无法连接(p1可以如图修改,但不能全删),虽然我还不知道原理……(大家指点一哈)
结果…后来我另辟蹊径,在/etc 下用grep -r 递归搜索我这个主机名
为什么是在/etc 下? 因为配置文件主要在/etc 下,避免无关文件蹦出一堆
然后vim /etc/hostname就可以更改了
所以…以上事情告诉我们/etc/sysconfig等这样的配置文件的修改一定要慎重!
/*
grep -rn ‘host’ ./
注意-r 表示递归搜索 -n表示显示行号
-A 2表示将每个结果接下来的两行也显示出来
如果检索位置为当前目录且包含子目录要用递归搜索,位置表示可以用./ ,也可以*
*/
#解决vim中最多复制50行的问题
打开 vimrc文件,位置为/etc/vimrc,和我们提到的修改主题在一个配置文件中
如图,找到对应行
把85修改为你想要的行数(85是我后来改的,默认为50行),或者用如下表述:
:set viminfo=’1000,<500
附上一个参考链接 http://blog.itpub.net/312079/
#命令若干
chgrp :改变文件所属用户组
chown:改变文件所有者
(可以用chown root:root test.log 一步实现用户组和所有者的修改)
chmod 修改权限 chmod a+w install.log 表示给所有人都加上写权限
用-R参数表示递归更改,表示目录下的所有文件都会被更改为给定属性
umask 命令,列出目前用户在新建文件或者目录时的权限默认值,
列出时用拿掉的权限表示 -S参数用rwx列出
比如umask = 002 表示 u = rwx, g = rwx, o =rx
#文件的隐藏属性, chattr, lsattr
只能在Ext2/Ext3的文件系统上生效
chattr [+-=] [ASacdistu] 文件或目录名称
a: 当设置a后,这个文件只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性。
i: 让一个文件“不能被删除,改名”,设置连接也无法写入或写入数据,对于系统安全性有很大帮助,只有root才能设置
#文件的特殊权限 : SUID, SGID, SBIT
SUID:当s这个标志出现在文件所有者的x权限上时,就称为Set UID
表示用户对于某个程序具有x权限,执行过程中会”暂时”获得root的权限,仅对二进制程序(非目录)有效,比如passwd 所有者为root,权限为-r—-1, 但一般用户也可以修改
SGID: 当s 标志出现在用户组的x时称为Set SGID ,
与SUID类似地,执行者在执行的过程中将会获得该程序用户组的支持,可以 针对目录设置
SBIT: 只针对目录有效,效果是当用户在目录下创建文件或者子目录时,仅有自己和 root才有权利删除该文件
SUID, SGID, SBIT 分别对应 4 2 1
#查询文件类型、查找文件(命令)
file filename 表示输出一个文件的文件类型 data 、 ASCII text等等
which(寻找“执行文件”)
-a 参数表示所有由PATH 目录中可以找到的命令均 列出,而不只是第一个被找到的命令名称(需要注意的是which是根据用户所设置的PATH变量的内容去查找可执行文件的,由于不同用户的PATH变量值不一样,所以找到的结果可能不同。除此之外,一些bash的内置命令如cd 是无法通过which查找到的)
whereis(寻找特定文件)
-b只寻找二进制文件
-m 只找在说明文件manual 路径下的文件
-s 只找source源文件
-u 查找不在上述三个选项当中的其它特殊文件
locate(寻找特定文件)
-i 表示忽略大小写的差异进行查找
-r 后面可接正则表达式的显示方式
find
find [PATH] [option] [action]
1、与时间有关的参数(以mtime为例)
-mtime n : n 为数字,意义为在n天之前的“一天之内”被更改过的文件
-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名
-newer file : file 为一个存在的文件,列出比file还要新的文件
find / -mtime 0表示列出系统在过去24小时有过改动的文件
2、与用户或用户组名有关的参数
-uid n : n为数字,即UID
-gid n : n 为GID
-user name : name为用户名,如dreamboy
-group name: name为用户组名称
-nouser 寻找所有者不存在于/etc/passwd 中的人
-nogroup 寻找文件的所有用户组不存在于 /etc/group 中的文件
3、与文件权限及名称有关的参数
-name filename :差这招文件名为filename 的文件
-size [+-] SIZE : 查找比SIZE还要大(+)或小(-)的文件
-type TYPE : 查找文件的类型为TYPE的,类型主要有正规文件(f)、设备文件(b、c),目录(d)、连接文件(l)、socket(s)、FIFO(p) 等属性
-perm mode 查找文件权限“刚好等于” mode的文件,这个mode类似于chmod的属性值,比如4755
-perm -mode 文件权限必须全部包括mode 的文件
-perm +mode 查找文件权限包含任一mode的权限的文件
find的特殊功能是可以进行额外的动作(action),比如:
find / -perm +7000 -exec ls -l {} \;
(-exec到结束 \; 的中间是find命令中的额外命令,因为;有特殊意义,所以加上了反斜杠)
#比较几个查找命令(find 、locate、whereis)
find虽然功能很强大,但因为耗费的时间比较多,现在用的已经比较少了,而whereis,locate命令查找的时候是参考数据库的,所以速度较快,但也有一定的弊端,比如说可能会查到到已经删除的文件,或者找不到最新的创建的文件,这个时候需要用命令updatedb去查找硬盘,更新数据库)
lsb_release -a 可以查看你的distribution使用的是哪个linux标准
cp 复制命令 -i 表示在已经存在文件时询问用户是否覆盖
-r 表示递归复制,用于复制目录的时候较常用
-a 表示将所有属性,包括所有者、创建时间一起复制
-s 表示创建快捷方式,软连接
(需要注意的是复制命令得到的文件的默认用户组和所有者是取决于进行复制操作的用户的,用-a命令修改的时候会改变用户组和所有者,但是普通用户是无法任意改变所有者的,所以有时候会无法成功)
rm -r 表示递归删除 -i 互动模式,询问是否 -f 强制模式,不询问
用rm进行操作的时候如果遇上名字为类似于 -aaa- ,使用rm ./-aaa-
避免误判
basename :取得最后的文件名 如进行basename /etc/sysconfig/network 得到的是 network
dirname 取得目录名 如进行dirname /etc/sysconfig/network 得到的是/etc/sysconfig
#文件内容查询命令
cat :从第一行开始显示文件内容
-n 表示打印出行号,空白行也有行号
-b 打印出行号,空白行无行号
-A 可以列出一些特殊字符,如断行字符$,Tab键等,相当于-vET 的整合参数
tac : 从最后一行开始显示 ,可以看出tac是cat的倒写形式,参数和cat基本类似
nl : 输出的时候顺便输出行号
-b a 表示列出空白行也列出行号,类似于cat -n
-b t 表示空白行不列出行号,类似于cat -b ,这也是nl -b 的默认值
more: 一页一页地显示文件内容
less:也是一页一页地显示文件内容,但是它比more更好的地方在于可以向前翻页
head : 取出前面几行(默认是10行)
head -n filename 表示取出名字为filename 前n 行的内容
tail : 取出后面几行 -n +100 表示取出100行后的数据
-f 表示持续检测后面所接的文件名,要等按下CTRL – C 才会结束检测
od : 查询非文本文件的内容
od -t TYPE filename
-t 后面可以接各种类型,a(利用默认的字符(即二进制)输出) ,c(利用ASCII字符来输出 ),d(size)利用十进制,每个整数占用size bytes ,f(size) 利用浮点数,o(size)利用八进制, x(size) 利用十六进制数
#文件的几个时间属性
modification time(mtime) : 当该文件的“内容数据”发生改变的时候就会更新这个时间,内容数据指的是文件的内容,不是属性权限
status time(ctime) : 文件的状态改变的时候,更新ctime属性,比如属性和权限
access time(atime) : 当该文件的内容被取用时,就会更新这个读取时间,比如我 用cat来读取该文件,就会改变这个文件的atime
可以用ls -l –time==atime(mtime/ctime)命令来查看这几个时间属性,默认情况下.ls 显示出来的是改文件的mtime,即内容被修改更新过的时间
touch命令不单可以创建新文件,还可以修改文件的时间属性,分别用参数-m -a -c,将对应时间更新为当前时间
;表示连续命令的执行
#几个主要目录的功能介绍:
/etc : 放置系统的主要配置文件,FHS建议不要放置可执行文件在该目录下
/etc下比较重要的子目录有/etc/init.d/ 放置服务的默认启动脚本
/etc/X11/ : 与X Window 有关的各种配置文件都在这里
/bin: 主要放置执行文件,且很多是在单用户维护模式下还能被操作的命令,
主要有cat chmod chown date mv mkdir cp bash
/root:注意区别“/root”和“/”,“/root”表示的是系统管理员(root)的主文件夹
/usr : 里面放置的数据属于可分享的与不可变动的,值得一提的是/usr 为UNIX SOFTWARE RESOURCE 的缩写,即为UNIX操作系统软件资源所放置的目录,有点类似于Windows系统的”C:\Windows\”和”C:\Program files\”,在安 装时会占用较 大的硬盘容量
/usr/bin :绝大部分的用户可使用命令放在这里,它与/bin目录的区别是一般 与开机过程无关
/usr/local: 系统管理员在本机自己安装自己下载的软件(非distribution默认提供的,比如阿里云轻量级上的PHP、MySQL、Apache预装 服 务都放在这个目录下)
/usr/src: 源码建议放到这里,内核源码建议放在/usr/src/linux (kernels)
/usr/include/ C/C++ 等程序语言的头文件会放在这里
/var :针对常态性变动的文件,一般在系统运行后才会渐渐占用硬盘容量,比 如/var/www/html就放在/var下
/var/log : 登录文件放置的目录,里面的文件记录登陆者信息等和其他日志,比如/yum.log 可以查看你下载的历史记录
/var/mail/ : 放置个人电子邮件信箱
最后:权限与命令的关系(重要)
让用户进入某目录成为可工作目录的基本权限是对改目录至少具有x权限,如果想要用ls 查询文件,还需要具有对目录具有r权限
让用户在某个目录内读取一个文件的基本权限是用户对文件至少有r权限,对目录至少有x权限,但不要求对目录具有r权限
让用户可以创建一个文件的权限是对目录有w,x权限