Linux 用户和组管理

介绍3A安全机制:

    Authentication:认证

    Authorization:授权

    Accouting|Audition :审计

linux 运行的程序是以进程发起者的身份运行的,进程所能访问资源的权限取决于进程的运行者的身份


用户 user:

令牌 token,identity

Linux用户:username/UID

管理员:root,0

普通用户:1-65535    

    系统用户:centos6是1-499,centos7是1-999,对守护进程获取资源进行权限分配 

    登录用户:centos6是500+,centos7是1000+,交互式登录



组 group:

Linux组:groupname/GID

管理员:root,0

普通组:1-65535

    系统组:centos6是1-499,centos7是1-999

    普通组:centos6是500+,centos7是1000+


Linux的组分两类

  一个是用户的主要组(主组):

    用户必须属于一个且只有一个主组

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

  一个是用户的附加组(辅助组):

    一个用户可以属于零个或多个辅助组


用户和组的配置文件:


/etc/passwd : 用户及其属性信息(名称,UID,主组ID等)

/etc/group : 组及其属性信息 group_name:password:GID:user_list

/etc/shadow : 用户密码及其相关属性

/etc/gshadow : 组密码及其相关属性


/etc/passwd文件格式:

  • name:登录用户名

  • password:密码用X显示

  • UID:用户的身份编号

  • GID:登录默认所在组的编号

  • GECOS:用户全名或注释

  • directory:用户主目录

  • shell:用户默认使用的shell


/etc/group文件格式

  • group_name:群组名称

  • password:群组密码,通常不需要设定

  • GID:群组的ID

  • user_list:以当前组为附加组的用户列表(分隔符为逗号)


/etc/shadow文件格式:

信息是以 : 为分隔符,包含以下信息:

  •  login name :登录用户名

  •  encrypted password :  加密密码,一般使用sha512加密

  •  date of last password change :最近一次密码更改日期

  •  minimum password age:密码再过几天可以被变更(0表示随时可以变更)

  •  maximum password age: 密码再过几天必须变更(99999表示永不过期)

  •  password warning period:密码警告期,默认为一周

  •  password inactivity period:密码不活跃期(密码过期后几天后账号被锁到)

  •  account expiration date:账户有效期

  •  reserved field:保留字段

blob.png

/etc/gshadow文件格式:

  •   group name:组名字

  •   encrypted password:加密的密码

  •   administrators:组管理员

  •   members:组用户成员


密码加密:


加密机制:

 加密:明文-->密文

 解密:密文-->明文

单项加密:哈希算法,原文不同,密文也必不相同

更改加密算法 authconfig --passalgo=sha256 --update

使用数字、大写字母、小写字母及特殊字符中至少3种

足够长,使用随机密码 ,定期更换,不要使用最近曾经使用过的密码 



比如把用户 cent 的密码改为123 可以执行此命令

echo 123 | passwd --stdin cent > /dev/null

echo $? 查看是否执行成功

此命令有两个作用,第一就是改密码,然后改密码后不会在屏幕上显示,因为将屏幕输出重定向到/dev/null

/dev/null  该设备是一个类似黑洞的设备,所有文件重定向此设备都不会泛起一丝涟漪,是一个超级垃圾箱

chfn 该命令可以更改用户信息

finger cent 命令查看cent用户信息

chsh -s /bin/bash cent 把cent用户的shell改为bash

特殊的shell /sbin/nologin 无法登陆

/etc/skel:用户家目录的模板

/etc/default/useradd:创建用户的配置文件



例如:

1,创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"

    seradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo

blob.png

blob.png

2,创建下面的用户、组和组成员关系

名字为admins 的组

用户natasha,使用admins 作为附属组

用户harry,也使用admins 作为附属组

用户sarah,不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos

groupadd admins
useradd  -G admins  natasha
useradd  -G admins  harry
echo centos | passwd --stdin harry
echo centos | passwd --stdin natasha
useradd -s /sbin/nologin sarah
echo centos | passwd --stdin sarah


useradd:用户的创建


 useradd [options] LOGIN


options:

  •    -u UID:[UID_MIN,UID_MAX]定义在/etc/login.defs

  •   -o 配合-u选项,不检查UID的唯一性

  •   -g GID: 指明用户所属基本组,可为祖名,也可为GID

  •   -c "COMMENT" :用户的注释信息

  •   -d HOME_DIR:以指定的路径(不存在)为家目录

  •   -s SHELL:指明用户的默认shell程序

  •       可用列表在/etc/shells文件中

  •   -G GROUP1[,GROUP2,...]:为用户指明附加组,组必须事先存在

  •   -N 不创建私用组作主组,使用usrs组为主组

  •   -r 创建系统用户 centos 6 :ID<5000 centos 7 :ID <100

默认设定值存在/etc/default/useradd文件中

显示或更改默认设置:

    useradd -D

    useradd -D -s SHELL //修改默认shell


groupadd命令: 添加组

groupadd [选项] group_name 

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

  -r 创建系统组 

groupmod:修改组属性 

groupmod [选项] GROUP 

  -g GID: 修改GID 

  -n new_name:修改组名 

groupdel:删除组
groupdel [选项] GROUP


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:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中
 -r ,--system :创建系统用户

useradd -D:用来创建用户默认配置 

useradd -D [options] 修改默认选项的值

/etc/login.defs   

自定义配置(创建用户时诸多默认配置),修改的结果保存在/etc/default/useradd文件中

 


usermod命令:修改用户属性

usermod  [选项] 登录 

  • -u , --uid UID: 修改用户的ID为指定的心UID 

  • -g, --gid GROUP  修改用户所属的基本组 

  • -G,--groups GROUP1[,GROUP2,...[,GROUP]]]: 修改用户所属的附加组,原来的附加组会被覆盖 

  • -a ,--append: 与 -G 一同使用,用于为用户追加新的附加组 

  • -c,--comment COMMENT:修改注释信息 

  • -d, --home HOME_DIR 修改用户的家目录,用户原有的文件不会转移到新位置 

  • -m, --move-home:只能和-d一起使用,用于将原来的家目录移动到新的目录 

  • -l --login NEW_NAME  修改用户名 

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

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

  • -U,--unlock  解锁密码 


userdel命令:删除用户

userdel [选项] 登录 

-r:删除用户时一并把用户的家目录删除

 


passwd 命令:

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactive‐days] [-S] [--stdin] [username] 

1· passwd:修改用户自己的密码 

2·passwd username :直接修改username用户的密码

  

  •  -l,-u  加锁,解锁用户 

  •  -d 清除用户密码串 

  •  -e DAYS: 过期期限,日期 

  •  -i DAYS: 非活动期限 

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

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

  •  -w DAYS:警告期限 


 --stdin:  echo "password" | passwd --stdin username


echo "nineven" | passwd  --stdin test   &> /dev/null

echo $?

0

//通过管道的方式一次性更改test用户密码为 nineven

 


gpasswd命令

gpasswd [选项] group 

 组密码文件:/etc/gshadow 

 -a username :向组中添加用户 

 -d username :  向组中删除用户

 


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

newgrp [-] [group]  

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

 

 

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

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

su命令:切换用户

  

    1.登录式切换: 会重新读取用户的配置文件来重新初始化 

     su - USERNAME

su -l USERNAME

  

    2.非登录式切换:不会重新读取用户的配置文件来重新初始化 

     su USERNAME

注意:管理员无需密码可切换到其他用户

  

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

  

  

  • Linux 用户和组管理已关闭评论
  • 1,521 views
    A+
发布日期:2016年07月20日  所属分类:linux
标签: