以下是我对Linux系统用户以及组的理解以及一些命令的解释,如有不当之处,请大家留言提醒,谢谢.
Linux是一个多用户登录的操作系统,所有要在Linux系统中工作的使用者,都必须向管理员申请用户账户.而管理员会根据使用者在Linux中的角色,将其账户权限设定为系统用户或者是登陆用户,及安排其账户的主组以及其附属组.而恰恰是这一些列的安全动作,很大程度上保证的Linux系统的安全.
而管理员要实现用户账户管理,主要有一下几方面:
1、用户账号的管理(添加,删除,修改)
2、用户密码的添加,修改
3、用户组的管理
在Linux系统中,用户的账号信息存放在 /etc/passwd 中 ,而该文件一般只有 root 账号有权修改,其他用户账号只有查看的权限.在最早的Linux版本里 用户密码也是存放在该文件中,但后来随着Linux版本更新,安全策略的改变,用户密码便存放在 /etc/shadow 文件中,相对应在 /etc/passwd 密码那里便以 "x" 加密不显示出来了
[root@localhost ~]# ll /etc/passwd /etc/shadow -rw-r--r--. 1 root root 4082 Aug 1 21:34 /etc/passwd -r--------. 1 root root 4129 Aug 1 21:42 /etc/shadow [root@localhost ~]# getent passwd root;getent shadow root root:x:0:0:root:/root:/bin/bash root:$6$vE3bmjlB$CEUyLn6GEqfgCplYkDi7i6vLSVj8erp9BOoKq2fTvex/8TB4D/rWNzJK9yq1VojZlzooB0D3Aiy.QgJt/ePRN0:17014:0:99999:7::: [root@localhost ~]#
其中: getent passwd USERNAME \\看USERNAME 用户配置信息
1.0 用户账号的管理
在Linux里,进程所能够访问资源的权限取决于进程的运行者的身份
管理员: root UID :0
普通用户: 1-65535
系统用户: 1-499( CentOS 6 ) , 1-999 ( CentOS 7 )
登录用户: 500 +( CentOS 6 ) , 1000+ ( CentOS 7 )
创建用户配置文件 : /etc/default/useradd
# useradd defaults file
GROUP=100 组ID起始号
HOME=/home 放置家目录地址
INACTIVE=-1 账号时效
EXPIRE=
SHELL=/bin/bash shell类型
SKEL=/etc/skel家目录骨架文件
CREATE_MAIL_SPOOL=yes是否开启邮箱服务
用户创建:useradd
useradd [options] LOGIN
-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 不创建私用组做主组,使用users组做主组
-r: 创建系统用户 CentOS 6: ID<500, CentOS 7: ID<1000
用户属性修改: usermod
usermod [OPTION] login
-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: 设定非活动期限;
删除用户:userdel userdel [OPTION]... login
-r: 删除用户家目录;
查看用户相关ID信息: id [OPTION]... [USER]
-u :UID -g : GID -G : Groups -n : Name
密码设置password /etc/login.defs 密码配置文件
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
passwd: 修改自己的密码;
常用选项:
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限;
--stdin:从标准输入接收用户密码;
echo "PASSWORD" | passwd --stdin USERNAME
2.0组管理:
创建组:
groupmems [OPTION]... group_name
-g GID : 致命Gid号 ; -r 创建系统组
centos 6 : ID <500 ; centos 7 : ID <1000
修改和删除组:
组属性修改: groupmod
groupmod [OPTION]... group
-n group_name: 新名字 ; -g GID: 新的GID;
组删除: groupdel
groupdel GROUP
更改组密码:
组密码: gpasswd
gpasswd [OPTION] GROUP
-a user: 将user添加至指定组中;
-d user: 从指定组中移除用户user
-A user1,user2,...: 设置有管理权限的用户列表
newgrp命令:临时切换基本组;如果用户本不属于此组,则需要组密码
更改和查看组成员
groupmems [options] [action]
-g, --group groupname 更改为指定组 (只有root)
Actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
groups [OPTION].[USERNAME]... 查看用户所属组列表
3.0其他
新建用户的相关配置文件和命令:
etc/default/useradd 创建用户配置文件
/etc/skel/* 家目录骨架文件
/etc/login.defs 密码配置文件
newusers passwd格式文件 批量创建用户
chpasswd 批量修改用户口令
密码更改: 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,显示密码策略
下一次登录强制重设密码
chage -d 0 tom ;上次修改密码时间为0
chage -m 0 –M 42 –W 14 –I 7 tom ;密码最短有效时间为0(随时可以修改),密码最长有效时间为42天,系统提前14天提示密码将要时效,密码到时效时间后7天内还可以使用,7天内部修改密码,账号将永久失效
chage -E 2016-09-10 tom ;账号到2016-9-10 失效
修改密码配置文件 /etc/login.defs
4.0批量添加用户名
批量添加用户步骤
1 : 建一个文档file1,内容格式为 lg:x:1000:1000:lg:/home/lg:/bin/bash
2 : #newusers file
3 : 回复家目录文件,文件架构在 /etc/skel . 注意,不要将/etc/skel 下 .. 文件复制
4 : 按格式 userName:password 将用户与密码保存在文档中,运行命令 #cat file > chpasswd 批量修改命令 (也可以单个修改 : #echo "password" |passwd --stdin userName )
原文地址:http://lgdong.blog.51cto.com/11880698/1833555