我来谈谈Linux文件目录与操作-给新手看

第三章 Linux文件和目录操作
第一节 Linux文件和目录简介
第二节 文件和目录基本操作
第三节 Linux查看文件内容命令
第四节 Linux修改文件日期
第五节 Linux文件和目录权限管理
第六节 Linux隐藏属性和特殊权限
第七节 Linux文件查找

linux 文件类型
普通文件 目录文件 设备文件(/dev) 链接文件 管道文件 查看文件类型(- 普通文件 . 隐藏文件 d 目录文件 c 设备文件 l 链接文件)
[[email protected] ~]# nano hello.txt #快捷创建记事本
[[email protected] ~]# cat hello.txt #查看记事本
hello #显示的内容
welcome
hi
[[email protected] ~]# ll
总用量 12
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 17 5月 4 19:54 hello.txt
....

查看文件信息 ll + 文件名
[[email protected] dev]# ll /dev/null
crw-rw-rw-. 1 root root 1, 3 5月 4 18:12 /dev/null
[[email protected] dev]# ll /dev/cdrom
lrwxrwxrwx. 1 root root 3 5月 4 18:12 /dev/cdrom -> sr0

查看文件类型 file + 文件名
[[email protected] ~]# file hello.txt
hello.txt: ASCII text
[[email protected] ~]# which ls
alias ls=‘ls --color=auto‘
/usr/bin/ls
[[email protected] ~]# file /usr/bin/ls
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped
[[email protected] ~]# file /dev/cdrom
/dev/cdrom: symbolic link to `sr0‘

linux文件结构
无论是程序 文档 数据库 或者 目录 他们的结构都是相同的 存储在分区的两部分中
索引节点 :文件的基本信息
数据节点 :文件的内容

文件名 最大 255个字符 区分大小写

目录结构 Filesyste FHS标准

根目录下子目录的职能
bin 符号链接 相当于快捷方式 主要用来存放用户调用的一些命令
boot 主要存放linux内核的启动命令
dev 主要存放设备文件
etc 主要存放所有的配置文件
home 一般用户的家目录
lib linux系统所调用的函数库
media 媒体信息
mnt 目录挂载的文件夹 比如访问光驱 /mnt/cdrom
opt 第三方的软件
proc和system 内存相关的东西
root root账号的家目录
[[email protected] /]# cd ~
[[email protected] ~]# pwd
/root
run 运行程序的合法目录
srv 服务启动访问的数据
tmp 临时目录
usr 第三方的安装程序
var 可变内容的数据 比如网站的日志

目录与路径

[[email protected] ~]# cd /etc/sysconfig/network-scripts/ #绝对路径
[[email protected] network-scripts]# cd ../../../root #相对路径
[[email protected] ~]# pwd
/root
[[email protected] ~]#

. 当前目录 .. 上级目录 -前一个工作目录 ~当前用户的家目录 /根目录
cd 切换目录 pwd 显示当前目录 mkdir 新建目录 rmdir 删除一个空目录

mkdir rmdir 的使用

[[email protected] ~]# mkdir abc #创建目录
[[email protected] ~]# ls
abc hello.txt 公共 视频 文档 音乐
anaconda-ks.cfg initial-setup-ks.cfg 模板 图片 下载 桌面
[[email protected] ~]# mkdir -p test1/test2/test3 #加上 -p 参数可以连续创建多个目录
[[email protected] ~]# ll
总用量 12
drwxr-xr-x. 2 root root 6 5月 4 20:35 abc
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 17 5月 4 19:54 hello.txt
-rw-r--r--. 1 root root 1910 5月 4 05:44 initial-setup-ks.cfg
drwxr-xr-x. 3 root root 19 5月 4 20:36 test1
drwxr-xr-x. 2 root root 6 5月 4 17:24 公共
drwxr-xr-x. 2 root root 6 5月 4 17:24 模板
drwxr-xr-x. 2 root root 6 5月 4 17:24 视频
drwxr-xr-x. 2 root root 6 5月 4 17:24 图片
drwxr-xr-x. 2 root root 6 5月 4 17:24 文档
drwxr-xr-x. 2 root root 6 5月 4 17:24 下载
drwxr-xr-x. 2 root root 6 5月 4 17:24 音乐
drwxr-xr-x. 2 root root 6 5月 4 17:24 桌面
[[email protected] ~]# cd test1
[[email protected] test1]# cd test2/
[[email protected] test2]# cd test3/
[[email protected] test3]# pwd
/root/test1/test2/test3
[[email protected] test3]# rmdir abc
rmdir: 删除 "abc" 失败: 没有那个文件或目录
[[email protected] test3]# d
[[email protected] ~]# rmdir abc # 删除目录
[[email protected] ~]# ll
总用量 12
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 17 5月 4 19:54 hello.txt
-rw-r--r--. 1 root root 1910 5月 4 05:44 initial-setup-ks.cfg
drwxr-xr-x. 3 root root 19 5月 4 20:36 test1
drwxr-xr-x. 2 root root 6 5月 4 17:24 公共
drwxr-xr-x. 2 root root 6 5月 4 17:24 模板
drwxr-xr-x. 2 root root 6 5月 4 17:24 视频
drwxr-xr-x. 2 root root 6 5月 4 17:24 图片
drwxr-xr-x. 2 root root 6 5月 4 17:24 文档
drwxr-xr-x. 2 root root 6 5月 4 17:24 下载
drwxr-xr-x. 2 root root 6 5月 4 17:24 音乐
drwxr-xr-x. 2 root root 6 5月 4 17:24 桌面
[[email protected] ~]# rmdir -p test1/test2/test3 #加上 - p 参数连续删除目录
[[email protected] ~]# ll
总用量 12
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 17 5月 4 19:54 hello.txt
-rw-r--r--. 1 root root 1910 5月 4 05:44 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 5月 4 17:24 公共
drwxr-xr-x. 2 root root 6 5月 4 17:24 模板
drwxr-xr-x. 2 root root 6 5月 4 17:24 视频
drwxr-xr-x. 2 root root 6 5月 4 17:24 图片
drwxr-xr-x. 2 root root 6 5月 4 17:24 文档
drwxr-xr-x. 2 root root 6 5月 4 17:24 下载
drwxr-xr-x. 2 root root 6 5月 4 17:24 音乐
drwxr-xr-x. 2 root root 6 5月 4 17:24 桌面

文件与目录管理 (也可以使用 命令 + --help 查看更详细的用途)
ls 查看文件与目录 ls -l 单行显示 相当于 ll ls -a 查看所有文件 包括隐藏文件 ls -l -i相当于 ls -li 查看 inode 节点号

d(文件类型)rwx(拥有者权限)r-x(所属用户组权限)r-x(其他用户权限). 2 (链接数) root(所有者) root(所属用户组) 6(文件大小) 5月 4 17:24(最后修改时间) 公共(文件名)
r 表示允许读权限
w 表示允许写权限
x 表示允许执行权限

cp 拷贝文件与目录

[[email protected] ~]# cp hello.txt ./abc
[[email protected] ~]# cp hello.txt /root/abc #功能同上 复制hello.test文件到当前目录下的目录中
cp:是否覆盖"/root/abc/hello.txt"? y
[[email protected] ~]# mkdir -p test1/test2/test3 # -p 连续创建目录
[[email protected] ~]# cp ./hello.txt ./test1/test2/test3/ #复制文件 到 次目录下
[[email protected] ~]# cp -r ./test1 ./abc #由于test1中包含多个子目录和子文件 所以使用 -r 参数循环复制到 此目录下
[[email protected] ~]# cd abc #查看
[[email protected] abc]# ls
hello.txt test1
[[email protected] abc]# cd test1
[[email protected] test1]# cd test2
[[email protected] test2]# cd test3
[[email protected] test3]# pwd
/root/abc/test1/test2/test3
[[email protected] test3]#

rm 删除文件与目录
[[email protected] ~]# rm -f hello #强制删掉 不询问
[[email protected] ~]# rm -i hello.txt #删除并且询问
rm:是否删除普通文件 "hello.txt"?n

[[email protected] ~]# ll
总用量 12
drwxr-xr-x. 3 root root 36 5月 4 21:07 abc
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 17 5月 4 19:54 hello.txt
-rw-r--r--. 1 root root 1910 5月 4 05:44 initial-setup-ks.cfg
drwxr-xr-x. 3 root root 19 5月 4 21:06 test1

[[email protected] ~]# rm -rf test1 # -rf 循环删除目录 并且不询问 比较常用
[[email protected] ~]# ll
总用量 12
drwxr-xr-x. 3 root root 36 5月 4 21:07 abc
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 17 5月 4 19:54 hello.txt
-rw-r--r--. 1 root root 1910 5月 4 05:44 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 5月 4 17:24 公共

mv 移动文件与目录(可以用来给文件 目录进行重命名 可以移动文件)

[[email protected] ~]# ll
总用量 12
drwxr-xr-x. 3 root root 36 5月 4 21:07 abc
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 17 5月 4 19:54 hello.txt
-rw-r--r--. 1 root root 1910 5月 4 05:44 initial-setup-ks.cfg
drwxr-xr-x. 3 root root 19 5月 4 21:19 test1
drwxr-xr-x. 2 root root 6 5月 4 17:24 公共
drwxr-xr-x. 2 root root 6 5月 4 17:24 模板
drwxr-xr-x. 2 root root 6 5月 4 17:24 视频
drwxr-xr-x. 2 root root 6 5月 4 17:24 图片
drwxr-xr-x. 2 root root 6 5月 4 17:24 文档
drwxr-xr-x. 2 root root 6 5月 4 17:24 下载
drwxr-xr-x. 2 root root 6 5月 4 17:24 音乐
drwxr-xr-x. 2 root root 6 5月 4 17:24 桌面
[[email protected] ~]# mv test1 test2
[[email protected] ~]# ll
总用量 12
drwxr-xr-x. 3 root root 36 5月 4 21:07 abc
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 17 5月 4 19:54 hello.txt
-rw-r--r--. 1 root root 1910 5月 4 05:44 initial-setup-ks.cfg
drwxr-xr-x. 3 root root 19 5月 4 21:19 test2
drwxr-xr-x. 2 root root 6 5月 4 17:24 公共
drwxr-xr-x. 2 root root 6 5月 4 17:24 模板
drwxr-xr-x. 2 root root 6 5月 4 17:24 视频
drwxr-xr-x. 2 root root 6 5月 4 17:24 图片
drwxr-xr-x. 2 root root 6 5月 4 17:24 文档
drwxr-xr-x. 2 root root 6 5月 4 17:24 下载
drwxr-xr-x. 2 root root 6 5月 4 17:24 音乐
drwxr-xr-x. 2 root root 6 5月 4 17:24 桌面
[[email protected] ~]# mv test2 ./abc/test1
mv:是否覆盖"./abc/test1/test2"? ^C
[[email protected] ~]# mv test2 ./abc/test5
[[email protected] ~]# cd abc
[[email protected] abc]# ll
总用量 4
-rw-r--r--. 1 root root 17 5月 4 21:04 hello.txt
drwxr-xr-x. 3 root root 19 5月 4 21:07 test1
drwxr-xr-x. 3 root root 19 5月 4 21:19 test5

basename 取得路径文件名
dirname 取得路径目录名
[[email protected] ~]# basename ./abc/hello.txt #取得路径文件名
hello.txt
[[email protected] ~]# dirname ./abc/text1 #取得路径目录名
./abc

如何查看文件内容

cat 命令
[[email protected] ~]# cat hello.txt # 查看 文件内容
hello
welcome
hi

[[email protected] ~]# cat -n ./hello1.txt #加上 参数 -n 表示对所有行进行编号
1 hello world
2
3 welcome
4
5 hi
[[email protected] ~]# cat -b ./hello.txt #加上 参数 -b 表示对空行进行编号
1 hello
2 welcome
3 hi
[[email protected] ~]# cat -n ./hello1.txt
1 hello world
2
3 welcome
4
5 hi
tac查看
[[email protected] ~]# tac hello.txt #倒序输出文件内容 用的较少 参数有 -r -b -s 如需了解 --help
hi
welcome
hello

more #主要用文件内容多的文件和目录

[[email protected] ~]# more /etc/man_db.conf

You must provide all system manpaths, including manpaths for alternate

operating systems, locale specific manpaths, and combinations of both, if

they exist, otherwise the permissions of the user running man/mandb will

be used to manipulate the manual pages. Also, mandb will not initialise

the database cache for any manpaths not mentioned below unless explicitly

requested to do so.

...
...
...

space :向下翻一页
Ente:向下翻一行/字符串 :在这个显示行的内容中,向下查询“字符串”
:f :立刻显示出文件名以及目前显示的行数
q:退出
less
与more相对应 (区别不大)
空格/PageDown :向下翻一
PageUp :向上翻一页/字符串 :向下查找
?字符串 :向上查找q :退出
head (默认显示前10行)

[[email protected] ~]# head /etc/man_db.conf #查看文件的前十行
#
#

This file is used by the man-db package to configure the man and cat paths.

It is also used to provide a manpath for those without one by examining

their PATH environment variable. For details see the manpath(5) man page.

#

Lines beginning with `#‘ are comments and are ignored. Any combination of

tabs or spaces may be used as `whitespace‘ separators.

#

There are three mappings allowed in this file:

[[email protected] ~]# head -n 5 /etc/man_db.conf # -n 参数 用来设置想要查看的行数 查看文件的前5行
#
#

This file is used by the man-db package to configure the man and cat paths.

It is also used to provide a manpath for those without one by examining

their PATH environment variable. For details see the manpath(5) man page.

tail (默认显示后10行)

[[email protected] etc]# tail ./man_db.conf

formatted for a terminal of the given width, regardless of the width of

the terminal actually being used. This should generally be within the

range set by MINCATWIDTH and MAXCATWIDTH.

#
#CATWIDTH 0
#
#---------------------------------------------------------

Flags.

NOCACHE keeps man from creating cat pages.

#NOCACHE

[[email protected] etc]# tail -n 5 ./man_db.conf #-n 后接要显行的行数 就可以显示几行 #
#---------------------------------------------------------

Flags.

NOCACHE keeps man from creating cat pages.

#NOCACHE

touch修改文件时间或者创建新文件

、、、[[email protected] ~]# echo "hello">hi.txt;ll hi.txt # echo 可以用来创建文件 格式是 “内容”>文件名称
[[email protected] ~]# ll hi.txt;cat hi.txt
-rw-r--r--. 1 root root 6 5月 7 00:31 hi.txt
hello

[[email protected] ~]# touch ./test1.txt #创建新的文件 只是普通文件格式 创建目录 需要用mkdir命令
[[email protected] ~]# ll
总用量 16
drwxr-xr-x. 3 root root 36 5月 4 21:27 abc
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 25 5月 4 21:47 hello1.txt
-rw-r--r--. 1 root root 17 5月 4 19:54 hello.txt
-rw-r--r--. 1 root root 1910 5月 4 05:44 initial-setup-ks.cfg
drwxr-xr-x. 3 root root 19 5月 4 21:19 test1
-rw-r--r--. 1 root root 0 5月 6 01:19 test1.txt
drwxr-xr-x. 2 root root 6 5月 4 17:24 公共
drwxr-xr-x. 2 root root 6 5月 4 17:24 模板
drwxr-xr-x. 2 root root 6 5月 4 17:24 视频
drwxr-xr-x. 2 root root 6 5月 4 17:24 图片
drwxr-xr-x. 2 root root 6 5月 4 17:24 文档
drwxr-xr-x. 2 root root 6 5月 4 17:24 下载
drwxr-xr-x. 2 root root 6 5月 4 17:24 音乐
drwxr-xr-x. 2 root root 6 5月 4 17:24 桌面

-mtime (内容数据修改时会改此时间)
-ctime (状态改变会改此时间)
-atime (文件内容, 此时间就会改)

[[email protected] ~]# date
2018年 05月 06日 星期日 01:25:39 CST
[[email protected] ~]# ll test1.txt; ll --time=atime test1.txt; ll --time=ctime test1.txt
-rw-r--r--. 1 root root 15 5月 6 01:21 test1.txt
-rw-r--r--. 1 root root 15 5月 6 01:21 test1.txt
-rw-r--r--. 1 root root 15 5月 6 01:21 test1.txt
[[email protected] ~]# nano test.txt
[[email protected] ~]# nano test1.txt
[[email protected] ~]# ll test1.txt; ll --time=atime test1.txt; ll --time=ctime test1.txt
-rw-r--r--. 1 root root 29 5月 6 01:31 test1.txt
-rw-r--r--. 1 root root 29 5月 6 01:30 test1.txt
-rw-r--r--. 1 root root 29 5月 6 01:31 test1.txt
[[email protected] ~]# chmod g+w tesr1.txt
chmod: 无法访问"tesr1.txt": 没有那个文件或目录
[[email protected] ~]# chmod g+w test1.txt
[[email protected] ~]# ll test1.txt; ll --time=atime test1.txt; ll --time=ctime test1.txt
-rw-rw-r--. 1 root root 29 5月 6 01:31 test1.txt
-rw-rw-r--. 1 root root 29 5月 6 01:30 test1.txt
-rw-rw-r--. 1 root root 29 5月 6 01:31 test1.txt

文件目录权限管理

[[email protected] ~]# ll test1.txt
-rw-rw-r--. 1 root root 29 5月 6 01:31 test1.txt

所属用户 所属组 其他用户



rwx rwx rwx
111 111 111
7 7 7
rw- rw- r--
110 110 100
6 6 4

chmod 用法 更改文件目录权限

方式一 二进制表示模式
[[email protected] ~]# chmod 755 test1.txt # 修改文件权限 chmod命令 加上权限二进制表示 加文件名
[[email protected] ~]# ll test1.txt
-rwxr-xr-x. 1 root root 29 5月 6 01:31 test1.txt
方式二 加减赋值操作
[[email protected] ~]# ll test1.txt;chmod u-w test1.txt;ll test1.txt #其中u代表user 就是所属用户
-rw-r--r--. 1 root root 29 5月 6 01:31 test1.txt
-r--r--r--. 1 root root 29 5月 6 01:31 test1.txt
[[email protected] ~]# ll test1.txt;chmod go+rw test1.txt;ll test1.txt #其中g代表group(所属用户组)o代表(其他用户)
-r--r--r--. 1 root root 29 5月 6 01:31 test1.txt
-r--rw-rw-. 1 root root 29 5月 6 01:31 test1.txt
[[email protected] ~]# ll test1.txt;chmod ugo-r test1.txt;ll test1.txt #chmod ugo 相当于 chmod a 表示全部
-r--rw-rw-. 1 root root 29 5月 6 01:31 test1.txt
-----w--w-. 1 root root 29 5月 6 01:31 test1.txt
方式三 也可以用 “=”来进行权限修改 ,可以用逗号隔开
[[email protected] ~]# ll test1.txt;chmod u=rw,g=rw,o=r test1.txt;ll test1.txt
-rwxrwxrwx. 1 root root 29 5月 6 01:31 test1.txt
-rw-rw-r--. 1 root root 29 5月 6 01:31 test1.txt

chgrp 和chown 更改所属用户和用户组

[[email protected] ~]# ll test1.txt;chgrp zhaoxin test1.txt;ll test1.txt #更改用户的所属用户组
-rw-rw-r--. 1 root root 29 5月 6 01:31 test1.txt
-rw-rw-r--. 1 root zhaoxin 29 5月 6 01:31 test1.txt

[[email protected] ~]# ll test1.txt; chown zhaoxin:root test1.txt;ll test1.txt #更改文件的所属用户 和 所属用户组
-rw-rw-r--. 1 root zhaoxin 29 5月 6 01:31 test1.txt
-rw-rw-r--. 1 zhaoxin root 29 5月 6 01:31 test1.txt

针对目录进行的操作 chown -R 和chmod -R

[[email protected] ~]# ll test1;chown -R zhaoxin:root test1;ll test1 #将test1目录包括其所有子目录都改为 以zhaoxin为用户 root为所属群组的命令 —R 参数实现
总用量 0
drwxr-xr-x. 3 root root 18 5月 4 21:19 test2
总用量 0
drwxr-xr-x. 3 zhaoxin root 18 5月 4 21:19 test2

[[email protected] ~]# ll test1;chmod -R 774 test1;ll test1 #将test1目录包括其所有子目录权限都改为 774(二进制方式) 的命令 —R 参数实现
总用量 0
drwxr-xr-x. 3 zhaoxin root 18 5月 4 21:19 test2
总用量 0
drwxrwxr--. 3 zhaoxin root 18 5月 4 21:19 test2

文件默认权限 umask
[[email protected] ~]# mkdir bbb;echo "hello">hi.txt;ll;ll hi.txt #创建一个名字为bbb的目录 和 名字为 hi.txt的文件 并查看其权限

总用量 24
drwxr-xr-x. 3 root root 36 5月 4 21:27 abc
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 5月 7 02:23 bbb
...
-rw-r--r--. 1 root root 6 5月 7 02:23 hi.txt
[[email protected] ~]# umask #查看默认权限umask的值
0022

我创建的文件默认权限: 644 -rw-r--r--
目录 755 drwxr-xr-x

目录和文件的默认权限:
目录 : 777 rwx rwx rwx 文件: 666 rw- rw- rw-
755 rwx r-x r-x 644 rw- r-- r--

[[email protected] ~]# umask 0003 #更改umask的默认权限值为0003
[[email protected] ~]# umask
0003
[[email protected] ~]# mkdir ccc
[[email protected] ~]# ll
总用量 24
drwxr-xr-x. 3 root root 36 5月 4 21:27 abc
-rw-------. 1 root root 1862 5月 4 05:42 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 5月 7 02:23 bbb
drwxrwxr--. 2 root root 6 5月 7 02:35 ccc

[[email protected] ~]# touch ccc.txt;ll ccc.txt
-rw-rw-r--. 1 root root 0 5月 7 02:37 ccc.txt

目录和文件的默认权限:
目录 : 777 rwx rwx rwx 文件: 666 rw- rw- rw-
umask : 003
ccc rwx rwx r-- ccc.txt rw- rw- r--
提示 不能简单的用666-003=663 这是错的 应该去对应其文件权限 比如003 就是用户与用户组减去0 所以权限不变 然而其他用户则少3 3代表 -wx 权限 所以去掉这两个权限也就是上面 rw- 权限变成 r-- 权限的原因

文件隐藏的属性 chattr lsattr (attr 属性的意思)

[[email protected] ~]# touch test1.txt
[[email protected] ~]# ll
总用量 24
...
-rw-rw-r--. 1 zhaoxin zhaoxin 29 5月 7 02:45 test1.txt
...
[[email protected] ~]# lsattr test1.txt #查看 test1.txt的隐藏属性
---------------- test1.txt
[[email protected] ~]# chattr +i test1.txt #使用chattr命令 加上参数i 为文件添加不得任意更动文件或目录的隐藏属性
[[email protected] ~]# rm test1.txt #尝试删除文件 结果因为其隐藏属性 不能删除
rm:是否删除普通文件 "test1.txt"?y
rm: 无法删除"test1.txt": 不允许的操作
[[email protected] ~]# lsattr test1.txt #再次查看文件的隐藏属性 发现i权限
----i----------- test1.txt
[[email protected] ~]# chattr -i test1.txt #去除i权限 可以使用chattr 减去i权限即可
[[email protected] ~]# rm test1.txt #尝试删除文件 结果成功
rm:是否删除普通文件 "test1.txt"?y
[[email protected] ~]# ll test1.txt
ls: 无法访问test1.txt: 没有那个文件或目录

chattr的一些参数

chattr [+/-/=<属性>][文件或目录...]b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在dump操作之外。 i:不得任意更动文件或目录。 ( 是一个标注 表示经常使用)
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防以外删除。 a:只能加数据,不能修改或删除
lsattr的一些参数

-a  显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。
-d  显示,目录名称,而非其内容。
-l  此参数目前没有任何作用。
-R  递归处理,将指定目录下的所有文件及子目录一并处理。
-v  显示文件或目录版本。
-V  显示版本信息。
文件特殊权限 : SUID ,SGID,SBIT (4--- 2--- 1---)

SUID 4 s

ls -l /usr/bin/passwd仅对二进制程序有效执行者对该程序要有x权限
在该程序执行过程中有效 执行者拥有该程序所有者的权限
[[email protected] ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
#查看该文件 其所有者拥有s权限 也就是说 当第三方用户也就是其他用户访问该文件的时候可以使用所有者权限 如zhaoxin用户访问该文件时本来只拥有x权限也就执行权限 但是由于其拥有 s 权限 所以zhaoxin用户就拥有了其 所有者 也就是root的权限 rws权限

SGID 2 s
ls -l /usr/bin/locate可针对文件和目录
SGID对二进制程序有用对执行者要求具备x权限 执行者拥有该程序用户组的支持
[[email protected] ~]# ls -l /usr/bin/locate
-rwx--s--x. 1 root slocate 40512 11月 5 2016 /usr/bin/locate
[[email protected] ~]# ls -l /var/lib/mlocate/mlocate.db
-rw-r-----. 1 root slocate 3658465 5月 6 10:08 /var/lib/mlocate/mlocate.db
#查看该文件 其用户组拥有s权限 也就是说 当第三方用户也就是其他用户访问该文件的时候可以使用用户组权限 如zhaoxin用户访问该文件时本来只拥有x权限也就执行权限 但是由于其拥有 s 权限 所以zhaoxin用户就拥有了其用户组的支持 由于mlocate.db属于 slocate用户组 所以zhaoxin用户 就拥有使用mlocate.db的权限

SBIT(Sticky bit) 1 t
ls -ld /tmp
*只对目录有效*当目录有wx权限时,用户在该目下建的文件只有自己和root有权操作
[[email protected] ~]# useradd guest #创建guest用户
[[email protected] ~]# passwd guest #设置密码
更改用户 guest 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令×××已经成功更新。
[[email protected] ~]# ll /home #查看home目录下的guest用户的信息
总用量 4
drwx------. 5 guest guest 107 5月 7 03:40 guest
drwx------. 15 zhaoxin zhaoxin 4096 5月 7 02:13 zhaoxin

[[email protected] ~]# su zhaoxin #切换到 zhaoxin用户
密码:
[[email protected] root]$ cd /tmp
[[email protected] tmp]$ echo "hello">hi.txt #创建一个名字为hi.txt的文件
[[email protected] tmp]$ ll hi.txt
-rw-rw-r--. 1 zhaoxin zhaoxin 6 5月 7 03:42 hi.txt
[[email protected] tmp]$ su guest #切换到guest用户
密码:
[[email protected] tmp]$ ll hi.txt
-rw-rw-r--. 1 zhaoxin zhaoxin 6 5月 7 03:42 hi.txt
[[email protected] tmp]$ whoami
guest
[[email protected] tmp]$ rm hi.txt #试图删除文件 不成功
rm:是否删除有写保护的普通文件 "hi.txt"?y
rm: 无法删除"hi.txt": 不允许的操作
[[email protected] tmp]$ ll -d /tmp
drwxrwxrwt. 22 root root 4096 5月 7 03:42 /tmp

原因就是 tmp文件拥有 t 特殊权限 t权限只对目录有效 也就是用户拥有t权限的目录下创建的文件只有用户本身和root用户才有权操作 其余用户则不可以

如何增加 SUID SGID SBIT 权限

[[email protected] tmp]# cd
[[email protected] ~]# touch vel #创建文件
[[email protected] ~]# ll vel
-rw-r--r--. 1 root root 0 5月 7 03:55 vel
[[email protected] ~]# umask #umask拥有四个值 第一个值用来设置特殊权限
0022
[[email protected] ~]# chmod 4755 vel;ll vel #通过二进制增加权限的方法来 增加 SUID s 权限 SUID s 权限代表的是4
-rwsr-xr-x. 1 root root 0 5月 7 03:55 vel
[[email protected] ~]# chmod 2755 vel;ll vel #通过二进制增加权限的方法来 增加 SGID s 权限 SGID s 权限代表的是2
-rwxr-sr-x. 1 root root 0 5月 7 03:55 vel
[[email protected] ~]# chmod 6755 vel;ll vel #通过二进制增加权限的方法来 增加 SUID s 权限 和 SGID s 权限 权限代表的是4+2 =6
-rwsr-sr-x. 1 root root 0 5月 7 03:55 vel
[[email protected] ~]# chmod 1755 vel;ll vel #通过二进制增加权限的方法来 增加 SBIT T 权限 SBIT T 权限代表的是1
-rwxr-xr-t. 1 root root 0 5月 7 03:55 vel

去除特殊权限的操作

[[email protected] ~]# chmod o=r vel;ll vel #通过也可以用 “=”来进行权限修改
-rwxr-xr--. 1 root root 0 5月 7 03:55 vel

文件查找
which whereis locate find

[[email protected] ~]# which ls
alias ls=‘ls --color=auto‘
/usr/bin/ls
[[email protected] ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

which 根据PATH找执行文件whereis 从PATH,lib,man手中找二进制、源文件 、man页
locate the binary, source, and manual page files for a command
-b : 只找二进制文件
-m: 只找在说明文件manual路径下的文件
-s : 只找source源文件
-u : 没有说明文档的文件

locate (/var/lib/mlocate) #主要是在数据库中寻找 系统每天都有固定时间更新数据库 也可以使用 updatedb (时间比较漫长)手动更新数据库

 find   全盘寻找

find (查找档案,功能强大,就是耗时间和硬盘):
find [PATH] [option] [action] 档案或目录名称
例如 find /root -name bill.txt [[email protected] ~]# find /root bill.txt

原文地址:http://blog.51cto.com/13962326/2173554

时间: 2024-10-28 20:00:25

我来谈谈Linux文件目录与操作-给新手看的相关文章

linux文件目录操作的相关命令

linux文件目录操作的相关命令 mkdir rmdir tree touch stat cp mv rm mkdir 功能说明:建立空目录 语 法:mkdir [-p][--help][--v][-m <目录属性>][目录名称] 补充说明:mkdir可建立目录并同时设置目录的权限. 选项: -m<目录属性> 建立目录时同时设置目录的权限. [[email protected]_18_121_centos ~]# mkdir -m 775 qin [[email protected

你一定要知道的关于Linux文件目录操作的12个常用命令

写在前面: 1,<你一定要知道的关于Linux文件目录操作的12个常用命令>是楼主收集的关于Linux文件目录操作最常用的命令,包括文件或目录的新建.拷贝.移动.删除.查看等,是开发人员操作Linux系统的常用命令,所以你一定要知道. 2,<你一定要知道的关于Linux文件目录操作的12个常用命令>适合初学者,对于Linux大神的请绕过,不过欢迎一起讨论学习! 3,此次收集,多谢来自http://www.cnblogs.com/peida/archive/2012/10/23/27

Linux文件目录结构详解

整理自<鸟哥的私房菜> 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux目录结构的相关知识. 当在使用Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的目录,比如etc.usr.var.bin ... ... 等目录,而在这些目录中,我们进去看看,发现也有很多的目录或文件.文件系统在Linux下看

谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH PKG_CONFIG_PATH

谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH  PKG_CONFIG_PATH 转载自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=23069658&id=4028681 学习到了一个阶段之后,就需要不断的总结.沉淀.清零,然后才能继续“上路”.回想起自己当年刚接触Linux时,不管是用源码包编译程序,还是程序运行时出现的和动态库的各种恩恩怨怨,心里那真叫一个难受.那时候脑袋里曾经

谈谈Linux内存释放

上上周吧,一个朋友问我说他公司的服务器内存free 为0 是为什么,意思大概是内存去哪了,这引发了一个小小的讨论,也就是内存释放的问题… 首先我们可能会用free 去查看内存的使用率,它应该是这样的 [[email protected] ~]# free -m total used free shared buffers cached Mem: 32040 31707 332 0 498 27649 -/+ buffers/cache: 3559 28480 Swap: 16087 0 1608

Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数

文章转载:http://blog.snsgou.com/post-793.html 1.查看物理CPU的个数 [[email protected] ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l1 2.查看逻辑CPU的个数 [[email protected] ~]# cat /proc/cpuinfo |grep "processor"|wc -l4 3.查看CPU是几核(即,核心数) [[em

Linux 用键盘操作窗口

以下是我从各处搜集来的关于用键盘操作窗口信息,操作可能不是最简或者最好的,当然也可能不是最全的,以后遇到新的操作,我会即使添加,如果你有我没有列出的操作,希望你能提出,我可以加上! 我实验的操作系统是ubuntu14.04,其他不清楚 1. 用键盘移动窗口 1)ALT+F7 快捷键, 然后用上.下.左.右键移动窗口 2)ALT+space(空格键),然后按m键,进入移动模式,然后用上.下.左.右键移动窗口 2.改变窗口大小 1)ALT+F8 快捷键, 然后用上.下.左.右键改变窗口大小 2)AL

Linux 图形化操作

//Linux图形化操作 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <curses.h> /*文件链接时需要加载curses共享库文件*/ int main(int arg, char *args[]) { //开启图形模式 initscr(); //不回显(不在屏

Linux应用层直接操作GPIO

Linux应用层直接操作GPIO 在一个老手的指导下,应用层可以直接操作GPIO,具体指设置GPIO的输入输出以及输出电平高或者低.这个大大地提高了灵活性,官方的文档有GPIO Sysfs Interface for Userspace,GPIO Sysfs. 这里我记录一下使用过例子: # RK30_PIN0_PD4 # A0-7 -> 0-7 / B0-7 -> 8-15 / C0-7 -> 16-23 / D0-7 -> 24-31 echo 28 > /sys/cla