学习笔记(五)——chown,chmod,chattr,lsattr,suid,sgid,stick_bit,Linux搜索文件/命令,软链接,硬链接

1.chown

   chown 用来改变文件的属主和属组:

   [root@localhost ~]# chown aming:root files.log

   [root@localhost ~]# ll files.log

   -rw-r--r--. 1 aming root 58 Mar 19 13:37 files.log

   只改变属主:

   [root@localhost ~]# chown aming files.log

   只改变属组:

   [root@localhost ~]# chown :aming files.log  //双引号后跟属组即可

   补充:想要只改变属组,还有一条正牌命令: chgrp

   [root@localhost ~]# chgrp aming files.log   //作为了解,可以不使用该命令

   

2.chmod

   chmod 用来更来权限。有两种方式,既可以通过字母 u g o a r w x 更改,也可以通过数字形式更改:

   方式一:字母形式

   针对谁进行修改:u-- user  g -- group  o -- others  a -- all

   修改什么权限: r-- read  w -- write  x -- execute

   r 权限  对于普通文件为可cat haed tail more less vi vim (当然这里的vi vim 只能查看,不能修改)。对于目录为可ls

   w 权限  对于普通文件为可echo vi vim rm mv cp,对于目录为可mkdir touch 新建目录和新建文件。

   x 权限  对于普通文件为可执行,对于目录为可cd

   方式二:数字形式

   将权限换算成数字,r 对应 4 w 对应 2 x 对应 1,即如果一个文件权限为 r-xr--r--,换算为数字为 644

   目录的默认权限为777,普通文件的默认权限为666,用户新创建的目录或普通文件的默认权限需要配合其自身的umask 计算出来,查看umask

   [root@localhost ~]# umask

   0022

   对于root 用户来说,他的 umask 0022,用后三位换算成字母表示的权限,为----w--w- 。计算root 创建的目录权限 rwxrwxrwx -(----w--w-) = (rwxr-xr-x) = 755,同样的算法可以计算出root 创建的文件权限为644 。对于普通用户来说,初始umask 0002。可以手动设置umask值:

   [root@localhost ~]# umask 0001

   

3.chattrlsattr

   3.1 chattr可以为文件、目录设置特殊权限:常设的权限为i a ,说一下两者分别的作用:

   i权限   1)作用于文件时,文件不可 mv rmchown chgrp chmod rename,可以cp(不会复制该特殊权限)cat head tail more less 。(2)作用于目录时,目录下不可 mkdirtouch vi vim echo 创建新目录或新文件,对于目录中原本存在的文件,不可mv rm rename ,可以cat head tail more less chown chgrp chmod cp(这里的 cp 不能复制在当前目录下,因为复制到当前目录下相当于在该目录下新建文件)vivim echo 修改内容。对于目录自身来说,不可mv rm chown chgrp chmod rename,可以cp(同样不会复制该特殊权限)ls

   为目录/文件添加/消除该特殊权限:

   [root@localhost ~]# chattr +i filename (foldername) //添加权限

   [root@localhost ~]# chattr -i filename ( foldername)//消除权限

   如果对于目录添加/消除权限时,顺带为该目录下的所有文件及目录添加/消除权限,使用 -R 参数:

   [root@localhost ~]# chattr +i -R foldername  //添加权限

   [root@localhost ~]# chattr -i -R foldername  //消除权限

   a权限    1)作用于文件时,文件不可 mv rmchown chgrp chmod rename,可以 cp(不会复制该特殊权限) cat headtail more less echo(不可重定向> ,只能追加新内容>> vi vim注意,虽然 a 的作用主要是限制只能追加新内容,不允许修改旧内容,但vi vim 中只能查看,即便不修改旧内容,在最下方添加新内容也不能正常保存退出,想要追加只能使用>> )。

   3.2 lsattr用来查看文件的特殊权限:

   [root@localhost ~]# lsattr filename

   -------------e- filename

   其中e 为默认值,如果添加了特殊权限,结果是酱紫的:

   -----a-------e- duan.log

   也可能是酱紫:

   ----i--------e- duan.log

   lsattr 常用参数 -d  -R

   [root@localhost ~]# lsattr -d . // 或直接 lsattr -d 查看当前目录自身的特殊权限

   [root@localhost ~]# lsattr -R /tmp/learn/  //查看 learn/ 下所有文件及目录的权限。包括

                              //子目录中的文件

   

4.suidsgid sticky_bit

   4.1 suidset_userid  只能作用于二进制文件,使其他用户临时拥有该二进制文件所属主的权限,其中s = S + xS 代表二进制文件的所属主对该二进制文件没有执行权限(实际中没有用到S的情况,因为连属主都没有可执行权限,会使得suid 毫无意义)。

   [root@localhost ~]# ll /usr/bin/passwd

   -rwsr-xr-x. 1 root root 25980 Feb 22  2012/usr/bin/passwd

   passwd 命令为例,其权限为rwsr-xr-x passwd命令的作用是修改密码,密码需要写入/etc/shadow 文件中。其他用户对该文件无权限,所以按理说其他用户不能通过passwd 修改密码,这样的结果是,其他用户在有修改密码的需求时只能找root,会带来极大的不方便。此时, suid 派上用场,临时给予其他用户 root 权限,使其他用户可以修改自己的密码。

   设置suid ,两种方法:

   [root@localhost ~]# chmod u+s /usr/bin/passwd  //suid 对应u 位的 s ,取消则为 u-s

   [root@localhost ~]# chmod 4755 /usr/bin/passwd //suid 对应的数字为4,取消则为 0755

   4.2sgidsetgroupid 可以作用于二进制文件和目录。作用于二进制文件时,可以使其他用户临时拥有该二进制文件所属组的权限;作用于目录时,在无论哪个用户在目录下新建的文件或目录拥有和该目录相同的属组(包括在该目录下的子目录中创建,同样生效,有继承性):

   [root@localhost ~]# ll -d /tmp/learn

   drwxrwsrwx.songwei songwei 4096 Mar 20 16:09  /tmp/learn

   [root@localhost ~]# touch /tmp/learn/rootfile

   [root@localhost ~]# ll !$

   -rw-r--r--. root songwei 512 Mar 2016:20   /tmp/learn/rootfile

   在其下面创建目录时同理。注意,的新建的目录不仅继承父目录的属组,还继承了父目录的sgid,新建的文件则只继承父目录的属组,不会继承父目录的sgid。

   设置sgid,两种方法:

   [root@localhost ~]# chmod g+s /tmp/learn //sgid 对应g 位的 s取消则为 g - s

   [root@localhost ~]# chmod 2755 /tmp/learn //sgid 对应的数字为2 取消则为 0777

   4.3stick_bit          只能作用于目录,使得该目录下的文件和目录只能由其属主用户 rm mvchown chgrp chmod vi vim(vi vim 可查看不可修改,即便强制保存也不允许) echo,非属主用户只能 cp cathead tail more less。这里补充一个知识:用户对文件或目录执行rm mv rename 操作时,有没有权限不取决于该文件或目录本身,而取决于其所在目录的权限,如:(但其他操作,比如vi vim echo chown chgrp chmod ,取决于文件或目录本身的权限,如果使用 vivim 强制保存退出,相当于先rm touch,文件名虽然没有改变,但 user group 已经改变,注意,可以这里可以多敲一下命令多试试。)

   [songwei@localhost ~]# ll -d /tmp/folder

   drwxrwxrwx. root root 4096 Mar 15 13:12 /tmp/folder

   [songwei@localhost ~]# ll -d /tmp/folder

   -rw-rw-r-- 1 leiqin    leiqin   0 Mar 21 01:30 leiqin.log

   -rw-rw-r-- 1 lishiming lishiming 0 Mar 21 01:30lishiming

   由于目录权限为777所以 songwei 用户可以对 leiqin.loglishiming 两个文件进行rm mv rename 操作,因为这些操作相当于对/tmp/folder w 权限,这一点要理解。知识补充结束。

   要避免rm mv rename vi vim (这里vi vim 底行模式的操作为强制保存wq!)其他用户创建的文件,可以为目录添加stick_bit,同样两种方法:

   [root@localhost ~]# chmod o+t /tmp/folder //stick_bit 对应o 位的 t,取消为 o - t

   [root@localhost ~]# chmod o+t /tmp/folder //stick_bit 对应,取消为0777

   Linux中应用 stick_bit 的一个实例是 /tmp 目录:

   [root@localhost ~]# ll -d /tmp

   drwxrwxrwt. root root 4096 Mar 7 18:17  /tmp

   

5.用于搜索文件的几个命令:——

   5.1which   用于从 $PATH 变量中的路径下查找文件,如果有 alias 关联,也会显示出来:

   [root@localhost ~]# which ls

   alias ls='ls --color=auto'

/bin/ls

   有人可能会疑惑,在使用which cd 时为什么找不到?因为cd 为内置命令,所谓内置命令是在kernel 中写好的,而像ls 这种都是第三方的。需要用到5.2 中的type 命令。

   5.2type   用于查看指定命令的类型,判断其是内置命令还是外部命令:

   [root@localhost ~]# type cd

   cd is a shell builtin                 //builtin 内部命令

   [root@localhost ~]# type java

   java is /usr/local/jdk1.8.0_40/bin/java     //外部命令

   [root@localhost ~]# type ls

   ls is aliased to `ls --color=auto'        //alias 别名

   使用-p 参数时,如果命令为外部命令,作用相当于which,如果命令不是外部命令(即内部命令或别名),则什么都不会显示:

   [root@localhost ~]# type -p java

   /usr/local/jdk1.8.0_40/bin/java

   [root@localhost ~]# type -p cd

   [root@localhost ~]# 

   5.3whereis  并非精确匹配,会在如下几个固定的几个目录中搜索: /bin  /bin/sbin  /usr/bin  /usr/sbin /usr/share/man/man1 。搜索的文件类型只能属于原始代码、二进制文件或是帮助文件:

   [root@localhost dira]# whereis ls

   ls: /bin/ls /usr/share/man/man1p/ls.1p.gz/usr/share/man/man1/ls.1.gz

   5.4locate  其实是 find -name的另一种写法,但查询速度比后者快得多,因为locate 不搜索具体目录,而是搜索一个数据库(/var/lib/mlocate/mlocate.db 16进制,查看需要使用 hexdump -C命令),该数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate 命令可能会查到刚刚被删除的文件,也可能查不到刚刚新建的文件。为了避免这种情况,可以在使用locate 之前,先使用updatedb 命令手动更新数据库。

   5.5find

   该命令已经在《权当开篇——Linux学习之路(一)》中做过比较详细的总结,具体可以参看这篇博客,访问链接为 http://xitongjiagoushi.blog.51cto.com/9975742/1619923 

 

6.软链接和硬链接:

   软链接和硬链接也已经在《权当开篇——Linux学习之路(一)》中做过比较详细的总结,具体可以参看这篇博客,访问链接为 http://xitongjiagoushi.blog.51cto.com/9975742/1619923 

 

本文出自 “细桶假狗屎” 博客,请务必保留此出处http://xitongjiagoushi.blog.51cto.com/9975742/1622642

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值