如非事先说明,本篇教程一律使用xshell通过ssh连接到Ubuntu操作系统,且为root用户操作(不明白的话可以看Linux操作系统学习笔记 2 哦~)
1.修改文件时间或创建文件:touch
#touch newfile
//touch改文件的三个时间(mtime:内容修改时间,ctime:状态时间,权限与属性被更改了会更新这个时间,atime:读取时间,使用cat去读取就会更新该文件的atime)都会更新为目前的时间,若该文件不存在,创建新文件,文件大小是0
cp -a ~/.bashrc bashrc
ll bashrc; ll --time=ctime bashrc; ll --time=atime bashrc
touch bashrc
ll bashrc; ll --time=ctime bashrc; ll --time=atime bashrc
-a :相当于 -pdr 的意思(参数pdr分别为:保留权限,复制软链接本身,递归复制);
-p :连同档案的属性一起复制过去,而非使用预设属性;
-d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非档案本身;
-r :递归持续复制,用于目录的复制行为
每个文件在Linux下面都会记录3个主要的修改时间:
- modification time(mtime,修改时间):当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性。
- status time(ctime,状态时间):当该文件的”状态(status)”改变时,就会更新这个时间,举例来说,更改了权限与属性,就会更新这个时间。
- access time(atime,存取时间):当“取用文件内容”时,就会更新这个读取时间。举例来说,使用cat去读取 ~/.bashrc,就会更新atime了。
ls命令看到的是modify time 用vi等工具编辑一个文件保存后,modify time会被修改。用ls -l命令不会修改文件的access time,但cat命令会修改access time。
2.改变文件属性与权限
- chmod:改变文件的权限
- chown:改变文件所有者
- chgrp:改变文件所属用户组
Linux中有三种权限 读,写,执行 分别对应数字 1 2 4,对应字母r w x,多种权限则求和,举例如果是可读可写可执行权限则为7 字母表示为rwx 可读可执行为6 字母表示为wx
cd ~
# 查看.ssh文件夹的权限
ls -dl .ssh
# 去掉所有者执行权限(-x),用户组设置为写权限(=w),其他添加读权限(+r)
chmod u-x,g=w,o+r .ssh
ls -dl .ssh
chmod 741 .ssh
ls -dl .ssh
现在我们新建一个用户来尝试更改文件的所有者和所属用户组
#添加用户student
useradd students
#为其设置密码 student 注意执行此命令后输入不会在屏幕上展示.输完回车即可
passwd students
#将.ssh文件夹 更改所有者为students用户
chown students .ssh
ls -dl .ssh
#将.ssh文件夹 更改用户组为students用户组
chgrp students .ssh
ls -dl .ssh
#将.ssh文件夹 更改所有者为root用户组下的root用户
chown root:root .ssh
ls -dl .ssh
#将.ssh文件夹 更改所有者为students组下的root用户
chown :students .ssh
ls -dl .ssh
3. 文件默认权限:umask(权限过滤符)
当我们在创建一个文件或一个文件夹时,本来应该是满权限的,但经过umask过滤得到的权限不是一个完整的权限了。当我们创建一个文件的时候,文件的权限本来应该是666(可读、可写,但不可执行)。对于文件并不是666减去umask,而对于文件夹,确实是这样(777减去umask)。
umask //使用umask查看默认权限
umask -S //使用umask查看默认权限的具体描述
mkdir newDir1
ll -d newDir1
touch newFile1
ll newFile1
umask 023 //使用umask设置默认权限
umask
umask -S //使用umask查看默认权限的具体描述
mkdir newDir2
ll -d newDir2
echo 123 >> newFile2
ll newFile2
如图所示,设置新的umask之后newDir2的默认权限变成了u=rwx,g=rx,o=r,而之前是u=rwx,g=rx,o=rx
4.命令与文件的查询
1.which寻找可执行文件
which passwd //寻找命令的完整文件名
which ifconfig
#which默认是查找PATH内所规范的目录
which cd //cd是内置命令,所以找不到,可以用type命令
2. whereis寻找特定文件
-b:只找binary文件
-m:只找在说明文件manual路径下的文件
-s:只找source源文件
whereis -b passwd
whereis -m passwd //只找出跟passwd有关的“说明文件”文件名
whereis -s passwd
3. locate寻找关键字文件名
locate passwd //在系统中找出所有与passwd相关的文件名
在完整文件名(包括路径名称)当中,只要有passwd在其中,就会被显示出来。whereis和locate利用数据库来查找数据,数据库的创建默认每天执行一次(每个distribution都不同),可以使用updatedb更新数据库。
4. find 在磁盘上寻找文件
a.与时间有关的参数
find / -mtime 0
0代表当前时间,从现在开始到24小时内,所有变动过内容的文件都会被列出来!
1代表从现在开始,1*24~2*24之间,即1天前的24小时内
3代表从现在开始,3*24~4*24之间,即3天前的24小时内
find /etc -newer /etc/passwd
//寻找/etc底下的文件,如果文件日期比/etc/passwd新就列出
b.与用户或用户组有关的参数
find /home -user students
在/home里面查找属于students这个用户的文件
find / -nouser
-nouser寻找文件的所有者不存在/etc/passwd的人
-nogroup寻找文件的所有用户组不存在于/etc/group中的文件
用户自行由网络上面下载文件时会发生,如果系列里面某个账号删除了,但是该账号已经在系统内创建很多文件时,就可能会发生无主文件存在。
c.与文件权限及名称有关的参数
find / -name passwd
d.其他可进行的参数
find / -size 1000k //查找大小大于1000kB的文件
find / -size 1000M //查找大小大于1000MB的文件
- c: 表示字节数
- k: 表示 kilo bytes (1024字节)
- w: 字 (2字节)
- M:兆字节(1048576字节)
- G: 千兆字节 (1073741824字节)
5. grep用来在内容中寻找特定内容,并且支持正则表达式
grep [-acinv] ‘搜寻字串’ filename
#在 /etc/passwd 查找 student 字符串
grep student /etc/passwd
#搜索后显示文件的一行