• linux_权限


    一:权限
    drwxr-xr-x 
    第1位:表示文件类型,d是目录文件、l是链接文件、-是普通文件、p是管道
    第2-4位:表示这个文件的属主拥有的权限.r 读,w 写,x 执行
    第5-7位:表示这个文件的属主所在的同一个组的用户所具有的权限
    第8-10位:表示其他用户所具有的权限(不包过超级用户root)
    r:read就是读权限         --数字4表示
    w:write就是写权限 --数字2表示
    x:excute就是执行权限 --数字1表示
    这里总共会有10位,第一位表示文件类型,- 文件 ;d 目录 ;l 链接 ;p 管道
    后面9个按照三个一组分,如:
    -xrwxrw--- 770权限表示此文件(文件夹)的拥有着和同组用户有读写及执行权限,其他用户组没任何权限
    前面三个表示所有者权限,中间三个表示同组用户权限,最后一组表示其他用户权限

    例如 -r-xr-x--x 普通文件,权限为551,档案拥有者 和 同组用户能 读、执行,其他用户(不包括超级用户)只能执行

    以上的其他用户,不包括root这个super user。

    二:修改权限:

    1此命令有两种使用方法,一种是chmod后加数字,后接文件名

    chmodabcfile

    其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

    r=4,w=2,x=1

    若要rwx属性则4+2+1=7;

    若要rw-属性则4+2=6;

    若要r-x属性则4+1=5。

    -------------------------例子-----------------------------------

    chmoda=rwxfile

    chmod777file

    效果相同

    chmodug=rwx,o=xfile

    chmod771file

    效果相同

    若用chmod4755filename可使此程序具有root的权限

    ----------------------------------------------------------------------------

    2另一种是chmod后边加字母,后接文件名

    综上所述,当想用chmod命令来改变权限时,文件的用户身份主要有如下几类:

    u:拥有文件的用户(所有者);

    g:所有者所在的组群;

    o:其他人(不是所有者或所有者的组群);

    a:每个人或全部(u、g、和o)。

    用户所具有的文件访问权限类型如下:

    r:读取权;

    w:写入权;

    x:执行权。

    文件权限配置行为有如下几类:

    +:添加权限;

    -:删除权限;

    =:使它成为惟一权限。

    ------------------------------------------------------例子---------------------------------------------------

    使用chmod命令可以改变权限。下面这个例子显示了如何使用chmod命令来改变readme.txt文件的权限。

    假设下面是readme.txt文件的初始权限设置:

    -rw-rw-r--1windawinda398月1112:04readme.txt

    如果是这个文件的所有者或者登录为根用户身份,则可以改变所有者、组群和其他人的权限。初始时,从上面的分析可以看出,这个readme.txt文件的所有者和组群可以读取和写入文件(rw-),组群之外的任何人只能读取文件(r--)。

    文件权限是一种安全措施。无论何时允许其他人读取、写入或执行文件,都在增加文件被篡改或删除的危险。作为一种基本原则,应该只给那些真正需要这些文件的人以读写权限。

    在下面的例子中,想给每个人以写入readme.txt文件的权限,因此他们可以读取文件,在其中加注,并保存文件。这意味着必须改变文件权限中的“其他人”部分。

    此时需要在shell或终端提示下输入:

    chmodo+wreadme.txt

    o+w命令参数告诉系统想给其他人写入文件readme.txt的权限。要查看结果,再次列出文件的细节。此时,这个文件的用户访问权限就如下所示了(在第3列中多了一个w):

    -rw-rw-rw-1windawinda393月1112:04readme.txt

    现在,每个人都可以读取和写入这个文件了。

    要从readme.txt中删除组群和其他人的读写权限,使用chmod命令来取消读取和写入这两个的权限。

    命令如下:

    chmodgo-rwreadme.txt

    通过输入go-rw参数告诉系统删除文件readme.txt中组群和其他人的读取和写入权限。再次通过ls-1命令列出的结果如下:

    -rw-------1windawinda393月1112:04readme.txt

    从文件readme.txt中删除所有权限(包括每个人的权限)的命令如下:

    chmoda-rwxreadme.txt

    现在,来看看是否还能够使用catreadme.txt命令来读取这个文件,它所返回的输出应如下所示:

    cat:readme.txt:Permissiondenied

    删除所有的权限,包括自己的,会成功地锁住这个文件。但是由于这个文件属于用户,可以随时使用以下命令把它的权限改回来。命令如下:

    chmodu+rwreadme.txt

    使用命令catreadme.txt来试试作为文件所有者是否还能够读取该文件。

    这里是几个可以用在chmod命令设置上的常用例子:

    g+w:为组群添加写入权;

    o-rwx:删除其他人的所有权限;

    u+x:允许文件所有者执行这个文件;

    a+rw:允许每个人读取并写入文件;

    ug+r:允许所有者和组群读取文件;

    g=rx:只允许组群读取和执行(不能写入)。

    最后,介绍一下恢复组群的权限的方法。命令如下:

    chmodug+xtigger

    现在,如果用ls-dl命令检查一下,会发现只有其他人(others)被拒绝了到目录tigger的访问权。

    ==================================华丽的分隔线===============================================

    Ubuntu更改文件夹及子文件夹权限

    打开终端进入你需要修改的目录

    然后执行下面这条命令

    chmod777*-R

    全部子目录及文件权限改为777

    查看linux文件的权限:ls-l文件名称

    查看linux文件夹的权限:ls-ld文件夹名称(所在目录)

    修改文件及文件夹权限:

    sudochmod-(代表类型)×××(所有者)×××(组用户)×××(其他用户)

    常用修改权限的命令:

    sudochmod600×××(只有所有者有读和写的权限)

    sudochmod644×××(所有者有读和写的权限,组用户只有读的权限)

    sudochmod700×××(只有所有者有读和写以及执行的权限)

    sudochmod666×××(每个人都有读和写的权限)

    sudochmod777×××(每个人都有读和写以及执行的权限)

    linux|chmod,chown,chgrp文件安全与权限  

    chmod 改变权限位
    分为符号模式和绝对模
    符号模式的一般格式:
    chmod [who] operator [permission] filename
    who的含义
    u 文件属主权限。
    g 属组用户权限。
    o 其他用户权限。
    a 所有用户(文件属主、属组用户及其他用户)
    operator的含义
    + 增加权限。
    - 取消权限。
    = 设定权限
    permission的含义
    r 读权限。
    w 写权限。
    x 执行权限。
    s 文件属主和组set-ID。
    t 粘性位*。
    l 给文件加锁,使其他用户无法访问。
    u,g,o 针对文件属主、属组用户及其他用户的操作
    *在列文件或目录时,有时会遇到“ t”位。“t”代表了粘性位。如果在一个目录上出现
    “t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个属组用户具有和属主同等的权限。不过有的系统在这一规则上并不十分严格。如果在文件列表时看到“t”,那么这就意味着该脚本或程序在执行时会被放在交换区(虚存)。
    chmod a-x test //rw- rw- rw- 收回所有用户的执行权限
    chmod og-w test //rw- r-- r-- 收回属组用户和其他用户的写权限
    chmod g+w test //rw- rw- r-- 赋予属组用户写权限
    chmod u+x test //rwx rw- r-- 赋予文件属主执行权限
    chmod go+x test //rwx rwx r-x 赋予属组用户和其他用户执行权限
    chmod 777 rwx rwx rwx 赋予所有用户读、写、执行的权限
    文件类型
    d 目录。
    l 符号链接(指向另一个文件)。
    s 套接字文件。
    b 块设备文件。
    c 字符设备文件。
    p 命名管道文件。
    - 普通文件
    文件的权限位
    -rw-r--r-
    rw-:前三位,文件属主可读、写
    r--:中间三位,组用户可读
    r--:最后三位,其他用户只可读
    文件与目录的权限
    root默认建立文件的权限就是666-022=644   建立的目录权限就是777-022=755
    一般用户默认建立文件权限是666-002=664   建立目录权限是777-002=775
    绝对模式的一般格式:
    chmod [mode] file
    其中m o d e是一个八进制数。 在绝对模式中,权限部分有着不同的含义。每一个权限位用一个八进制数来代表,如
    0 4 0 0 文件属主可读 
    0 2 0 0 文件属主可写 
    0 1 0 0 文件属主可执行 
    0 0 4 0 属组用户可读 
    0 0 2 0 属组用户可写 
    0 0 1 0 属组用户可执行
    0 0 0 4 其他用户可读 
    0 0 0 2 其他用户可写 
    0 0 0 1 其他用户可执行
    在设定权限的时候,只需按照上面查出与文件属主、属组用户和其他用户所具有的权限相对应的数字,并把它们加起来,就是相应的权限表示。 可以看出,文件属主、属组用户和其他用户分别所能够具有的最大权限值就是7。 再来看看前面举的例子:
    -rwxr--r-- 1 root 0 10月 19 20:16 test
    相应的权限是:
    rwx-:0400 + 0200 +0100 (文件属主可读、写、执行) = 0 7 0 0
    r--:0 0 4 0 (属组用户可读) = 0 0 4 0 
    r--:0 0 4 0 (属组用户可读) = 0 0 4 0 0 7 4 4
    有一个计算八进制权限表示的更好办法,如下:
    文件属主:r w x:4 + 2 + 1 
    属组用户:r w x:4 + 2 + 1 
    其他用户:r w x:4 + 2 + 1
    像上面这样,更容易地计算出相应的权限值,只要分别针对文件属主、属组用户和其他用户把相应权限下面的数字加在一起就可以了。 test文件具有这样的权限:
    r w x r - - r - -
    4+2+1 4 4
    把相应权限位所对应的值加在一起,就是7 4 4。 如:
    chmod 666 rw- rw- rw- 赋予所有用户读和写的权限 
    chmod 644 rw- r-- r- - 赋予所有文件属主读和写的权限,所有其他用户读权限 
    chmod 744 rwx r-- r- - 赋予文件属主读、写和执行的权限,所有其他用户读的权限 
    chmod 664 rw- rw- r- - 赋予文件属主和属组用户读和写的权限,其他用户读权限 
    chmod 700 rwx --- --- 赋予文件属主读、写和执行的权限
    chmod 444 r-- r-- r- - 赋予所有用户读权限
    下面举一个例子,假定有一个名为test的文件,具有如下权限:
    -rw-rw-r-- 1 root 0 10月 19 20:16 test1
    现在希望对该文件可读、写和执行, root组用户对该文件只读,可以键入:
    =================================
    chgrp变更文件或目录的所属群组
    命令的一般形式:
    chgrp -R -h owner file
    - R(recursive)选项意味着对所有子目录下的文件也都进行同样的操作。
    - h选项意味着在改变符号链接文件的属主时不影响该链接所指向的目标文件
    chgrp -R a test1 (test1目录及子目录的所有文件组变为a)
    # ls -l 
    drwxrwxr-x 2 gem sam 4096 10月 26 19:48 sam 
    # chgrp group sam 
    # ls -l 
    drwxrwxr-x 2 gem group 4096 10月 26 19:48 sam
    现在把该文件sam所属的组由sam变为group。
    查找自己所属用户组
    # su sam
    $ id
    uid=506(sam) gid=4(adm) groups=4(adm)

    查找其他用户所属组
    # id 
    uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4
    (adm),6(disk),10(wheel) 
    查看当前用户所属组
    # id gem 
    uid=507(gem) gid=507(group) groups=507(group),0(root),4(adm)
    查看其它用户所用组:#id 用户名
    # su sam 
    $ id gem 
    uid=507(gem) gid=507(group) groups=507(group),0(root),4(adm) 
    查看其它用户所属组
  • 相关阅读:
    算法 在一个递增的二维数组中查找一个数
    java web----网络编程基础
    java----集合(Map)
    java----集合(List、set)
    java----数组
    java面试----1
    java----NIO
    java----commons-io
    java----文件操作
    爬虫----爬取答案
  • 原文地址:https://www.cnblogs.com/wangziqiang/p/5203717.html
Copyright © 2020-2023  润新知