用户和组
touch /etc/nologin 系统做维护时不想普通用户登录,就可以创建这个文件,也可以在里面写一些提示。 维护完之后删除这个文件就可以自动恢复 touch /run/nologin 与上述命令功能相同,但是这个命令只有在CentOS7上可以用。
用户(USER)
根据所具有权限的不同,用户分为两类: 管理员用户:root,UID为0.(只有管理员用户才能为0) 普通用户:UID 1-65535 普通用户又可以分为两类: 系统用户:保障系统运行的用户,一般不提供密码登录系统,其UID为1-499(CentOS6)、1-1000(CentOS7)之间. 登录用户:即一般用户,其使用系统的权限受限,其UID为500-60000(CentOS6)、1000-60000(CentOS7)之间.(一般默认使用到60000) 名称解析:名称转换 Username<-->UID 根据名称解析库进行:/etc/passwd
组(group)
Linux组:Groupname / GID 与用户一样,组也是分为两类: 管理员组:root 0 普通组: 系统组:1-499(CentOS6)、1-999(CentOS7) 普通组:500-60000(centos6)、1000-60000(CentOS7) 组的类别: 主组:(主要组,基本组): 用户必须拥有和属于一个主组,主组有且只有一个。 主组名与用户名相同,且仅包含一个用户:是私有组。 附加组:(辅助组) 一个用户可以属于零个或一个或多个附加组 名称解析:名称转换 groupname<--->gid 解析库:/etc/group
用户和组的配置文件
Linux 用户和组的主要配置文件: /etc/passwd :用户及其属性信息( 名称、UID 、主组ID 等) /etc/group :组及其属性信息 /etc/shadow :用户密码及其相关属性 /etc/gshadow:组密码及其相关属性
-
passwd文件格式
login name :登录用名 passwd :密码 UID号 :用户身份编号 GID :用户所属主组的ID号 GECOS :用户全名或注释 home directory(家目录) :用户主目录 shell :用户默认使用shell
-
shadow文件格式
登录用名: 用户密码: 一般用sha512 加密 最近一次修改密码的时间:从1970 年1 月1 日起到密码最近一次被更改的时间 最短使用期限:密码再过几天可以被变更(0 表示随时可被变更) 最长使用期限:密码再过几天必须被变更(99999 表示永不过期) 警告期段:密码过期前几天系统提醒用户(默认为一周) 密码过期几天后帐号会被锁定 从1970 年1 月1 日算起,多少天后帐号失效。
-
group文件格式
群组名称:就是群组名称 群组密码:通常不需要设定,密码是被记录在/etc/gshadow GID的 :就是群组的 ID 以当前组为附加组的用户列表(分隔符为逗号)
-
gshadow文件格式
群组名称:就是群组名称 群组密码: 组管理员列表:组管理员的列表,更改组密码和成员 以当前组为附加组的用户列表:(分隔符为逗号)
-
密码加密
加密机制: 加密:明文--> 密文 解密:密文--> 明文 单向加密:哈希算法,原文不同,密文必不同 相同算法定长输出,获得密文不可逆推出原始数据 雪崩效应:初始条件的微小改变,引起结果的巨大改变 md5: message digest, 128bits sha1: secure hash algorithm, 160bits sha224: 224bits sha256: 256bits sha384: 384bits sha512: 512bits 更改加密算法 authconfig --passalgo=sha256 -- update
-
用户和组的管理命令
用户管理命令 useradd 增加用户 usermod 修改用户属性 userdel 删除用户 组帐号维护命令 groupadd 增加组 groupmod 修改组属性 groupdel 删除组
用户创建
-
useradd
useradd [options] login_name 参数: -u UID:手动指定用户UID,默认的话是上一个用户的UID+1 [root@localhost ~]# tail -2 /etc/passwd sarah:x:2009:2010::/home/sarah:/sbin/nologin haha:x:2010:2011::/home/haha:/bin/bash [root@localhost ~]# useradd haha2 [root@localhost ~]# tail -2 /etc/passwd haha:x:2010:2011::/home/haha:/bin/bash haha2:x:2011:2012::/home/haha2:/bin/bash -o 配合-u 选项,不检查UID 的唯一性 [root@localhost ~]# useradd -ou 2011 haha3 [root@localhost ~]# tail -2 /etc/passwd haha2:x:2011:2012::/home/haha2:/bin/bash haha3:x:2011:2013::/home/haha3:/bin/bash -g GID :指明用户所属基本组,可为组名,也可以GID [root@localhost ~]# useradd -g root haha4 [root@localhost ~]# id haha4 uid=2012(haha4) gid=0(root) groups=0(root) -c "COMMENT" :用户的注释信息 [root@localhost ~]# useradd -c "kuailederen haha4" haha5 [root@localhost ~]# getent passwd haha5 haha5:x:2013:2014:kuailederen haha4:/home/haha5:/bin/bash -d HOME_DIR: 以指定的路径( 不存在) 为家目录 [root@localhost ~]# useradd -d /home/hahatest/ haha6 [root@localhost ~]# getent passwd haha6 haha6:x:2014:2015::/home/hahatest/:/bin/bash -s SHELL : 指明用户的默认shell 程序可用列表在/etc/shells 文件中 [root@localhost ~]# useradd -s /bin/csh/ haha7 [root@localhost ~]# getent passwd haha7 haha7:x:2015:2016::/home/haha7:/bin/csh/ -G GROUP1[,GROUP2,...] :为用户指明附加组,组必须事先存在 [root@localhost ~]# usermod -G bin haha6 [root@localhost ~]# getent passwd haha6 haha6:x:2014:2015::/home/hahatest/:/bin/bash [root@localhost ~]# groups haha6 haha6 : haha6 bin -N 不创建私用组做主组,使用users 组做主组 [root@localhost ~]# useradd -N haha8 [root@localhost ~]# groups haha8 haha8 : users -r: 创建系统用户 CentOS 6: ID<500 ,CentOS 7: ID<1000 [root@localhost ~]# useradd -r haha9 [root@localhost ~]# groups haha9 haha9 : haha9 [root@localhost ~]# id haha9 uid=991(haha9) gid=986(haha9) groups=986(haha9) [root@localhost ~]# getent passwd haha9 haha9:x:991:986::/home/haha9:/bin/bash
-
创建用户是的默认值在文件:
默认值设定:/etc/default/useradd 文件中 显示或更改默认设置: useradd -D useradd –D -s SHELL
-
新建用户相关的文件和命令
/etc/default/useradd /etc/skel/* /etc/login.defs newusers passwd 格式文件 批量创建用户 chpasswd 批量修改用户口令
批量创建用户
newusers file (file 里是要批量创建的用户的配置信息) file (hehe1:x:2000:2000::/home/hehe1:/bin/bash hehe2:x:2001:2002::/home/hehe2:/bin/bash hehe3:x:2002:2002::/home/hehe3:/bin/bash hehe4:x:2003:2003::/home/hehe4:/bin/bash hehe5:x:2004:2004::/home/hehe5:/bin/bash )
批量修改用户密码
cat file | chpasswd file(用户名 :密码) (hehe :12345 hehe2:redhat hehe3:centos ) 新创建的家目录里面没有配置文件登录时候会出错,恢复家目录文件的方法是: (1) [root@localhost skel]# cp -r /etc/skel/.[^.]* /home/hehe2 [root@localhost skel]# cd /home/hehe3 [root@localhost hehe3]# ls -a . .. [root@localhost hehe3]# cd [root@localhost ~]# [root@localhost ~]# cd /home/hehe2 [root@localhost hehe2]# ls -a . .. .bash_logout .bash_profile .bashrc .mozilla 附加方法: (2)cp -r `ls -A` /home/hehe3/ 此方法只能在进入到skel目录里才行 不能在其他目录下操作此命令 (3)cp -r /etc/skel/. /home/hehe3/
用户属性修改
usermod [OPTION] login_name -u UID: 新UID -g GID: 新基本组 -G GROUP1[,GROUP2,...[,GROUPN]]] :新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a 选项,表示append; ; -s SHELL :新的默认SHELL; -c 'COMMENT' :新的注释信息; -d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m选项 -l login_name: 新的名字; -L: lock 指定用户, 在/etc/shadow 密码栏的增加 ! -U: unlock 指定用户,将 /etc/shadow 的 密码栏的 ! 拿掉 -e YYYY-MM-DD: 指明用户账号过期日期; -f INACTIVE: 设定非活动期限; [root@localhost ~]# getent passwd haha5 haha5:x:2013:2014:kuailederen haha4:/home/haha5:/bin/bash [root@localhost ~]# id haha5 uid=2013(haha5) gid=2014(haha5) groups=2014(haha5) [root@localhost ~]# groups haha5 haha5 : haha5 [root@localhost ~]# usermod -u 2345 -g root -G bin -s /bin/csh -c "nihaohaha" -d /home/testdir/newhaha5 -m -l newhaha5 haha5 [root@localhost ~]# getent passwd newhaha5 newhaha5:x:2345:0:nihaohaha:/home/testdir/newhaha5:/bin/csh [root@localhost ~]# id newhaha5 uid=2345(newhaha5) gid=0(root) groups=0(root),1(bin) [root@localhost ~]# groups newhaha5 newhaha5 : root bin
查看用户相关id信息
id [OPTION]... [USER] -u: UID -g: GID -G: Groups -n: Name
删除用户
userdel [option]... login_name -r 删除用户家目录
用户和组相关操作命令
pwunconv 密码不转换 passwd unconv pwconv密码转换 passwd conv chsh -s :改shell类型 getent passwd 用户名:看用户信息 getent shadow 用户名: usermod -U tom:解锁用户密码限制(创建用户没有设置密码时) usermod -L tom锁定,锁定后禁止用户登录,但是可以切换 openssl rand -base64 10(位数)自动生成指定位数密码 chage -d0 用户名 修改距离1971年天数 passwd -e 用户名,将用户距离1971年天数置零 finger gpasswd 组名:给组设置口令
切换用户或以其他用户的身份执行命令
su [options...] [-] [user [args...]] 切换用户的方式: su UserName :非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录 su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换 root su 至其他用户无须密码; 非root用户切换时需要密码
换个身份执行命令:
su [-] UserName -c 'COMMAND' 选项: -l --login_name: su -l UserName 相当于 su - UserName
设置密码
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root 用户权限 passwd: 修改自己的密码; 常用选项: -l: 锁定指定用户 -u: 解锁指定用户 -e: 强制用户下次登录修改密码 -n mindays: 指定最短使用期限 -x maxdays :最大使用期限 -w warndays :提前多少天开始警告 -i inactivedays :非活动期限; --stdin :从标准输入接收用户密码; echo " PASSWORD " | passwd --stdin USERNAME
修改用户密码策略
chage [OPTION]... LOGIN -d LAST_DAY -E, --expiredate EXPIRE_DATE -I, --inactive INACTIVE -m, --mindays MIN_DAYS -M, --maxdays MAX_DAYS -W, --warndays WARN_DAYS –l,显示密码策略
组
创建组
groupadd [OPTION]... group_name -g GID: 指明GID 号;[GID_MIN, GID_MAX],默认情况下是上一个组的GID+1 -r: 创建系统组; CentOS 6: ID<500 CentOS 7: ID<1000
修改和删除组
组属性修改;groupmod groupmod [OPTION]... group -n group_name: 新名字 -g GID: 新的GID组删除:groupdel groupdel GROUP_NAME
更改组密码
组密码:gpasswd gpasswd [OPTION] GROUP -a user: 将user 添加至指定组中; -d user: 从指定组中移除用户user -A user1,user2,...:设置有管理权限的用户列表 newgrp 命令:临时切换基本组; 如果用户本不属于此组,则需要组密码
原创文章,作者:dxkboke,如若转载,请注明出处:http://www.178linux.com/28164