一、特殊权限设置
chattr命令 这个命令为文件或目录添加特殊权限,较常用的有i、a这两个权限。
chattr +i 名称(文件或目录)
文件:文件添加此权限后无法写入数据,无法重命名、删除此文件。
目录:目录添加此权限后无法再写入文件、无法删除目录内的文件或目录、无法移动或重命名目录内的数据。
chattr -i 为文件或目录去掉i权限
实例:
[[email protected] tmp]# chattr +i 2 //给目录2添加i权限
[[email protected] tmp]# lsattr -d 2 //查看目录2的权限
----i--------e- 2 //显示有i权限
chattr +a 追加特殊权限
文件 无法写入数据
目录:只能追加信息,不能删除或移动内容。
chattr -a 文件或目录名 去掉a权限
实例:
[[email protected] tmp]# chattr +a 1 //为文件1添加a权限
[[email protected] tmp]# lsattr 1 //查看文件1的特殊权限
-----a-------e- 1 //文件1目前有a权限
[[email protected] tmp]# vi 1 //vi进入该文件,无法写入任何数据
注:默认一个文件没有任何特殊权限
lsattr 常用选项
-V 显示lsattr版本
-a 显示所有文件,包括隐藏文件
-d 显示目录本身特效
-R 递归显示
[[email protected] tmp]# ls -ld /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image.png
上面的rws的s 是set_uid权限 这个权限可以让其他用户拥有属主的权限
如果把这个文件的set_uid权限去掉,则普通用户无法修改自己的密码。
实例:chmod u+s /usr/bin/passwd
注意:如果属主没有x执行权限,添加s权限后,会变成大S,且没有任何意义
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(1).png
什么样的文件可以设置s权限?:可执行文件、必须是二进制文件
set_gid 简写sgid 让其他用户新建目录或文件时,继承父目录所属组。
实例:file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(2).png
[[email protected] tmp]# mkdir 2
[[email protected] tmp]# chmod 777 2
[[email protected] tmp]# chmod g+s 2
[[email protected] tmp]# su - xiaoqi
[[email protected] ~]$ cd /tmp/
[[email protected] tmp]$ mkdir 2/123 //用户xiaoqi建立了一个目录
[[email protected] tmp]$ ls -ld 2/123
drwxrwsr-x. 2 xiaoqi root 4096 3月 20 00:21 2/123 //属组并不是xiaoqi,而是root
sticky_bit 特殊权限 防删除位 用户1创建的文件,只有用户1才能删除。file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(3).png
使用方法 :chomd o+t 目录名
实例:
[[email protected] tmp]$ ls -ld /tmp/
drwxrwxrwt. 4 root root 4096 3月 20 00:20 /tmp/ //tmp目录下的文件,只有创建它的用户才能修改
删除目录下的文件,有写权限
强制写入(删掉原来的文件,重新建立一个文件 属主和属组都变了)
set_uid、set_gid、stick_bit可以分别用数字来表示:
set_uid 4
set_gid 2
stick_bit 1
这样在给文件添加权限时,就可以这样设置了:
实例:chmod 4755 /tmp/2 给/tmp/2添加set_uid权限
实例:chmod 6644 /tmp/2 给/tmp/2添加set_gid权限和set_uid权限
实例:chmod 5644 /tmp/2 给/tmp/2添加set_uid权限和sticky_bit权限
三、搜索文件
which 在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪个位置的命令。
实例:
[[email protected] ~]# which grep
/bin/grep
whereis 只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息。
whereis 会在固定的几个目录中搜索 /bin 、/sbin//、/usr/bin/、 /usr/sbin/、 /usr/share/man/man1/
/bin /usr/bin /usr/share 局限于这两个目录下
实例:whereis grep
[[email protected] ~]# whereis grep
grep: /bin/grep /usr/share/man/man1/grep.1.gz //返回所有信息(二进制文件、man说明文件、源代码文件)
[[email protected] ~]# whereis -b grep //只搜索二进制文件
grep: /bin/grep
[[email protected] ~]# whereis -m grep //只搜索man说明文件
grep: /usr/share/man/man1/grep.1.gz
[[email protected] ~]# whereis -s grep //只搜索源代码文件
grep:
locate 相当于find -name 不搜索具体目录,而是搜索一个数据库(var/lib/locatedb) ,这个数据库中含有本地所有文件信息。LINUX系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。实例:locate /etc/sh 搜索etc目录下所有以sh开头的文件
实例:locate ~/m 搜索用户主目录下,所有以m开头的文件
实例:locate -i ~/m 搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
不检索/tmp下的文件
updatedb 手动更新数据库
yum install -y mlocate
find 查找命令
使用格式: find 指定目录 指定条件 指定动作
指定目录 所要搜索的目录及其所有子目录。默认为当前目录
指定条件 所要搜索的文件的特征。
指定动作 对搜索结果进行特定的处理
指定条件: -type d //类型为目录的文件
-type f //类型为普通文件
-name “文件名” //根据文件名搜索
指定动作 -mtime +1 //修改时间(修改文件内容)一天以上
-mtime -1 //一天以内
-mmin -10 //10分钟以内
-mmin +10 //10分钟以上
-atime +1 //访问时间一天以上
-ctime +1 //改变时间(修改文件信息)一天以上
实例:find . -name ‘my*‘ 搜索当前目录(含子目录)中,所有文件名以my开头的文件
实例:find . -name ‘my*‘ -ls 搜索当前目录中,所有以my开头的文件,并显示它们的详细信息。
实例:find . -type f -mmin -10 搜索当前目录中,所有过去10分钟更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(4).png实例:find /etc/init.d/ -type d //搜索/etc/init.d目录下所有的目录文件
find /etc/init.d/ ! -type d //搜索/etc/init.d目录下非目录的文件(!是取反的意思)
find /etc/ -type d -name "cron.d" //搜索/etc/下文件名为cron.d的目录文件
find /etc/ -type d -a -name "cron.d" //搜索/etc/下文件名为cron.d的目录文件
find /etc/ -type d -o -name "cron.d" //搜索/etc/的目录文件或文件名为cron.d的文件
find /etc/ -type d -name "cron.d" -mtime -1 //搜索/etc/下最近一天修改过的名为cron.d的目录文件
-name 根据文件名查询
stat命令查看文件的三个time(ctime、mtime、atime)
实例:stat 文件名
扩展:
进行哪些操作会修改3个time的时间呢?
vi文件 三个time都变(注:只进入vi,不修改就退出,只修改atime)
cat 文件 atime会变
echo 追加一个文本 m和 c
四、linux下的链接文件
ln 链接命令
软连接
ln -s 建立软链接
ln -s /root/3.txt /tmp/21.txt 创建软链接要使用绝对路径
注如果建立软链接使用相对路径会怎么样?
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(8).png
查看软链接信息,链接到的也是一个相对路径,根本看不到链接到哪里了
使用pwd -P,查看到的信息也是错误的
如何检查一个软链接的真实路径呢?
pwd -P 真正路径
pwd -L 逻辑路径
硬链接
不可以作用于目录
ln 文件名
ls -l
不能作用在不同分区 因为inode号会冲突
可以删除其中一个文件,同级
硬链接可以同步修改
硬链接=复制+同步+删除源文件无碍+不能跨分区+不能作用于目录
软链接=快捷方式+同步+删除源文件废废+能跨分区+也能作用于目录