Linux笔记03: Linux常用命令_3.5权限管理命令

 

3.5 权限管理命令

3.5.1 权限介绍

1.为什么需要权限

绝大多数用户使用的是个人计算机,而使用个人计算机的用户一般都是被信任的用户(如家人、朋友等)。在这种情况下,大家都可以使用管理员身份直接登录。又因为管理员拥有最大权限,所以给我们带来了错觉,以为在计算机中不需要分配权限等级,不需要使用不同的账户。

但是在服务器上就不一样了,在服务器上运行的数据越重要(如游戏数据),价值越高(如电子商城数据、银行数据),那么对权限的设定就要越详细,用户的分级也要越明确。所以,在服务器上,绝对不是所有的用户都使用root身份登录,而要根据不同的工作需要和职位需要,合理分配用户等级和权限等级。

2.文件的所有者、所属组和其他人

用ls -l命令,可以查看文件的所有者、所属组,例如:

[root@localhost ~]#ls-l mylog.log

    -rw-r--r--.1LaytonWang root34Dec1021:21mylog.log


这里的LaytonWang用户就是文件的所有者,root组就是文件的所属组。文件的所有者一般就是这个文件的建立者。

用户组就是一组用户的集合,那为什么要把用户放入一个用户组中呢?当然是为了方便管理。如果我们有100位用户,而这100位用户对同一个文件的权限是一致的,那我们是一位用户一位用户地分配权限方便,还是把100位用户加入一个用户组中,然后给这个用户组分配权限方便呢?不言而喻,一定是给一个用户组分配权限更加方便。

3.权限位的含义

ls -l命令,长格式显示的第一列就是文件的权限,例如:

[root@localhost ~]#ls-l mylog.log

    -rw-r--r--.1LaytonWang root34Dec1021:21mylog.log


第一列的权限位如果不计算最后的“.”(这个点的含义我们在后面解释),则共有10位,这10位权限位的含义如下图所示。

●第1位代表文件类型。

Linux不像Windows使用扩展名表示文件类型,而是使用权限位的第1位表示文件类型。虽然Linux文件的种类不像Windows中那么多,但是分类也不少,详细情况可以使用“info ls”命令查看。这里只讲一些常见的文件类型。

“-”:普通文件。

“b”:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件。

“c”:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。

“d”:目录文件。Linux中一切皆文件,所以目录也是文件的一种。

“l”:软链接文件。

“p”:管道符文件。这是一种非常少见的特殊设备文件。

“s”:套接字文件。这也是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件。

●第2~4位代表文件所有者的权限。

如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限。

“r”:代表read,是读取权限。

“w”:代表write,是写权限。

“x”:代表execute,是执行权限。

●第5~7位代表文件所属组的权限,同样拥有“rwx”权限。

●第8~10位代表其他人的权限,同样拥有“rwx”权限。

以上就是文件基本权限的含义。

我们再看看权限位的这个“.”的作用。这个点是在CentOS 6以上的系统中才出现的,在以前的系统中是没有的。如果在文件的权限位中含有“.”,则表示这个文件受SE Linux的安全规则管理。


3.5.2 基本权限的命令

修改权限的命令chmod:

●命令名称:chmod。

●英文原意:change file mode bits。

●所在路径:/usr/bin/chmod。

●执行权限:所有用户。

●功能描述:修改文件的权限模式。

(1)命令格式

[root@localhost ~]#chmod [选项] 权限模式 文件名

    选项:

        -R: 递归设置权限,也就是给子目录中的所有文件设定权限


(2)权限模式

chmod命令的权限模式的格式是“[ugoa][[+-=][perms]]”,也就是“[用户身份][[赋予方式][权限]]”的格式。

●用户身份。

u:代表所有者(user)。

g:代表所属组(group)。

o:代表其他人(other)。

a:代表全部身份(all)。

●赋予方式。

+:加入权限。

-:去除权限。

=:设置权限。

●权限。

r:读取权限(read)。

w:写权限(write)。

x:执行权限(execute)。


例子1用“+”加入权限

[root@localhost ~]#touch iron_man

    [root@localhost ~]# ll iron_man

    -rw-r--r--.1root root0Jan2507:29 iron_man

    #这个文件的默认权限是“所有者:读、写权限;所属组:只读权限;其他人:只读权限”

    [root@localhost ~]#chmodu+x iron_man

    #给所有者加入执行权限

    [root@localhost ~]# ll iron_man

    -rwxr--r--.1root root0Jan2507:29iron_man


例子2给多个身份同时加入权限

[root@localhost ~]#chmodg+w, o+w iron_man

    #给所属组和其他人同时加入写权限

    [root@localhost ~]# ll iron_man

    -rwxrw-rw-.1root root0Jan2507:29iron_man


例子3用“-”减去权限

[root@localhost ~]#chmodu-x, g-w, o-w iron_man

    #给所有者减去执行权限,给所属组和其他人都减去写权限,也就是恢复默认权限

    [root@localhost ~]# ll iron_man

    -rw-r--r--.1root root0Jan2507:29iron_man


例子4用“=”设置权限

用“+-”赋予权限是比较麻烦的,需要先确定原始权限是什么,然后在原始权限的基础上加减权限。其实可以使用“=”来直接设定权限,例如:

[root@localhost ~]#chmodu=rwx, g=rw, o=rw iron_man

    #给所有者赋予权限“rwx”,给所属组和其他人赋予权限“rw”

    [root@localhost ~]# ll iron_man

    -rwxrw-rw-.1root root0Jan2507:29iron_man


使用“=”赋予权限,确实不用在原始权限的基础之上进行加减了,但是依然要写很长一条命令,还可以使用数字权限的方式来赋予权限。

(3)数字权限

数字权限的含义:

文件的“读、写、执行”三种权限,占用了三个位置,可以用3位二进制来对应这个三个位置。对应位置有权限为“1”,对应位置没有权限为“0”,设置权限时用对应的八进制数设置。

●000:代表“---”权限,八进制为0。

●001:代表“--x”权限,八进制为1。

●010:代表“-w-”权限,八进制为2。

●011:代表“-wx”权限,八进制为3。

●100:代表“r--”权限,八进制为4。

●101:代表“r-x”权限,八进制为5。

●110:代表“rw-”权限,八进制为6。

●111:代表“rwx”权限,八进制为7。

例如:给文件赋予“755”权限,二进制为“111”“101”“101”,即“rwx”“r-x”“r-x”。

[root@localhost ~]#chmod755 iron_man

    [root@localhost ~]# ll iron_man

    -rwxr-xr-x.1root root0Jan2507:29iron_man


我们很少会使用“457”这样的权限,因为这样的权限是不合理的,因为文件所有者的权限还没有其他人的权限大呢。除非是实验需要,否则一般情况下所有者的权限要大于所属组和其他人的权限。


3.5.3 基本权限的含义

(1)权限含义的解释

首先,读、写、执行权限对文件和目录的作用是不同的。

①权限对文件的作用。

●读(r):

对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行cat、more、less、head、tail等文件查看命令。

●写(w):

对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行vim、echo等修改文件数据的命令。

注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。

●执行(x):

对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在Linux中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。

②权限对目录的作用。

●读(r):

对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行ls命令,查看目录下的内容了。

●写(w):

对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行touch、rm、cp、mv命令。对目录来说,写(w)权限是最高权限。

●执行(x):

目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行cd命令,进入目录。


3.5.4 所有者和所属组命令

(1)chown命令

chown是修改文件和目录的所有者和所属组的命令。

●命令名称:chown。

●英文原意:change file owner and group。

●所在路径:/usr/bin/chown。

●执行权限:所有用户。

●功能描述:修改文件和目录的所有者和所属组。

①命令格式

[root@localhost ~]#chown [选项] 所有者:所属组 文件或目录

    选项:

        -R:递归设置权限,也就是给子目录中的所有文件设置权限


②常见用法

例子1修改文件的所有者

之所以需要修改文件的所有者,是因为赋予权限的需要。当有普通用户需要对某个文件拥有最高权限的时候,如果把这个普通用户的权限修改为最高权限,是非常不安全的做法。合理的做法是修改文件的所有者,这样既能让普通用户拥有最高权限,又不会影响其他普通用户。例如:

[root@localhost ~]#touch iron_man

    [root@localhost ~]# ll iron_man

    -rw-r--r--.1root root0Jan2508:39 iron_man

    #文件的所有者是root,普通用户LaytonWang对这个文件仅拥有只读权限

    [root@localhost ~]#chown LaytonWang iron_man

    #修改文件的所有者

    [root@localhost ~]# ll iron_man

    -rw-r--r--.1LaytonWang root0Jan2508:39 iron_man

    #所有者变成了LaytonWang用户,这时LaytonWang用户对这个文件就拥有了读、写权限


例子2修改文件的所属组

修改所属组,也是为了调整文件的权限。如果可以把用户加入同一个组当中,然后直接调整所属组的权限,那当然要比一个一个用户赋予权限要简单方便。例如:

[root@localhost ~]#chown LaytonWang: LaytonWang iron_man

    #“:”之前是文件的所有者,之后是所属组。这里的“:”也可以使用“.”代替

    [root@localhost ~]# ll iron_man

    -rw-r--r--.1LaytonWang LaytonWang0Jan2508:39iron_man


Linux中用户组的建立与Windows中是不同的。在Windows中,新建的用户都属于users这个组,而不会建立更多的新组。但是在Linux中,每个用户建立之后,都会建立和用户名同名的用户组,作为这个用户的初始组,user用户组是自动建立的。

例子3普通用户修改权限

并不是只有root用户才可以修改文件的权限,而是root用户可以修改任何文件的权限。但是普通用户只能修改自己文件的权限。也就是说,只有普通用户是这个文件的所有者,才可以修改文件的权限。

[root@localhost ~]# cd /home/LaytonWang/    #进入LaytonWang用户的家目录

    [root@localhost LaytonWang]# touch test

    #由root用户新建文件test

    [root@localhost LaytonWang]# ll test

    -rw-r--r--.1root root0Jan2508:56 test

    #文件所有者和所属组都是root用户

    [root@localhost LaytonWang]# su- LaytonWang

    #切换为LaytonWang用户

    [LaytonWang@localhost ~]$chmod755 test

    chmod: changing permissions of ‘test’: Operation not permitted

    # LaytonWang用户不能修改test文件的权限

    [LaytonWang@localhost ~]$ exit

    #退回到root身份

    [root@localhost LaytonWang]# chown LaytonWang test

    #由root用户把test文件的所有者改为LaytonWang用户

    [root@localhost LaytonWang]# su- LaytonWang

    #切换为LaytonWang用户

    [LaytonWang @localhost ~]$chmod755 test

    # LaytonWang用户由于是test文件的所有者,所以可以修改文件的权限

    [LaytonWang @localhost ~]$ ll test

    -rwxr-xr-x.1LaytonWang root0Jan2508:56test


(2)chgrp命令

●命令名称:chgrp。

●英文原意:change group ownership。

●所在路径:/urs/bin/chgrp。

●执行权限:所有用户。

●功能描述:修改文件和目录的所属组。

例如:

[root@localhost ~]#touch iron_man

    [root@localhost ~]#chgrp LaytonWang iron_man

    #修改iron_man文件的所属组为LaytonWang用户组

    [root@localhost ~]# ll iron_man

    -rw-r--r--.1root LaytonWang0Jan2509:10iron_man


3.5.5 umask默认权限

(1)umask默认权限的作用

umask默认权限是Linux权限的一种,主要用于让Linux中的新建文件和目录拥有默认权限。Linux是一个比较安全的操作系统,而安全的基础就是权限,所以,在Linux中所有的文件和目录都要有基本的权限,新建的文件和目录当然也要有默认的权限。

查看系统的umask权限:

[root@localhost ~]# umask

    0022    #用八进制数值显示umask权限

    [root@localhost ~]# umask -S

    u=rwx, g=rx, o=rx

    #用字母表示文件和目录的初始权限


查看数值的umask权限,看到的是4位数字“0022”,其中第一个数字“0”代表的是文件的特殊权限(SetUID、SetGID、Sticky BIT),后3位数字“022”才是真正的umask默认权限。

(2)umask默认权限的计算方法

先了解一下新建文件和目录的默认最大权限。

●对文件来讲,新建文件的默认最大权限是666,没有执行(x)权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。

●对目录来讲,新建目录的默认最大权限是777。这是因为对目录而言,执行(x)权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。

何计算umask默认权限。按照官方的标准算法,umask默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限。这种方法既不好计算,也不好理解,并不推荐。

这里还是按照权限字母来讲解umask权限的计算方法。我们就按照默认的umask值是022来分别计算一下新建文件和目录的默认权限。

●文件的默认权限最大只能是666,换算成字母就是“-rw-rw-rw-”;而umask的值是022,也换算成字母就是“-----w--w-”。把两个字母权限相减,得到的就是新建文件的默认权限:

(-rw-rw-rw-)-(-----w--w-)=(-rw-r--r--)。

●目录的默认权限最大可以是777,换算成字母就是“drwxrwxrwx”;而umask的值是022,也换算成字母就是“d----w--w-”。也把两个字母权限相减,得到的就是新建目录的默认权限:

(drwxrwxrwx)-(d----w--w-)=(drwx-r-xr-x)。

(3)umask默认权限的修改方法

umask默认权限可以直接通过命令来进行修改,例如:

[root@localhost ~]# umask002    [root@localhost ~]# umask033


不过,通过命令进行的修改只能临时生效,一旦重启或重新登录就会失效。如果想让修改永久生效,则需要修改对应的环境变量配置文件/etc/profile。例如:

[root@localhost ~]#vi/etc/profile

    …省略部分内容…

    if[ $UID -gt199] && ["`id -gn`"="`id -un`"];then    umask 002        #如果UID大于199(普通用户),则使用此umask值

    else        umask 022        #如果UID小于199(超级用户),则使用此umask值

    fi    …省略部分内容…


小结:

文件权限位共10位(如:-rw-r--r--),第1位是文件类型,第2~4、5~7、8~10位分别是文件所有者、所属组、其他人的权限;chmod命令用来修改权限;chown命令用来修改文件和目录的所有者和所属组;chgrp命令用来修改文件和目录的所属组;umask用来查看和临时设置文件和目录的默认初始权限。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容