linux权限体系简析

linux 三种用户
        超级用户:root
        普通用户
        虚拟用户“伪用户” shell 是  /sbin/nologin 作用是:为弄个服务(程序)提供支持的。
    用户组的概念;
        组的由来。方便管理用户。如果要设置许多用户的权限很繁琐。这里需要把用户加入组。
        然后给组设定权限。
    用户的配置文件: /etc/passwd
    # more /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    解析:用户名:密码(x 是个占位符。真正的密码文件位于/etc/shadow):属主的id(UID):属组的id(GID):描述性文字:调用的shell
    可以使用id命令来查看 属主的id和属组的id。
    # id root
    uid=0(root) gid=0(root) groups=0(root)
    LINUX下面 UID 的数值又65535个之多。一般以500为界限。小于等于500的为系统所占有的id。500以上的为普通用户所占有的id
    修改用户的属性:可以利用 命令  vipw (直接进入/etc/passwd 的编辑模式)
    修改普通用户为超级用户:  vipm   修改 普通用户的UID 为0  
    密码配置文件: /etc/shadow
    组配置文件 /etc/shadow
    其实: useradd执行创建用户是读取以下3个文件的设置。来创建用户的相关信息的。
    /etc/login.defs
    /etc/default/useradd
    /etc/kernel (目录)
# more /etc/login.defs | grep -Ev "#|^$"
MAIL_DIR        /var/spool/mail
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
UID_MIN                   500  (centos7 下是1000开始默认)
UID_MAX                 60000
GID_MIN                   500
GID_MAX                 60000
CREATE_HOME     yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 
# more /etc/default/useradd 
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc
    所有创建中组和用户如果不指定。都会根据上面3个文件默认自行设定参数。
    命令操作;
    groupadd 创建一个新的工作组。
        -g 指定新的组id
    groupdel 用于删除指定的组
    useradd   添加用户命令:
     格式:   useradd  选项  参数
     举个例子:
     # useradd swa4 -u 510 -g swa -G swa1 -c swa -s /bin/bash
        # more /etc/passwd | grep swa4
        swa4:x:510:501:swa:/home/swa4:/bin/bash
        -u 指定用户的UID 
        -g 指定用户的组id
        -G  指定用户的附加组(一个用户除了自身的组外,还可以加入其它组。
            就好比,你是羽毛球协会的,你也可以加入乒乓球协会)
        -c  是注释的内容。
        -s   用户登录后的shell
        -M  不创建用户目录
        一般用于创建新用户支持某种服务可以不让用户登录并且不创建用户目录。
        #  useradd  nginx -s /sbin/nologin -M

    userdel  删除用户
        -r   删除用户。连同用户目录下是文件一起删除
        -f   如果用户在登录状态也可以强制删除。
    此外,还可以通过修改 /etc/passwd 等文件修改。
    usermod  用于修改用户的基本信息。
        -c 修改用户的备注文字
        -d 修改用户登录的目录
        -g  修改用户所属的群组
        -G 修改用户所属的附加群组
        -L 锁定用户账号名称
        -U 接触用户ID
        -l 修改用户的名称
        注意-l 的用法:  usermod  -l  修改后的名字   需要修改的名字
linux的权限体系:除了用户和组的概念还有rwx体系:
    # ls -l ./a
    -rw-rw-r--. 1 root root 0 Jan 29 23:48 ./a
    使用ls 查看一个文件的权限信息。
    我们简析下
    第一列表示文件的属性
    第二列表示硬链接数
    第三列和第四列是所属用户和组
    第五列是大小
    第六,七,八列修改时间
    第九列 文件名
    我们来看下第一列:
    -rwxr-xr-x.
    先来说下这个点的的含义:就是不使用acl的意思(没有给他ACL设置)如果设置了.就变成+
    ACL全称Access Control List,访问控制列表.作用可以针对某个文件赋予单个用户的权利。
    如果,你想让不同组的用户,拥有跨组的权限可以通过acl单独对某用户控制。
    # setfacl -m user:swa:rw- ./a
    # getfacl --omit-header ./a
    user::rw-
    user:swa:rw-
    group::r--
    mask::rw-
    other::r--
    # ls -l ./a
    -rw-rw-r--+ 1 root root 0 Jan 29 23:48 ./a

    -rw-rw-r-- 解读
    r  表示 读权限   w 表示写的权限   - 表示没有权限  此外还有 x 表示执行权限
    还有一种数字话的表示方式: 4 代表读权限  2 代表写权限  1 代表执行权限 0 代表没有权限。
    第一个-代表文件类型。常见的- 文件 d 目录 l 链接 b 块设备文件 c 字符设备文件 s 套接口文件
    rw- 是属主的权限也是第一个root(属主)的权限。
    -rw 是属组的权限也是第二个root(属组)的权限。
    r--  表示除了属组和属组以外的任何用户。
    由此而生的命令:chown 改变属组或属主  chmod 改变文件的权限
    chown只有文件主和超级用户才可以便用该命令
        -R  改变目录下的所有文件的属主或属组(是个递归操作。对目录使用)
    chown  -R 主名称:组名称
    由于读写执行权限又2种解读方法所以chmod 也又2中写法:
        chmod  a=rwx,g=rw-,0=r-x  abc(a属主,g 属组,o 其它用户)
        想对应的数字为:chmod  765 abc
此外,还有些特殊权限:SUID、SGID、SBIT
    SUID:当用户执行具有x权限的二进制文件时拥有此文件所有者的权限
    SGID:当用户执行具有x权限的二进制文件时拥有此文件所在组的权限,另外也可以对目录设置此权限
    SBIT:当用户对某个目录具有w和x权限时,在该目录下建立的文件和目录只有该用户和root用户才可以删除
    # ls -ld /tmp
    drwxrwxrwt. 6 root root 4096 Jan 29 22:56 /tmp  
    这个目录就有 SBIT权限 
    下面通过数字来设置下 SUID 和 SGID 的权限
    # chmod 4664 a
    # ls -l a
    -rwSrw-r--+ 1 root root 0 Jan 29 23:48 a

    # chmod 2664 a
    # ls -l a
    -rw-rwSr--+ 1 root root 0 Jan 29 23:48 a
    SUID 对应4 (对应在x位上的S) SGID 对应 2(对应在x位上的S)   SBIT 对应 1(对应在x位上的t)
    在原有 3位权限的基础上再加上一位。即可添加这些特殊权限了。

    属性
    名称大小:文件名、 大小,这两个最好理解了就是文件名字和占用空间大小
    所属属性:拥有者、拥有组,如1中所述
    时间属性:mtime、ctime、atime
    mtime:最近一次文件内容变化时间,是具体内容变化,不是属性、权限变化,ls显示的结果就是mtime
    ctime:最近一次文件状态变化时间,这里就是属性、权限那些变化时的时间
    atime:最近一次读取文件时间,如用cat去读取文件的时候

还可以通过设置文件属性来保护文件不被修改。
    chattr 命令:改变文件属性。
        + <属性>:开启文件或目录的该项属性
        - <属性>:关闭文件或目录的该项属性
        = <属性>:指定文件或目录的该项属性
    i :不能对文件修改
    # chattr +i /etc/passwd
    此时你可以vim进入尝试修改。大都会提醒文件只读。
    如何查看文件是否设置了特殊属性呢? lsattr
    # lsattr /etc/passwd
    ----i--------e- /etc/passwd
    如果想修改回来?
    # chattr -i /etc/passwd
    # lsattr /etc/passwd
    -------------e- /etc/passwd









本文转自 swallow_zys  51CTO博客,原文链接:http://blog.51cto.com/12042068/1898291,如需转载请自行联系原作者
上一篇:Linux权限命令之特殊权限


下一篇:Linux&shell 之Linux文件权限