第一章 Linux的文件权限与目录配置
Linux中的大小写是不一样的。
一、用户与用户组
1、文件所有者(own):功能:安全防护
2、用户组(group):每个账号都可以有多个用户组的支持
3、其他人(other)
默认情况下,所有的系统上的账号与一般身份用户,还有root的相关信息,都记录在/etc/passwd这个文件内
个人的密码都记录在etc/shadow这个文件下。所有的组名都记录在/etc/group内。
二、Linux文件权限
1、Linux文件属性。查看属性命令:ls -al(ls——list)
(1)r(4):可读;w(2):可写;x(1):可执行
d:目录;-:文件;l:链接文件;b:设备文件里的可供存储的接口设备;c:文件设备里的串行端口设备。
文件名:文件名前面有个 ‘.’ 就表示隐藏文件
目录:’/’表示根目录, ‘./’ 表示当前目录,‘../’ 表示当前目录的上一级目录 ‘~’表示当前用户主目录(~就等于/home/herui)
(2)查看隐藏文件命令:ls -a
eg:
d r w x r - x- - - 4 root root 4096 Sep 8 14 :06 .
- r w - r - - -r - - 1 root root 5661 Sep 8 14:06 install.log
权限 链接 所有者 用户组 文件容量(B) 修改日期(mtime) 文件名
注意:other如果没有x权限,是不能进入目录的
三、改变文件属性与权限
cp 复制
eg :cp 目录/源文件 目录/目标文件
cd 进入目录
eg :cd 目录
1、chgrp:改变文件所属用户组(change group)
(1)要被改变的组名必须要在/etc/group文件内才行
(2)用法:
chgrp users install.log ——把intall.log文件属性组改为users
chgrp -R users /etc/install.log——-R是进行递归的持续更改
2、chown:改变文件所有者(change owner)
chown daihong install.log
chown root:root install.log(用户名和用户组一起修改)
如果要递归的持续删除,那么应该加-R
3、chmod:改变文件的权限
chmod 777 .bashrc
chmod u=[+-]rwx go=rx .bashrc
如果要递归的持续删除,那么应该加-R
x:在目录当中是与“能否进入该目录”有关
w:让用户删除,更新,新建文件或目录
四、Linux文件种类与扩展名
1、文件种类
目录:d(directory)、链接文件:l(link)、普通文件:-、块设备文件:b(block)、字符设备文件:c(char)
套接字:s(sockets)、管道(FIFO):p(pipe)
2、文件长度
单一文件或目录的最大容许文件名为255个字符;完整路径名称长度为4096个字符
五、Linux目录配置
1、Linux目录配置标准:FHS
FHS(Filesystem Hierarchy Standard):希望让用户可以了解已安装软件通常放置在哪个目录下,并且规范每个特定的目录下应该放什么样子的数据。
可分享的 |
不可分享的 |
|
不变的 |
/usr(软件放置处) |
/etc(配置文件) |
/opt(第三方软件) |
/boot(开机与内核文件) |
|
可变的 |
/var/mail(用户邮件信箱) |
/var/run(程序相关) |
/var/spool/news(新闻组) |
/var/lock(程序相关) |
/(根目录):与开机系统有关
/usr(UNIX software resource):与软件安装/执行有关
/var(variable):与系统运作过程有关(主要针对常态性变动的文件,包括cache缓存等)
2、绝对路径和相对路径
绝对路径:以/开头
相对路径:以’.’或’..’开头(‘.’表示当前目录,’..’表示上一层目录)
第二章 Linux文件与目录管理
一、目录与路径
1、目录的相关操作
‘.’:代表此层目录
’..’:代表上一层目录
’-’:代表上一个目录
’~’:代表‘当前用户’所在的主目录
’~account’:代表account这个用户的主目录
(1)cd 切换目录
用法:cd 路径
cd ..——进入上一层目录, cd(或者cd ~)进入当前用户主目录, cd -——进入刚才那个目录, cd ../mqueue
(2)pwd 显示当前目录
用法:pwd [-P]
加P后的作用是显示目录的完整路径,而不是以链接文件的数据显示
(3)mkdir 创建目录
用法:mkdir [-mp] 目录
-m:能设置权限,不用默认的(umask)
-p:能递归
(4)rmdir 删除目录(目录需要一层一层地删除,而且被删除的目录里面必定不能存在其他的目录或者文件)
用法:rmdir [-p] 目录
-p:连同上层“空的”目录也一起删除
2、执行文件路径的变量:$PATH
(1)echo有显示、打印出的意思
显示PATH里面的路劲:echo $PATH,显示出来的不同路径用’:’分开,并且有顺序之分
不用用户的PATH有可能不尽相同
(2)添加PATH
PATH=”$PATH”:路径
二、文件与目录管理
1、查看文件与目录:ls
常用的用法:ls [-adl] 目录
-a:全部文件,包括隐藏文件(‘.’开头)
-d:仅列出目录本身,不列出目录内的文件数据
-l:列出详细信息
2、复制、删除与移动:cp、rm、mv
(1)cp 复制
常用用法:cp [-aipru] 目录/源文件 目录/目标文件
-a:相当于-pdr;-i:(互动模式)若目标文件存在,先询问;-p:把文件的本身属性一同复制,不用umask属性
-u:若目标文件比源文件旧才更新目标文件
(2)rm 删除
用法:rm [-fir] 文件或目录
-f:(force)忽略不存在的文件,不会出现警告;-i:互动模式;-r:递归删除
*:通配符,代表0到无穷多个任意字符
3、mv 移动文件或目录或改名
mv [-fiu] 目录/源文件 目录/目标文件
4、取得路劲的文件名与目录名称
比如一个路径,我们要确定最后那个是文件还是目录?
basename:路径(获取最后的文件名)
dirname:路径(获取目录名)
三、文件内容查阅
1、cat(concatenate)
常用用法 cat [-Abn] 目录/文件
-A可列出一些特殊字符;-b:列出行号,空白行不标号;-n:列出行号,空白行也标号
cat是从第一行到最后一行,那么tac就是从最后一行到第一行
2、nl 添加行号打印
3、可翻页查看
(1)more 目录/文件
说明:q退出,空格为下翻一页,b[ctral+b]代表往回翻页,但对管道文件无用。回车代表向下滚动一行
‘/字符串’代表向下查询字符串
(2)less 一页一页翻动(操作与man page类似)
(3)head 取出前面几行(默认情况是10行)
head [-n number] 目录/文件
(4)tail 取出后面几行(默认情况是10行)
tail [-n number] 目录/文件
4、非纯文本文件:od
用法:od [-t TYPE] 目录/文件
TYPE可为:a(默认的字符输出)c(ASCII字符输出)d[size](十进制,每个整数占用size bytes)f[size](浮点数,每个整数占用size bytes)o[size](八进制,每个整数占用size bytes)x[size](十六进制,每个整数占用size bytes)
5、创建新文件修改文件时间 touch
touch [-acdmt] 文件
-a:仅修改访问时间;-c仅修改文件的时间,若文件不存在则不创建
-m:仅修改mtime;-t后面接[YYMMDDhhmm]
三个时间:
(1)mtime(modification time):文件内容修改时间
(2)ctime(status time):权限与属性修改时间
(3)atime(access time):文件被取用的时间,如more、less等命令
注:ls命令出来的文件时间是mtime
注:两个连续的命令之间用 ’;’ 分开
四、文件与目录的默认权限与隐藏权限
在Linux的Ext2/Ext3文件系统下,我们还可以设置其他的系统隐藏属性,可用chattr来设置,用lsattr来查看
1、文件默认权限 umask
文件:-rw-rw-rw
目录:drwxrwxrwx
umask的分数指的是——该默认值需要去掉的权限
设置umask:umask number(3位)
eg:umask 为003,那么新建的文件与目录权限就为:
文件:(-rw-rw-rw)-(- - - - - - -wx)= -rw-rw-r--
目录:(drwxrwxrwx)-(- - - - - - -wx)= drwxrwxr--
2、chattr(设置文件的隐藏属性)
用法:chattr [+-=] [ai等] 文件或者目录
a:设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性
i:让一个文件“不能删除、改名,设置连接也无法写入或添加数据”
3、文件特殊权限:SUID,SGID,SBIT
SUID(SetUID):4——执行者将具有改程序所有者的权限(只对二进制程序、文件有效)
SGID(SetGID):2——执行者在执行过程中会获得该程序用户组的支持(可以对文件或目录)
SBIT(Sticky Bit):1——仅自己与root才有权利删除新建的文件(只对目录)
怎么来识别呢?
SUID:放到文件user权限的x位置;SGID:放到文件group权限的x位置;SBIT:放到文件others权限的x位置
注意:S,T表示空,因为当文件或目录本身都没有x属性时,自然其他执行者也没有权限,所以为空。
4、查看文件类型:file——查看某个文件的基本数据
用法:file 文件
五、命令与文件的查询
1、脚本文件名的查询
which 寻找“执行文件”
用法:which [-a] 命令
-a:是在找到PATH中所有满足的命令,which在PATH中去找。
2、文件名的查找
whereis,locate,find。whereis和locate快于find因为前者是利用数据库来查询的,find会直接去查找硬盘。
(1)whereis [-bmsu] 文件名或目录名
-b:只找二进制格式的文件;-m:只找在说明文件manual路径下的文件
-s:只找source源文件;-u:除上述三种选项中的其他特殊文件
(2)locate [-ir] keyword
-i:忽略大小写的差异;-r:后面可接正则表达式的显示方式
注意:locate寻找的数据在/var/lib/mlocate里面的数据所查找到的。手动更新命令:updatedb
(3)find [PATH] [option] [action]
-mtime n:n为数字,n天前的“一天之内”(0表示目前的时间)
-mtime +n:n天前,不含第n天
-mtime -n:第n天前到现在
-newer file:file是一个已经存在的文件,列出比file还要新的文件
file /home/herui -mtime -3 表示查询小于等于3天内的文件名
还可以根据-user,-name,-size(大小),-type(类型),perm mode(权限)等来查找
eg:找到系统中大于1M的文件:find / -size 1024k
其他查找:-exec command
eg:找出文件当中含所有SGID或SUID或SBIT的属性,并用ls -l列出来
find / -perm +7000 -exec ls -l {} \;
{}:把find / -perm +7000的内容放到里面
-exec和\;:表示命令的开始和结束的地方,因为’;’在bash环境下是有特殊意义的,因此利用反斜杠来转义