Linux用户权限管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户权限管理相关的知识,希望对你有一定的参考价值。

  • 用户管理基础概念:
  • 用户管理命令使用
  • 权限管理
  • 命令使用

  • 用户管理基础概念:
    用户类别:管理员、普通用户(系统用户、登录用户)
    组类别:管理员组、普通用户组(系统用户组、登录用户组)
    组的类别还可以分为:

    1.用户的基本组、用户的附加组
    2.私有组:组名同用户名,且只包含一个用户;
    公共组:组内包含了多个用户;
    • 系统判断用户的表示:userID->UID,使用16位二进制数字表示
      管理员:0
      普通用户:1~65535
      -系统用户:1-499(centos6),1-999(centos7)
      -登录用户:>=500 (centos6),>=1000(centos7)
系统用户:为了能够让那后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登录系统,所获得权限也比较小,比较安全的做法
  • -

    • 组的标识:
      管理员组:0
      普通用户组:1-65635
      -系统用户组:1-499(CentOS6), 1-999(CentOS7)
      -登录用户组:>=500(CentOS6), >=1000(CentOS7)

    • 用户和组的信息库存放位置
      1.用户的配置信息:/etc/passwd,以冒号:分割7个字段
      技术分享图片
      2.组的配置信息:/etc/group
      技术分享图片

    • 用户认证信息:通过对比事先存储的,与登录时提供的信息是否一致;
      密码存储:/etc/shadow 、/etc/gshadow
      密码安全使用策略:
      1、使用随机密码;
      2、最短长度不要低于8位;
      3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;
      4、定期更换
      技术分享图片
  • 用户管理命令使用
    相关命令:useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su

    • groupadd 添加组
      语法:
      groupadd [options] group_name
      -g |--gid GID:指定GID号
      -r | --system :创建的是系统组
      -p | --password string :创建组的密码

    • groupmod:修改组的属性
      语法:
      groupmod [options] group_name
      -g GID:修改GID号
      -n new_group_name:修改组名

    • groupdel:删除组
      语法:
      groupdel [options] group_name

    • useradd :创建用户
      语法:
      useradd [options] user_name
      -u, --uid UID:指定UID;
      -g, --gid GROUP:指定基本组ID,此组得事先存在;
      -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
      -c, --comment COMMENT:指明注释信息;
      -d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
      -s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
      -r, --system:创建系统用户;
      注意:创建用户时的诸多默认设定配置文件为/etc/login.defs

    • usermod :修改用户属性
      语法:
      usermod [options] user_name
      -u, --uid UID:修改用户的ID为此处指定的新UID;
      -g, --gid GROUP:修改用户所属的基本组;
      -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
      -a, --append:与-G一同使用,用于为用户追加新的附加组;
      -c, --comment COMMENT:修改注释信息;
      -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
      -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
      -l, --login new_user_name:修改用户名;
      -s, --shell SHELL:修改用户的默认shell;
      如:添加附加组:把nginx添加到centos附加组
      [[email protected] tmp]# usermod -aG centos nginx
      [[email protected] tmp]# id nginx
      uid=993(nginx) gid=990(nginx) groups=990(nginx),1001(centos)

    • userdel :删除用户
      语法:
      userdel [options] user_name
      -r :删除用户并删除其家目录,若不加r,再添加相同用户会报错

    • passwd :修改用户密码
      语法:
      passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
      passwd :表示修改当前用户密码
      passwd user_name :修改指定用户密码,仅root管理员才能操作,普通用户只能修改自己且后不能加用户名
      -d :清除用户密码
      -e DATE: 过期期限,日期;
      -i DAYS:非活动期限;
      -n DAYS:密码的最短使用期限;
      -x DAYS:密码的最长使用期限;
      -w DAYS:警告期限;
      --stdin : 通过标准输入方式修改
      通常使用非交互式设置密码:
      echo “password-string” | passwd --stdin user_name

    • gpasswd :修改组密码和管理用户组
      语法:
      gpasswd [options] group_name
      -a user_name :向组中添加成员
      -d user_name :移除组中的成员
      不添加选项表示修改组的密码,可以实现认证组成员
      如:gpasswd -d centos nginx :把centos添加至nginx组:

    • newgrp :临时切换指定的组为基本组
      语法:
      newgrp [-] [group]
      -: 会模拟用户重新登录以实现重新初始化

    • id :显示用户ID信息
      语法:
      id [options] [user_name]
      -u: 仅显示有效的UID;
      -g: 仅显示用户的基本组ID;
      -G:仅显示用户所属的所有组的ID;
      -n: 显示名字而非ID;

    • su :switch user切换用户
      语法:
      su [options] [-] [USER [arg]...]
      登录式切换:会通过读取目标用户的配置文件来重新初始化
      su - user_name
      su -l user_name
      非登录式切换:不会读取目标用户的配置文件进行初始化
      su user_name
      注意:管理员可无密码切换至任何用户;
      -c ‘COMMAND‘:仅以指定用户的身份运行此处指定的命令;

  • 权限管理
    进程安全上下文:进程对文件的访问权限应用策略:
    进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
    否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
    否则,就只能应用other的权限;
    技术分享图片
    如图"第二个色标"的为权限为,"."位有特殊权限,有时为“+”号;

    [[email protected] tmp]# ll passwd 
    -rw-r--r--. 1 root root 1173 Dec 28 12:15 passwd
    [[email protected] tmp]# setfacl -m u:user1:rwx passwd
    [[email protected] tmp]# ll passwd 
    -rw-rwxr--+ 1 root root 1173 Dec 28 12:15 passwd
    [[email protected] tmp]# getfacl passwd
    # file: passwd
    # owner: root
    # group: root
    user::rw-
    user:user1:rwx
    group::r--
    mask::rwx
    other::r--

    "第二个色标"的权限位:一个9位,每3位一组从左->右分别为:user(owner)权限、group权限、other权限
    权限位描述:r :read 、w : write 、x :excute,可以使用八进制表示:分别对应4--2--1,三位一组加权
    比如:rw-rw-r--, rwxrwxr-x, rwxr-x---, rw------, rwxr-xr-x
    664 ,775,750,600, 755

    • 文件和目录的权限位区别:
      文件:
      r:可获取文件的数据;
      w: 可修改文件的数据;
      x:可将此文件运行为进程;

      目录:
      r:可使用ls命令获取其下的所有文件列表;
      w: 可修改此目录下的文件列表;即创建或删除文件;
      x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;
      *能不能删除文件并不取决于文件本身权限,而是取决于上一级目录的权限

      一般文件目录给予:644/755权限,权限最小化管理

  • 权限管理相关命令使用

    • chmod :修改文件权限位
      语法:
      chmod [OPTION]... MODE[,MODE]... FILE...
      chmod [OPTION]... OCTAL-MODE FILE...
      chmod [OPTION]... --reference=RFILE FILE... :参照文件的权限修改
      选项:-R 递归,目录修改比较有效,子目录文件也生效;
      一共分为3类用户:u :属主 g: 属组 o: 其他 a: 表示所有=ugo
      1.chmod [OPTION]... MODE[,MODE]... FILE...
      MODE的表示方法:
      赋权法:直接操作一类用户的所有权限位rwx;
      u= ,g= ,o= ,a=
      加权法:直接操作一类用户的一个权限位r,w,x加减
      u-|+ ,g+|- ,o +|-, a +|-
      2.chmod [OPTION]... OCTAL-MODE FILE... 8进式必须要给3位如644 600
      技术分享图片

    • chown:修改文件的属主属组
      语法:
      chown [OPTION]... [OWNER][:[GROUP]] FILE... 使用:或者.分割都可以
      chown [OPTION]... --reference=RFILE FILE...
      -R,--recursive递归

    • chgrp:修改属组关系
      语法:
      chgrp [OPTION]... GROUP FILE...
      chgrp [OPTION]... --reference=RFILE FILE...
      注仅管理员才可以操作chown/chgrp命令

  • 文件访问控制列表:facl:file access control lists
    文件的额外赋权机制:在原来的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制;可以对某一用户做[拒绝]访问
    赋权用户或组:
    setfacl -m u:user_name:MODE file...
    setfacl -m g:group_name:MODE file...
    撤销权限:
    setfacl -x u:user_name file...
    setfacl -x g:group_name file...
    setfacl -b file...撤销所有用户组的权限
    查看权限:
    getfacl file...
    技术分享图片

以上是关于Linux用户权限管理的主要内容,如果未能解决你的问题,请参考以下文章

gitlab 权限说明

JS+JavaBean判断管理员增删改的操作权限

大数据之Linux用户权限设置

linux用户及权限详解-用户组-用户管理-权限管理

gitlab 可以进行版本和权限控制,bug管理吗?供部门内部使用,而且是Linux和Windows平台都能使用

Linux用户权限管理命令