07-Linux用户及其权限管理
07-Linux用户及其权限管理

07-Linux用户及其权限管理

1.用户、组合权限管理

1.1 用户

  • 每个使用者:用户标识、密码

    • Authentication 认证机制
    • Authorization 授权机制
    • Audition 审计机制
  • 组:用户组,用户容器,便于实现权限分配

  • 用户类别:

    • 管理

    • 普通用户

    • 系统用户

    • 登录用户

    • 用户表示:UserID, UID

    • 16bits二进制数字: 0-65535

    • 管理员: 0

    • 普通用户: 1-65535

      • 系统用户: 1-499(Centos6), 1-999(Centos7)
      • 普通用户: 500-60000(Centos6), 1000-60000(Centos7)
    • 名称解析:名称转换的过程

    • Username <--> UID

    • 根据用户的信息库进行名称解析: /etc/passwd

    • [lemon@VM-4-10-centos ~]$ cat /etc/passwd
      root:x:0:0:root:/root:/bin/bash
      bin:x:1:1:bin:/bin:/sbin/nologin
      daemon:x:2:2:daemon:/sbin:/sbin/nologin
      adm:x:3:4:adm:/var/adm:/sbin/nologin
      lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
      sync:x:5:0:sync:/sbin:/bin/sync
      shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
      halt:x:7:0:halt:/sbin:/sbin/halt
      mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
      operator:x:11:0:operator:/root:/sbin/nologin
      games:x:12:100:games:/usr/games:/sbin/nologin
      ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
      nobody:x:99:99:Nobody:/:/sbin/nologin
      systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
      dbus:x:81:81:System message bus:/:/sbin/nologin
      polkitd:x:999:998:User for polkitd:/:/sbin/nologin
      libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
      rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
      ntp:x:38:38::/etc/ntp:/sbin/nologin
      abrt:x:173:173::/etc/abrt:/sbin/nologin
      sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
      postfix:x:89:89::/var/spool/postfix:/sbin/nologin
      chrony:x:997:995::/var/lib/chrony:/sbin/nologin
      tcpdump:x:72:72::/:/sbin/nologin
      syslog:x:996:994::/home/syslog:/bin/false
      www:x:1000:1000::/home/www:/sbin/nologin
      mysql:x:1001:1001::/home/mysql:/sbin/nologin
      lighthouse:x:1002:1002::/home/lighthouse:/bin/bash
      lemon:x:1003:1003::/home/lemon:/bin/bash
      tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
      redis:x:995:990:Redis Database Server:/var/lib/redis:/sbin/nologin
      x:x:1004:1004::/home/x:/bin/bash

1.2 组

  • 组类别1:

    • 管理员组
    • 普通用户组
    • 系统组
    • 登录组
  • 组标识:GroupID, GID

    • 管理员组:0
    • 普通用户组: 1-65635
      • 系统用户组: 1-499(Centos6), 1-999(Centos7)
      • 登录用户登录: 500-60000(Centos6), 1000-60000(Centos7)
  • 名称解析:group那么 <--> gid

    • 解析库:/etc/group
  • 组类别2:

    • 用户的主组(基本组)
    • 用户的附加组
  • 组类别3:

    • 私有组:组名同用户名,且只包含一个用户;
    • 公共组:组内包含了多个用户;

1.3 认证信息

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

password:单独存放

  • /etc/shadow 用户密码库文件
  • /etc/gshadow 组密码库文件

密码存储格式:单向加密,并借助于salt完成

  • md5
  • sha1
  • sha224
  • sha256
  • sha384
  • sha512

1.4 数据库文件

/etc/passwd:用户的信息库

  • name:password:UID:GID:GECOS:directory:shell
  • name: 用户名
  • password: 可以是加密的密码,也可是占位符x;
  • UID:
  • GID: 用户所属的主组的ID号
  • GECOS: 注释信息
  • directory: 用户的家目录
  • she11:用户的默认shel1,登录时默认she11程序

/etc/shadow: 用户密码

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

/etc/group:组的信息库

  • group_name:password:GID:user list
  • user_list: 该组的用户成员:以此组为附加组的用户的用户列表

2.添加/删除 用户/用户组

2.1 group相关

groupadd命令:添加组

  • groupadd[选项] group_name
    • -g GID: 指定GID;默认是上一个组的GID+1;
    • -r:创建系统组;

groupmod命令:修改组属性

  • groupmod[选项] GROUP
    • -g GID: 修改GID;
    • -n new_name:修改组名;

groupdel命令:删除组

  • groupdel[选项] GROUP

2.2 user相关

useradd命令:创建用户

  • useradd [选项] 登录名

    • -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: 指定用户的默认shel1,可用的所有shel1列表存储在/etc/shells文件中
    • -r, --system:创建系统用户:
  • 注意:创建用户时的诸多默认设定配置文件为/etc/login.defs

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

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

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

usermod命令:修改用户属性
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选项一同使用,用于将原来的家目录移动为新的家目录;
  • -l, --login NEW_LOGIN: 修改用户名;
  • -s, --shel1 SHELL: 修改用户的默认she1;
  • -L, --lock: 锁定用户密码:即在用户原来的密码字符串之前添加一个"!";
  • -U, --unlock:解锁用户的密码;

userdel命令:删除用户
userdel [选项] 登录

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

2.4 练习

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

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

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

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

3. 密码管理

3.1 passwd命令

PASSWD(1)                                                            User utilities                                                            PASSWD(1)

NAME
       passwd - update user's authentication tokens

SYNOPSIS
       passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
  1. passwd: 修改自己的密码
  2. passwd USERNAME: 修改指定用户的密码

选项:

  • -u, -l: 锁定和解锁用户
  • -d: 清楚用户密码串;
  • -e DATE: 过期期限,日期;
  • -i DAYS: 非活动期限;
  • -n DAYS: 密码的最短使用期限;
  • -x DAYS: 密码的最长使用期限;
  • -w DAYS: 警告期限

--stdin:

  • echo "PASSWORD" | passwd 00stin USERNAME

3.2 gpasswd命令

gpasswd [选项] group

  • -a USERNAME: 向组中添加用户
  • -d USERNAME:从组中移除用户

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

  • newgrp [-] [group]
    • -: 会模拟用户重新登录以实现重新初始化其工作环境
  • chage命令:更改用户密码过期信息
    chage [选项] 登录名
    • -d
    • -E
    • -W
    • -m
    • -M

3.4 id 命令

id命令:显示用户的真实有效ID;
id [OPTION]... [USER]

  • -u: 仅显示有效的UID;
  • -g: 仅显示用户的基本组ID;
  • -G:仅显示用户所属的所有组的ID;
  • -n: 显示名字而非ID;

3.5 su 命令

su命令: switch user

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

  • SU - USERNAME
  • SU -I USERNAME

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

  • SU USERNAME

3.6 其他几个命令

  • chsh: change shell,改变shell或指定用户的shell;

    [root@VM-4-10-centos ~]# chsh lemon
    Changing shell for lemon.
    New shell [/bin/bash]: /bin/csh
    Shell changed.
    [root@VM-4-10-centos ~]# cat /etc/passwd
  • chfn:修改finger信息

  • whoami

3.权限管理

1.进程安全上下文

  • ls -l

    • rwxrwxrwx:
    • 左三位:定义user(owner)的权限
    • 中三位:定义group的权限
    • 右三位:定义other的权限
  • 进程安全上下文:进程对文件的访问权限应用模型

    • 进程的属主与文件的属主是否相同,如果相同,则应用属主权限;

    否则,则检查进程的属主是否属于文件的数组;如果是,则应用属组权限;

    否则,就只能应用other的权限

2.权限名称

权限:

  • r : read,读

  • w: write, 写

  • x : excute,执行

  • 文件:

    • r : 可获取文件的数据
    • w : 可修改文件的数据
    • x : 可将此文件运行为进程
  • 目录:

    • r : 可使用ls命令获取其下的所有文件列表;
    • w : 可修改此目录下的文件列表: 即创建或删除文件;
    • x : 可 cd 至此目录中,且可使用ls -l 来获取所有文件的详细属性信息
  • mode: rwxrwxrwx

  • ownership: user, group

3.权限组合机制

--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

练习:rw-rw-r--, rwxrwxr-x, rwxr-x---,rw-------, rwxr-xr-x

664,775,750,600,755

4.权限管理命令

chmod命令

chmod [option]... MODE[,MODE]... FILE...

chmod [option]... OCTAL -MODE FILE...

chmod [option]... --reference=RFILE FILE...

三类用户:

  • u: 属主
  • g: 属组
  • o: 其他
  • a: 所有
  1. chmod [option]... MODE[,MODE]... FILE...

    MODE表示法:

    • 赋权表示法
      • chmod u=rwx
      • g=
      • o=
      • a=
    • 授权表示法
      • u+

发表回复

您的电子邮箱地址不会被公开。