本文转载自微信公众号《小菜两集》,作者蔡不才。转载本文请联系小菜良记公众号。小菜温馨提示:看完本文心痒痒的同学,请在测试服联系。您不能只在生产服务器上进行测试!问起Linux相关的问题,忍不住吐槽,我又不是运维人员,为什么要精通Linux,能知道一些基本的命令吗?首先看到这个问题,小菜有点懵,linux为什么是运维人才?它需要熟练。作为一个有责任心的实体工作者,不仅运维人员是线上问题的首当其冲,开发人员也是不可或缺的。所以当你熟悉了Linux的操作之后,当网上出现问题的时候,你可以假装*告诉别人,“别慌,我来做”!话不多说,本文将带你了解Linux如何管理Linux的权限,Linux的基本操作可以查看这篇文章:Linux操作权限入门一、文件属性你一定不会陌生两个命令ls或ll。这两个命令用于查看文件。如果在任意目录下执行ls-l,会出现类似如下的页面:下面我们仔细看看每个部分是什么意思:首先我们了解一下ls的意思是list,用来显示文件文件的名称和相关属性,其中-l用于列出所有文件的详细权限和属性。1)Permission先看drwx的内容------这部分。统计这部分,我们发现它包含10个字符:第一列:表示该文件是一个目录,文件或链接文件等d:表示一个目录,上面的www是一个名为www的目录-:表示一个文件,而上面的test.txt是一个文件l:表示链接文件[linkfile]b:表示可以存储在设备文件中的外围设备c:在设备文件中表示为串口设备,比如键盘鼠标(一次性读取器)第二列:三个字符为一组,表示文件拥有者可以拥有的权限。第三列:三个字符代表一个Group,加入该用户组的账号所拥有的权限第四列:三个字符为一组,表示其他非该用户未加入该用户组的账号的权限注:来自第二列到第四列,共有三个字符为一组,字符可能出现为r,w,x,-,其中[r]表示可读(read),[w]表示可写(write),以及[x]表示可执行(execute)。【-】表示没有权限。而rwx的三个位置是固定的。小测试:-rwx-w-r--是什么意思?首先分为4个部分,-rwx-w-r---:表示这意味着一个文件rwx:这个文件的属主具有可读、可写、可执行的权限-w-:表示该用户下的其他账号group对文件有可写权限r--:表示其他用户对该文件只能有读权限2)链接数3表示有多少个文件文件名链接到这个节点(inode),每个文件会把它的权限和属性记录到文件系统的inode中,但是我们使用的目录树是用文件名记录的,所以每个文件名都会链接到一个inode,这个属性记录了有多少个不同的文件名链接到相同的inode编号。3)owner表示该文件(或目录)的所有者帐号。4)用户组表示该文件所属的用户组。在LINUX中,一个帐户将被添加到一个或多个用户组中。不属于同一个用户组的账号对文件(或目录)没有相应的权限。5)Filecapacity表示文件的大小,默认单位为Bytes6)Modificationdate表示文件的创建日期或最新修改日期。如果文件修改时间过长,时间只会显示年份,不会具体到月、日、时间。但是,我们可以使用--full-time来显示完整的时间:7)Thefilename表示文件名。如果有[。]在文件名前,表示该文件为隐藏文件。通常ls或ll是不会显示隐藏文件文件的,我们可以用ls-a来显示所有文件:2.什么是权限?系统盘上的一些文件需要管理员权限,但这些权限不是我们直接管理的。但是在linux中,每个文件都增加了很多属性,也增加了用户组的概念。这些功能并非毫无用处。归根结底,它们是为了保护数据安全。什么是权限?保护系统功能在Linux系统中,root用户可以读写和执行系统服务。如果没有权限限制,每个用户都可以操作系统文件,这是一件很危险的事情,会导致服务器瘫痪。数据隔离与共享Linux系统中存在用户组的概念,一个账号可以加入一个或多个用户组。一个用户组其实就相当于一个团队的概念。同一团队的成员可以共享数据,但不能看到其他团队的数据信息。如果我们要保证其他团队的成员看不到这个团队的数据,那么我们应该创建一个用户组,然后将rwxrwx---赋值给对应的文件,这样文件拥有者和文件用户组就可以访问到文件的读、写、执行操作不能被其他用户使用。3、实际修改,我们先来了解一下权限相关的三个命令:chgrp:修改文件所属的用户组chown:修改文件的属主chmod:修改文件的权限1)chgrp命令是用于修改文件所属的用户组。对文字敏感的朋友可能会猜到这个命令是changegroup的缩写。当你知道它是changegroup的缩写时,你会记得更清楚。由于该命令是用来修改文件所属用户组的,前提是用户组存在,即/etc/group文件存在,否则会报错。小菜扩展:创建用户组:groupadd用户组名,示例如下:删除用户组:groupdel用户组名,示例如下:创建用户:useradd-m-ggroup新建用户名,示例如下:我们现在在/home目录下创建一个chgrp文件夹,里面有一个text.txt文件,如下:从图中我们可以看出这个文件的用户组是root。这时我们要将这个文件的用户组改为test,需要进行如下操作:已经通过chgrptesttext.txt成功将文件的用户组改为test。2)chown命令用于修改文件的属主。没错,这个命令就是changeowner这个词的缩写。使用该命令的前提是该用户必须已经存在于系统中,即可以修改/etc/passwd文件中记录的文件名。上面我们已经介绍了如何在扩展中创建用户,小伙伴们记得去试试看。chown的用途很多,它可以直接修改所属的用户组,如果要连接目录下的所有子目录或文件同时更改文件属主,直接加上-R选项即可。基本命令:chown[-R]账户名文件/目录chown[-R]账户名:用户组名文件/目录注:-R为递归修改,修改子目录下的所有文件例子:在/home里面/chown目录下是一个test目录,test目录下有一个test.txt文件。这两个的所有者和用户组都是root。我们使用chown修改test目录的属主是这样的:chowncbuctest可以看到test目录的属主已经改为cbuc用户,但是test目录下的test.txt并没有被修改。这个时候我们加Go到[-R]试试这个参数:chown-Rcbuctest,可以看到两个属主都改成了用户cbuc,我们再试试,同时修改用户组:chowncbuc:testtest这样我们就可以很方便的使用chown命令来修改文件的用户组和所有者。3)命令chmod用于修改文件的权限。权限设置分为两种,一种是通过修改数字和修改符号来修改文件权限。上面我们可以看到权限包括**读(read)、写(write)、执行(execute)**这三个,同时有三个身份,分别是所有者(owner)、所属组属于(group),其他(others)。权限字符是:rwx。每个字符对应的数字如下:r:4w:3x:1这样,如果一个文件的权限是:-rwxrwxrwx,它的计算规则是:owner:4+3+1=7group:4+3+1=7others:4+3+1=7这种结合chmod的方式就是chmod数字文件/目录,而且chmod也支持递归操作,还要加上参数[-R]:chmod-R数字文件/目录示例:我们可以看到test文件夹下用户组的权限是r-w,即可读可执行。这时候如果我们赋予用户组可读、可写、可执行权限,我们可以这样:test文件夹下的.txt文件和test文件夹权限一样,我们可以加上[-R]参数,即chmod-R775test,这样子test文件夹下的子目录和子文件都会相应修改.通过符号类型修改文件权限上面我们介绍了通过数字类型修改文件权限,我们也可以通过符号进行修改。我们也已经知道linux中有三种身份,分别是user、group、others,那么我们可以用u、g、o这三个字符来表示这三个身份的权限,还有一个a,即代表所有身份,使用方法如下:用法:chmodu=rwx,go=wxtext这个命令意思是给属主赋予rwx权限,用户组其他用户赋予wx权限chmoda+wtest这个命令意思是给allidentitiesAddreadablepermissionchmoda-wtest这个命令的意思是去除所有身份的可读权限文件类型,而我们通常看到的两种类型是-和d,那么除了这两种类型还有哪些类型的文件呢?1.常规文件是指我们在读写的文件类型,字符是-,我们也可以将常规文件分为以下几种类型:纯文本文件(ASCII):这是最常见的文件类型在LINUX中,这种文件类型就是我们可以直接读取的数据,比如数字,字母等。二进制文件(binary):一般来说,可执行文件(脚本文件除外)都是这种类型,比如执行命令ls和cd是二进制文件。数据文件(data):一些程序在运行过程中会读取某种特定格式的文件,那些特定格式的文件就是数据文件。2、Directory(目录)指的是目录,字符为d3。链接文件(link)类型是windows系统桌面上的快捷方式,字符为l4。设备和设备文件(device)与系统外设和存储一些相关的文件通常集中在/dev目录下,通常分为两种:块设备文件:是一些存储数据和提供对系统随机访问的接口设备.表示字符为b字符(character)设备文件:是一些串口的接口设备,如键盘,鼠标等,表示字符为c5。数据接口文件(套接字)这种文件通常用于网络上的数据交换。一般在/run或/tmp目录下,字符为s6。数据传输文件(FIFO,管道)FIFO也是一种特殊的文件类型。它的主要目的是解决多个程序同时读写一个文件所带来的问题。报错问题的意思是字符是p2。文件扩展名事实上,Linux文件并没有所谓的扩展名。在windows系统中,可以执行的文件扩展名通常是.com、.exe、.bat等,但是在Linux系统中,不需要扩展名,我们只需要这个文件有可执行权限即可,即x一个文件具有x的可执行权限,只代表它有执行的能力,但不一定能成功执行。成功执行取决于此文件的内容。那么Linux中常见的扩展名有哪些:*.sh:表示脚本或批处理文件*.Z、*.tar、*.tar.gz、*.zip、*.tgz:这些是打包后的压缩文件*.html、*.php:网页相关文件,代表HTML语法或PHP语法的网页文件。试试Linux上的骚操作吧!路漫漫其修远兮,小菜陪你寻!
