一、特殊权限(chattr、lsattr)
二、特殊权限(set_uid、set_gid、sticky_bit)
三、搜索文件(which、whereis、find、locate)
四、链接文件的建立(ln -s、ln)
一、特殊权限设置
chattr命令 这个命令为文件或目录添加特殊权限,较常用的有i、a这两个权限。
chattr +i 名称(文件或目录)
文件:文件添加此权限后无法写入数据,无法重命名、删除此文件。
目录:目录添加此权限后无法再写入文件、无法删除目录内的文件或目录、无法移动或重命名目录内的数据。
chattr -i 为文件或目录去掉i权限
实例:
[root@laoqi tmp]# chattr +i 2 //给目录2添加i权限
[root@laoqi tmp]# lsattr -d 2 //查看目录2的权限
----i--------e- 2 //显示有i权限
chattr +a 追加特殊权限
文件 无法写入数据
目录:只能追加信息,不能删除或移动内容。
chattr -a 文件或目录名 去掉a权限
实例:
[root@laoqi tmp]# chattr +a 1 //为文件1添加a权限[root@laoqi tmp]# lsattr 1 //查看文件1的特殊权限-----a-------e- 1 //文件1目前有a权限[root@laoqi tmp]# vi 1 //vi进入该文件,无法写入任何数据
注:默认一个文件没有任何特殊权限lsattr 常用选项 -V 显示lsattr版本 -a 显示所有文件,包括隐藏文件 -d 显示目录本身特效 -R 递归显示[root@laoqi tmp]# ls -ld /usr/bin/passwd -rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd上面的rws的s 是set_uid权限 这个权限可以让其他用户拥有属主的权限如果把这个文件的set_uid权限去掉,则普通用户无法修改自己的密码。实例:chmod u+s /usr/bin/passwd注意:如果属主没有x执行权限,添加s权限后,会变成大S,且没有任何意义什么样的文件可以设置s权限?:可执行文件、必须是二进制文件 set_gid 简写sgid 让其他用户新建目录或文件时,继承父目录所属组。实例:[root@laoqi tmp]# mkdir 2[root@laoqi tmp]# chmod 777 2[root@laoqi tmp]# chmod g+s 2[root@laoqi tmp]# su - xiaoqi[xiaoqi@laoqi ~]$ cd /tmp/[xiaoqi@laoqi tmp]$ mkdir 2/123 //用户xiaoqi建立了一个目录[xiaoqi@laoqi tmp]$ ls -ld 2/123drwxrwsr-x. 2 xiaoqi root 4096 3月 20 00:21 2/123 //属组并不是xiaoqi,而是rootsticky_bit 特殊权限 防删除位 用户1创建的文件,只有用户1才能删除。使用方法 :chomd o+t 目录名实例:[xiaoqi@laoqi tmp]$ ls -ld /tmp/ drwxrwxrwt. 4 root root 4096 3月 20 00:20 /tmp/ //tmp目录下的文件,只有创建它的用户才能修改删除目录下的文件,有写权限强制写入(删掉原来的文件,重新建立一个文件 属主和属组都变了)set_uid、set_gid、stick_bit可以分别用数字来表示:set_uid 4set_gid 2stick_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命令,就可以看到某个系统命令是否存在,以及执行的到底是哪个位置的命令。实例:[root@laoqi ~]# which grep/bin/grepwhereis 只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息。whereis 会在固定的几个目录中搜索 /bin 、/sbin//、/usr/bin/、 /usr/sbin/、 /usr/share/man/man1//bin /usr/bin /usr/share 局限于这两个目录下实例:whereis grep[root@laoqi ~]# whereis grep grep: /bin/grep /usr/share/man/man1/grep.1.gz //返回所有信息(二进制文件、man说明文件、源代码文件)[root@laoqi ~]# whereis -b grep //只搜索二进制文件grep: /bin/grep [root@laoqi ~]# whereis -m grep //只搜索man说明文件grep: /usr/share/man/man1/grep.1.gz[root@laoqi ~]# 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参数,则搜索普通文件+特殊文件+目录实例: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 创建软链接要使用绝对路径
注如果建立软链接使用相对路径会怎么样?
查看软链接信息,链接到的也是一个相对路径,根本看不到链接到哪里了
使用pwd -P,查看到的信息也是错误的
如何检查一个软链接的真实路径呢?
pwd -P 真正路径
pwd -L 逻辑路径
硬链接
不可以作用于目录
ln 文件名
ls -l
不能作用在不同分区 因为inode号会冲突
可以删除其中一个文件,同级
硬链接可以同步修改
硬链接=复制+同步+删除源文件无碍+不能跨分区+不能作用于目录
软链接=快捷方式+同步+删除源文件废废+能跨分区+也能作用于目录