最近一直在做Linux下的嵌入式开发,每天抱着一块板子,一本鸟哥私房菜,还有ubuntu摸索着。很蛋疼的说。所以,希望以此系列博客,记录工作过程,和大家分享。
之所以叫“跟着鸟哥学习Linux”,是因为我的参考书籍是《Linux鸟哥私房菜》,此系列博客也会大量引用书中的知识。
First Of All,先介绍一个网站:鸟哥私房菜。很不错的学习资料。
《Linux鸟哥私房菜》用了五章的内容来讲解磁盘分区,linux安装等内容。当然这是进入linux之前所必须大致了解的内容。那么现在假定已经有一台已经安装linux的电脑可供我们直接使用(目前我使用的是ubuntu 12.04版本),我可以直接从linux文件系统来说起。
先围绕着最简单也是最常用的一个命令讲起:ls
Linux最优秀的地方之一,就在于它的多用户、多任务环境。而为了让各个用户具有较保密的文件数据,因此文件的权限管理就变得很重要。Linux一般将文件可存取访问的身份分为3个,分别是owner,group,others。没个文件都有自己的owner,每个owner都在一个用户组里(group),用户组以外的用户呢,便是others。others对用户组里的文件是没有权限的,除非group中的用户给予others权限。管理所有用户,用户组的人便是root。
先看看第一个命令,在当前用户目录先执行ls,查看用户目录下所有文件及其属性。
上图是用户目录下的文件列表的部分截图。
先看看第一栏,显示当前文件的权限属性。
第一个字符若是【d】,表示是目录。若是【-】,表示是文件。若是【l】,表示是连接文件(这里是l,不是1哦)。若是【b】,表示设备文件里可供存储的接口设备。若是【c】,表示设备文件中的串行端口设备
第一个字符表示的是对文件的分类,是目录,还是文件,还是设备文件等等。紧接着后面跟着9个字符,每三个为一组,依次为owner,group,others对该文件的权限。rwx分别表示read,write,execute。如果为【-】表示没有权限。
如何改变文件的属性与权限呢?linux提供了三个命令:chgrp,chown,chmod
第一个命令:chgrp(change group)
选项【-r】表示递归的意思,就是说该目录下所有文件、目录都会做出更改的意思。上图来自鸟哥私房菜,感觉对chgrp的定义有点问题。写成:
chgrp 【-r】 groups dirname/filename
会更加准确些。chgrp users install.log是什么意思呢?更改文件insta.log的用户组为users。
第二个命令:chown(change owner)
看上图中的第二个例子,chown 【-r】 用户:用户组 文件或目录这里用户和用户组用:隔开,表示改变该文件或目录的用户所有者,同时改变其所在用户组。我们也可以用“.”来分割他们,不过为了防止某些账号当中本身就含有小数点造成错误,建议使用“:”。如果只是想改变用户组呢?chown .sshd install.log便是只修改用户组,这就是小数点的用途。
这里要注意一点:当你使用cp命令的时候,会默认把用户的属性和权限都进行复制,也就是说当你拷贝A用户的文件给B用户时,该B用户拿到的文件属性仍然是A所有以及A所在的用户组。所以这个时候,就需要用chown加上【-r】(如果cp的是目录的话)的参数来改变文件的属性。
第三个命令:chmod
linux每个文件所对应的三种身份:owner,group,others都有对应的rwx权限,可以给rwx分别用数字来表示:
r:4 w:2x:1-:0
那么当使用chmod的时候,便可以通过修改三个数字,实现对不同用户权限的修改。比如下图:
上图便是赋值777来修改文件对所有用户都是可读可写可执行的。r+w+x=4+2+1=7
对于文件来说,读写执行都比较容易理解(这里要注意的就是如果你对文件具有w属性,你可以具有写入,编辑,新增,修改文件内容的权限,但是你并不具有删除该文件本身的权限。),那么对于目录呢?
Linux下的目录主要是记录文件名列表,所以对于目录的rwx,分别解释如下:
r:read contents in directory
具有读取目录结构列表的权限,就是能否执行ls
w:modify contents of directory
拥有更改该目录结构列表的权限,比如新建文件与目录,删除已经存在的文件与目录,将已存在的文件或目录进行重命名,转移该目录下的文件、目录位置。
x:access directory
目录的x属性表示用户能否进入该目录称为工作目录的用途,就是能否执行cd