码迷,mamicode.com
首页 > 系统相关 > 详细

Linux用户、组和权限管理(一)

时间:2017-06-01 00:17:26      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:linux用户、组使用

Linux是一个Multi-tasks(多任务)、 Multi-Users(多用户)的系统


每一个登陆者或使用者都有用户标识、密码(所谓3A)

  所谓的3A:

    Authentication(验证机制)

    Authorization(授权机制)

    Audition(审计)


组的概念:用户组,用户容器;是为了便于用户权限分配


用户类别

  管理员:root

  普通用户:

    系统用户

    登录用户


  在linux系统中用户标识UserID,简称UID

    用户标识使用的范围:

      16bits二进制数字:0-65535(默认16位,可扩展32位)

        管理员:0

        普通用户:1-65535

          系统用户:1-499(Cenots6),1-999(Centos7)

          登录用户:500-60000(Centos6),1000-60000(Centos7)


    名称解析:

      每一个用户名都对应一个UID号码,根据名称解析库进行解析:/etc/passwd


  组类别1:

    管理员组

    普通用户组:

      系统组

      登录组


  组标识:GroupID, GID

    管理员组:0

    普通用户组:1-65635

      系统用户组:1-499(CentOS6), 1-999(CentOS7)

      登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)

 

  名称解析:groupname <--> gid;解析库:/etc/group


  组类别2:

    用户的基本组:每个用户都有自己的组

    用户的附加组:加入另外组中


  组类别3:

    私有组:组名同用户名,且只包含一个用户;

    公共组:组内包含了多个用户;


认证信息:

  通过比对事先存储的,与登录时提供的信息是否一致;

  密码存放文件位置:

    用户:/etc/shadow

    组:/etc/gshadow


  密码的使用策略:

    1、使用随机密码;

    2、最短长度不要低于8位;

    3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;

    4、定期更换;


  加密算法:

    对称加密:加密和解密使用同一个密码;

    非对称加密:加密和解密使用的一对儿密钥;

      密钥对儿:

        公钥:public key

        私钥: private key

      非对称加密是一对的,使用公钥加密,需要使用与之对应私钥解密;其可与之起返

    单向加密:只能加密,不能解密;提取数据特征码;(定长输出)

     算法:

        md5: message digest, 128bits

        sha:secure hash algorithm, 160bits

        sha224

        sha256

        sha384

        sha512(512是长度)


    示例:

      [root@centos7 ~]# echo "nihao" | md5sum

       0a34a9366d438e6ac5ae3480d024c4ef  -

       [root@centos7 ~]# echo "abcdefg" | sha512sum

9ab216d2cf3d89df5ba18cd3e3eb390d4ed30a9a0349b71680cc244c7e22cdddabb5a042481b2c6c8d6fabee4f3cb280f02c0c3f27ee66929aa2342f2142750c  -


/etc/passwd:用户的信息库

  name:password:UID:GID:GECOS:directory:shell

    解释:

      name: 用户名

      password:可以是加密的密码,也可是占位符x;

      UID:用户ID号

      GID:用户所属的主组的ID号;

      GECOS:注释信息

      directory:用户的家目录;

      shell:用户的默认shell,登录时默认shell程序;


/etc/shadow:用户密码(gshadow也是一样)

  用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段


/etc/group:组的信息库

  group_name:password:GID:user_list

    user_list:该组的用户成员;以此组为附加组的用户的用户列表;



相关命令:useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su


useradd命令:创建用户

  [root@centos7 ~]# useradd test

  

  useradd [选项] 登录名

    -u, --uid UID:指定UID;

      [root@centos7 ~]# useradd -u 1500 docker

      docker:x:1500:1500::/home/docker:/bin/bash

    -g, --gid GROUP:指定基本组ID,此组必须要存在,否则报错;

      [root@centos7 ~]# useradd -g yunwei test2

    -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;

      [root@centos7 ~]# useradd -G docker test

      docker:x:1500:test

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

    -d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;

      [root@centos7 sh]# useradd -d /sh/test2 test2

      test2:x:1502:1502::/sh/test2:/bin/bash

    -s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;

      [root@centos7 sh]# useradd -s /bin/sh test2

      test2:x:1502:1502::/home/test2:/bin/sh

    -r, --system:创建系统用户;

    -M:不创建用户家目录

    -f:非活动期限(密码过期后,用户彻底禁用时间)


  注意:创建用户时的默认设定配置文件为/etc/login.defs (全局配置)


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

    [root@centos7 ~]# useradd -D

    GROUP=100

    HOME=/home

    INACTIVE=-1

    EXPIRE=

    SHELL=/bin/bash

    SKEL=/etc/skel

    CREATE_MAIL_SPOOL=yes


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

    [root@centos7 ~]# useradd -D -s /bin/sh

    SHELL=/bin/sh

    修改的结果保存于/etc/default/useradd文件中;



usermod命令:修改用户属性

  usermod - modify a user account

  格式:

    usermod [options] 用户名


  usermod [选项] 登录

    -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选项一同使用,用于将原来的家目录移动为新的家目录;

      [root@centos7 sh]# usermod -m -d /sh/test6 -u 10005 test6

      注:要加-u选项,后跟UID和用户名,否则会报错

    -l, --login NEW_LOGIN:修改用户名;

    -s, --shell SHELL:修改用户的默认shell;


    -L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";

    -U, --unlock:解锁用户的密码;



userdel命令:删除用户

  userdel [选项] 登录

    -r:删除用户时一并删除其家目录;



groupadd命令:添加组

  groupadd [选项] group_name

    [root@centos7 ~]# groupadd mylist


    -g GID:指定GID;默认是上一个组的GID+1;

      [root@centos7 ~]# groupadd -g 10000 kklist

    -r: 创建系统组;


groupmod命令:修改组属性

  groupmod [选项] GROUP

    -g GID:修改GID;

      [root@centos7 ~]# groupmod -g 10010 kklist

    -n new_name:修改组名;

      [root@centos7 ~]# groupmod -n kwlist kklist


groupdel命令:删除组

  groupdel [选项] GROUP

    [root@centos7 ~]# groupdel mylist


passwd命令

  实现功能:

    (1) passwd:修改用户自己的密码;

    (2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;


  选项:

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

    -d:清除用户密码串;

      [root@centos7 ~]# passwd -d kwang

    -e DATE: 过期期限,日期;

    -i DAYS:非活动期限;

    -n DAYS:密码的最短使用期限;

    -x DAYS:密码的最长使用期限;

    -w DAYS:警告期限;


    --stdin:(通常脚本使用)

      echo "PASSWORD" | passwd --stdin USERNAME


gpasswd命令:

  组密码文件:/etc/gshadow

  设置组密码:

    [root@test1 ~]# gpasswd 组名称

  gpasswd [选项] group

    -a USERNAME:向组中添加用户

      [root@centos7 sh]# gpasswd -a test1 mylist

    -d USERNAME:从组中移除用户

      [root@centos7 sh]# gpasswd -d test1 mylist



newgrp命令:临时切换指定的组为基本组;

  newgrp [-] [group]

    -: 会模拟用户重新登录以实现重新初始化其工作环境;

      不加入"-"只是临时切换到指定组

   

    示例:

      [root@centos7 sh]# gpasswd -a test1 mylist

      [root@centos7 sh]# su - test1

      [test1@centos7 mylist]$ newgrp mylist

      [test1@centos7 mylist]$ touch 2

      -rw-r--r-- 1 test1 mylist 0 Mar 20 14:27 2


chage命令:更改用户密码过期信息

  chage - change user password expiry information

  格式:

    chage [选项] 登录名

  选项:

    -d:上一次更改的日期;0表示第一次登陆强制修改密码

      [root@centos7 home]# chage -d 0 kwang

    -E:账号到期的日期;0表示立即过期,-1表示永不过期

      [root@centos7 home]# chage -E 0 kwang

      [root@centos7 home]# chage -E -1 kwang

    -l:列出用户密码有效期限信息

      [root@centos7 home]# chage -l kwang

    -m:密码可更改的最小天数,零代表任何时候都可以更改密码

      [root@centos7 home]# chage -m 1 kwang

        Minimum number of days between password change : 1

    -M:密码保持有效的最大天数

      [root@centos7 home]# chage -M 7 kwang

        Maximum number of days between password change : 7

    -W:用户密码到期前,提前收到警告信息的天数

      [root@centos7 home]# chage -W 5 kwang

        Number of days of warning before password expires : 5

    -I:密码失效时间后,锁定账号的天数



id命令:显示用户的真和有效ID; 

  id [OPTION]... [USER]

    -u: 仅显示有效的UID;

    -g: 仅显示用户的基本组ID; 

    -G:仅显示用户所属的所有组的ID;

    -n: 显示名字而非ID;


su命令:switch user

  登录式切换:会通过读取目标用户的配置文件来重新初始化

    su - USERNAME

    su -l USERNAME

  非登录式切换:不会读取目标用户的配置文件进行初始化

    su USERNAME


  注意:管理员可无密码切换至其它任何用户;


  -c ‘COMMAND‘:仅以指定用户的身份运行此处指定的命令;

   [root@test1 ~]# su - test -c ‘ls -l /etc/passwd‘



练习1:创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001);

练习2:创建用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tcsh;

练习3:修改gentoo用户的家目录为/var/tmp/gentoo;要求其原有文件仍能被用户访问;

练习4:为gentoo新增附加组netadmin;



解答1:

[root@centos7 ~]# groupadd -g 5000 distro

[root@centos7 ~]# groupadd -g 5001 peguin

[root@centos7 ~]# useradd -G distro,peguin -u 4001 gentoo


本文出自 “变相怪杰” 博客,谢绝转载!

Linux用户、组和权限管理(一)

标签:linux用户、组使用

原文地址:http://waldenkk.blog.51cto.com/2410270/1931058

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