码迷,mamicode.com
首页 > 其他好文 > 详细

用户和用户组权限,特殊权限,acl详解

时间:2016-08-02 22:23:48      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:linux 用户和权限   特殊权限 acl

 

目录与文件的权限意义:

 权限对文件的意义:

  文件是实际含有数据的地方,包含一般文本文件,数据库内容文件,二进制可执行文件

 r:可读取此文件的实际内容,如可读取文本文件的文字内容等

 w:可以编辑、新增、或者修改该文件的内容(但不含删除该文件),这里的修改等                     是对文件内容而言,是否可以删除文件要看该目录的权限

 x:该文件具有可以被系统执行的权限,linux中文件是否可被执行,不是看其文件                       名,而是看权限

 权限对目录的意义:

目录主要的内容是记录文件名列表,文件名与目录有强烈的关联

r:表示具有读取目录结构列表的权限

w:1.新建新的文件与目录

  2.删除已经存在的文件与目录

  3.将已存在的文件与目录的重命名

x:表示用户是否能够进入该目录病成为工作目录

  tips:

 如果想让一个目录让任何人都可以浏览,至少应该开放r,x权限,w不能随便给


 

linux用户和组管理

 

useradd命令: 创建用户

 useradd [options] 登录名

    -u UID: 指定UID

    -g GROUP:指定基本组ID

    -G  GROUP1,GROUP2....:指明用户所属的附加组

    -c,--comment COMMENT:指明注释信息

    -d,--home HOME_DIR:以指定的路径作为家目录,

    -s,:指定用户的默认shell

    -r:创建系统用户,默认没有家目录

    -M:不创建家目录

    -N 不创建私用组做主组,使用users组做主组

    

    useradd -D: 显示创建用户的默认配置

    useradd -D arg:修改默认选项的值

                默认修改的结果其实在/etc/default/useradd

    

    创建用户时的诸多默认设定配置文件为/etc/login.defs

    

    添加系统用户: 默认不会设置shell为/bin/bash

    useradd -r -s /sbin/nologin  USERNAME

 批量添加用户:

    按照/etc/passwd的格式写入要添加的用户信息,自动就会修改/etc/shadow|group等的配置,除了密码

        #vim users.txt
            user1:x:2000:2000::/home/user1:/bin/bash
            user2:x:2001:2001::/home/user2:/bin/bash
        # newuser  users.txt

     批量设置密码:

         #cat passwd.txt | chapasswd 

       passwd.txt文件的格式是:

            username:passwdword

 

usermod命令: 修改用户属性  

      usermod  选项 登录名

       -u,--uid UID:修改用户的ID为此处指定的新UID,如果同时有-o选项,则可以重复使用其他用            户的标识号,例如让两个用户拥有相同的UID

             eg: usermod -o -u 0 jay 

       -g GID:修改用户所属的基本组

       -G  GROUP1,GROUP2....:指定用户所属的附加组

       -a -G GID : 添加一个附加组

       -c OMMENT:指明注释信息

       -d -m HOME_DIR:修改用户的家目录,并将原来的文件也转移到新位置,新设定的位置应不存在              和自己家目录相同名的目录,否则无法新目录中无以前的内容

       -d HOME_DIR:只重新指定新的家目录,原有的文件不动

        -l NEW_LOGIN:修改用户名

        -s SHELL: 修改用户的shell

        -L :锁住用户,用户不能登录,其实是在密码串前加一个“!”

       -U:解锁用户

     

tips:修改用户名后只是修改了用户的名称,其他的家目录和密码等都没有改变,所以/home/下并没有新用户名命名的目录

userdel: 删除用户

   -r:移除用户的家目录,默认不删除用户家目录

 

    组的管理

groupadd : 添加组

            groupadd [options] group_name

 -g GID:指定GID,默认是上一组的GID

 -r :创建系统组

     eg:增加一个组ID为3305的系统组

[root@localhost ~]# groupadd -r -g 3305 myssql

[root@localhost ~]# tail -1 /etc/group

myssql:x:3305:

groupmod命令: 修改组的属性

                   groupadd [options] GROUP

                             -g  GID: 修改GID;

                             -n new_name:删除组名

     eg: 同时修改组合GID

        [root@localhost ~]# groupmod -g 3308 -n mygroup myssql

[root@localhost ~]# !tai

tail -1 /etc/group

mygroup:x:3308:

groupdel: 删除组


 passwd 命令

      -l,-u:锁定和解锁用户

      -d:清除用户的密码

       --stdin: 利用标准输入赋予密码

eg: echo "haha" | passwd --stdin jay


显示文件中用户信息 

getent passwd|shadow|group  USERNAME


切换基本组

      newgrp:可以切换基本组。

      exit:可以撤销为原来的组

        [jay@localhost 11:44 ~]$ newgrp centos 

        [jay@localhost 11:44 ~]$ groups

        centos root bin jay

     

组密码:gpasswd

    gpasswd [OPTION] GROUP

    -a user: 将user添加至指定组中;

    -d user: 从指定组中移除用户user

    -A user1,user2,...: 设置有管理权限的用户列表

    如果用户本不属于此组,则需要组密码

      不加选项就是赋予组密码,可以用来被其他用户临时作为基本组

    

    chage命令: 

    chage [options] 用户名

             -l:列出用户的以及密码的有效期限

    -m:修改密码的最小天数

    -M:修改密码的最大天数

    -I:密码过期后,锁定帐号的天数

    -d:指定密码最后修改的日期

    -E:有效期,0表示立即过期,-1表示永不过期

    -W:密码过期前,开始警告天数

        $ sudo chage -d0 <user-name>

    

最初,“-d <N>”选项应该被设成密码的“有效期”(自密码上一次更改时间1970年1月1日以来  的天数)。所以,“-d0”表明该密码是在1970年1月1日更改的,这实际上让当前密码到期失效,从而让  密码在下一次登录时被更改。


让当前密码到期失效的另一个办法是通过passwd -e命令。

      $ sudo passwd -e <user-name>  此命令具有与“chage -d0”同样的功效,让用户的当前密码立即到期失效。

[root@localhost ~]# passwd -e lu

Expiring password for user lu.

passwd: Success

You have new mail in /var/spool/mail/root

[root@localhost ~]# tail -1 /etc/shadow

lu:$6$ykaDA5pL$F4/xBagMqc81vmYh5g3di3hdpmQmGuhqtFBegVHLOci4Fd.fhai.XLcFwANBQU1kw3ASyy0Q.25XyFx7KJ/JL/:0:0:99999:7:::


参照指定文件的权限来给新文件赋予权限 

chown [options] --reference=SFILE DFILE

     u,g,o,a,   +-=  rwx

       

       技巧:

     X:只给目录加执行权限,对于文件不加权限

[root@localhost test]# ll test1

total 4

-rw-r--r--. 1 root root    0 Aug  2 15:21 xxx

drw-r--r--. 2 root root 4096 Aug  2 15:22 yyy

[root@localhost test]# ll test1 -d

drw-------. 3 y1 y1 4096 Aug  2 15:22 test1

[root@localhost test]# chmod -R a+X test1

[root@localhost test]# ll test1

total 4

-rw-r--r--. 1 root root    0 Aug  2 15:21 xxx

drwxr-xr-x. 2 root root 4096 Aug  2 15:22 yyy

[root@localhost test]# ll test1 -d

drwx--x--x. 3 y1 y1 4096 Aug  2 15:22 test1

 

     chmod --reference  f1 f2   参考f1的权限设置f2

    chmod,chown等是root才可以设置,普通用户可以利用chgrp修改文件的属组为自己已所属的附加组


   对于/etc/passwd,/etc/group等文件直接利用vim命令可能造成文件的格式问题,建议使用vipw,vigr

   对于/etc/passwd,/etc/group等文件进行检查可以使用命令pwck和grpck


umask:默认权限

          文件:

      666-umask

 目录:

 777-umask



umask权限的含义是:从最大权限中屏蔽掉相应的权限位,从而获得默认权限

    如果umask如果是003,那么新建的文件权限是什么? 

 666-003=663(rwxrwx-wx) 这个是不对的,因为一般文件是默认没有可执行权限的

             正确的做法:                       

  可以使用字符做加减

  rw-rw-rw-

  --x-wxrwx

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

                          rw-r-----

  默认权限=最大权限-unask

 如果是目录,按结果即可

 如果是文件,结果为偶数的,直接使用;为奇数的,将奇数加1 

隐藏权限

      chatter:设置文件的隐藏属性

 +:增加某一个特殊参数,其他原本参数不动

 -:删除某一个特殊参数,其他参数不动

 =:设置为仅后面的参数

 选项:

    a:设置a后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这               个属性

    i:它可以让一个文件不能被删除,改名,设置连接也无法写入或添加数据,对系统安全有                重要意义,只root可设置

 

     lsattr:查看隐藏属性

特殊权限

SetUID: 针对文件

SUID权限仅对二进制程序有效

执行者对于该程序需要具有x的执行权限

本权限仅在执行过程中有效

执行者将具有该程序所有者的权限

eg:[root@livecd ~]# ll /usr/bin/passwd 

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

SetGID: 针对文件

SGID对二进制程序有用

程序执行者对于该程序来说,需具备x的权限

执行者在执行过程中将会获得该程序用户组的支持

  设置该选项后具有的功能:

  用户若对于此目录具有r与x的权限时,该用户能够进入此目录

  用户在此目录下的有效用户组将会变成该目录的用户组

 若用户再次目录下具有w的权限(可以新建文件),则用户所创建的新文件                         的用户组与此目录的用户组相同

 

SBIT: 针对目录

当用户对于此目录具有w,x权限,即具有写入的权限

当用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件


处理方法:  大写的S表示其本身没有执行权限

[root@localhost ~]# ll b

-rw-r--r--. 1 root root 14 Aug  1 18:32 b

[root@localhost ~]# chmod  ug+s,o+t b ; ll b

-rwSr-Sr-T. 1 root root 14 Aug  1 18:32 b

     ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute  权限之外的具体权限设置,ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要  特殊权限的使用状况有一定帮助。如,某一个文件,不让单一的某个用户访问。


ACL使用两个命令来对其进行控制

    getfacl:取得某个文件/目录的ACL设置项目

    setfacl:设置某个文件/目录的ACL设置项目

  

     setfacl 参数

          -m:设置后续acl参数 

          -x:删除后续acl参数  

          -b:删除全部的acl参数

          -k:删除默认的acl参数

          -R:递归设置acl,包括子目录

          -d:设置默认acl

      

        [root@ www.linuxidc.com ~]# setfacl -m u:code:r /test

        [root@ www.linuxidc.com ~]# ll /test

        -rwxrwxrwx+ 1 root root 1 Apr 11 07:25 /test            //可以看到权限的最后多了一个”+”号

        [root@ www.linuxidc.com ~]# 

        现在再次查看一下此文件的ACL属性

        [root@ www.linuxidc.com ~]# getfacl /test

        getfacl: Removing leading ‘/‘ from absolute path names

        # file: test

        # owner: root

        # group: root

        user::rwx

        user:code:r--                          //可以看到code单独的权限为r--

        group::rwx

        mask::rwx

        other::rwx

      设置file1的权限给f2

         getfacl file1 | setfacl --set-file=- file2 复制file1 的acl权限给file2

        [root@localhost ~]# setfacl -x u:code  /test

   acl命令集合及含义:

 

        setfacl -m u:wang:rwx file|directory  设置额外用户权限用户

        setfacl -Rm g:sales:rwX directory 

        setfacl -M file.acl file|directory   可以在一个文件中写好要设置的权限,然后-M选项

        setfacl -m g:salesgroup:rw file| directory  设置额外组权限

    设置某个目录具有该权限,则其下新建文件和目录都继承

        setfacl -m d:u:wang:rx directory  

 

        setfacl -x u:wang file |directory  删除用户的acl权限

        setfacl -X file.acl directory      

  

        [root@ www.linuxidc.com ~]# getfacl /test

        getfacl: Removing leading ‘/‘ from absolute path names

        # file: test

        # owner: root

        # group: root

        user::rwx

        user:code:r--                          //可以看到code单独的权限为r--

        group::rwx

        mask::rwx     设置除属主和other外的其他人的最大权限

        other::rwx

     mask::rwx     设置除属主和other外的其他人的最大权限,就是额外添加的用户和组以及自身的组最大权限的限定,可以自己设置

            

        [user5@localhost ~]$ setfacl -m mask:r a

        [user5@localhost ~]$ getfacl a

        # file: a

        # owner: user5

        # group: user5

        user::rw-

        user:root:rwx#effective:r--

        group::rw-#effective:r--

        mask::r--

        other::r--




本文出自 “mylinux” 博客,请务必保留此出处http://luxiangyu.blog.51cto.com/9976123/1833688

用户和用户组权限,特殊权限,acl详解

标签:linux 用户和权限   特殊权限 acl

原文地址:http://luxiangyu.blog.51cto.com/9976123/1833688

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!