CentOS 7 用户账户配置
@H_502_2@说明: @H_502_2@1、这篇博文记录的是CentOS 7 用户账户的配置,包括添加用户、添加用户组、删除用户、删除用户组等。其中包括分析用户的配置文件、目录以及对安全的思考。 @H_502_2@2、用户配置方面CentOS 7与以往版本感觉没有差别。 @H_502_2@第一部分 认识用户 @H_502_2@ Centos 7 系统最小化安装,默认配置,是没有创建其他用户的。作为服务器操作系统,为了安全起见,一般是使用一般用户。这就牵涉到用户、用户组的创建以及删除。 @H_502_2@此外,CentOS 7 和其他版本的Linux一样,都具有相应用户的配置文件及目录,如下:/etc/@H_502_2@ 我们看一下比较重要的配置文件/etc/default/useradd,内容如下:
#useradddefaultsfile GROUP=100//起始GID值HOME=/home//家目录位置INACTIVE=-1 //有效时间,负值为永久,正数代表天数EXPIRE=SHELL=/bin/bash//shell路径SKEL=/etc/skel//默认配置文件路径CREATE_MAIL_SPOOL=yes//是否创建邮件池,具体作用待以后学习@H_502_2@ 我们再来看一下/etc/login.defs文件,重点内容如下:
MAIL_DIR//spool/mail ... 密码期限配置 PASS_MAX_DAYS99999 PASS_MIN_DAYS0 PASS_MIN_LEN8 PASS_WARN_AGE7 ... 最小/最大UID设置 # UID_MIN1000//我们创建的用户的UID从1000开始 UID_MAX60000 .... # GID_MIN1000 GID_MAX60000 .... CREATE_HOMEyes//是否创建家目录 ... //采用SHA512加密 ENCRYPT_METHODSHA512@H_502_2@ 从文件内容可见,/etc/login.defs是比较宏观的进行偏重安全方面的配置。 @H_502_2@ 下面是一些实际过程中常用的命令:
useradd//添加用户passwd//为用户设置密码userdel//删除用户usermod//修改用户信息groupadd//添加用户组groupdel//删除用户组groupmod//修改用户组信息groups//显示当前进程用户所属的用户组@H_502_2@ @H_502_2@第二部分 创建用户 @H_502_2@例子一: 最简单的创建用户 @H_502_2@执行如下命令: @H_502_2@useradd test @H_502_2@passwd test @H_502_2@ 实例如图,并且系统会对密码做限制,比如长度、复杂度,但是不影响创建。可以理解为“温馨提示”。 @H_502_2@
-b,--base-dirBASE_DIR新账户的主目录的基目录-c,--commentCOMMENT新账户的GECOS字段-d,--home-dirHOME_DIR新账户的主目录-D,--defaults显示或更改默认的useradd配置-e,--expiredateEXPIRE_DATE新账户的过期日期-f,--inactiveINACTIVE新账户的密码不活动期-g,--gidGROUP新账户主组的名称或ID-G,--groupsGROUPS新账户的附加组列表-h,--help显示此帮助信息并推出-k,--skelSKEL_DIR使用此目录作为骨架目录-K,--keyKEY=VALUE不使用/etc/login.defs中的默认值-l,--no-log-init不要将此用户添加到最近登录和登录失败数据库-m,--create-home创建用户的主目录-M,--no-create-home不创建用户的主目录-N,--no-user-group不创建同名的组-o,--non-unique允许使用重复的UID创建用户-p,--passwordPASSWORD加密后的新账户密码-r,--system创建一个系统账户-R,--rootCHROOT_DIRchroot到的目录-s,--shellSHELL新账户的登录shell-u,--uidUID新账户的用户ID-U,--user-group创建与用户同名的组-Z,--selinux-userSEUSER为SELinux用户映射使用指定SEUSER@H_502_2@ 新建一个UID=501,GID=600,30天有效期,家目录为/home/test5的用户test4. @H_502_2@命令 :
groupadd-g600test3//创建GID=600的用户组test3useradd-u501-g600-f30-m-d/home/test5test4@H_502_2@当我们再次打开用户文件/etc/passwd或者id test4会看到我们自己的配置。 @H_502_2@uid=501(test4) gid=600(test3) 组=600(test3)
第三部分 更改用户设置 @H_502_2@ 不同的 用户需要不同的权限,拥有不同的SHELL,是否允许登录。这个部分,就需要用到usermod命令修改用户配置。我们上个例子中创建过一个test账户,默认SHELL是/bin/bash,是可以登录的。 @H_502_2@禁止登录:
usermod-s/sbin/nologintest//-s指定shell@H_502_2@修改用户名: @H_502_2@
usermod-ltest88test//-l新的用户名@H_502_2@此外还可以家目录、过期天数、更换组、锁定用户、解锁用户等功能,可以查看参数实践。 @H_502_2@ @H_502_2@第四部分删除用户/组 @H_502_2@ 当我们创建用户/组有错误时,可能会删除用户/组,然后再重新创建。我们使用userdel命令来删除用户。 @H_502_2@执行命令:
[root@localhosthome]#userdeltest [root@localhosthome]#useraddtest useradd:警告:此主目录已经存在。 不从skel目录里向其中复制任何文件。 正在创建信箱文件:文件已存在@H_502_2@ 出现这个问题是因为我们删除用户时,系统为了安全起见并没有删除相关的文件以及目录。我们查看一下userdel参数:
用法:userdel[选项]登录 选项:-f,--forceforcesomeactionsthatwouldfailotherwise e.g.removalofuserstillloggedin orfiles,evenifnotownedbytheuser-h,--help显示此帮助信息并推出-r,--remove删除主目录和邮件池-R,--rootCHROOT_DIRchroot到的目录-Z,--selinux-user为用户删除所有的SELinux用户映射@H_502_2@ 我们可以使用参数-rf来删除相关文件目录,这一步具有危险性,是否有回滚操作,不是特别清楚。 @H_502_2@执行命令:
[root@localhosthome]#userdel-rftest [root@localhosthome]#useraddtest@H_502_2@ 这样,就不会出现提示了。 @H_502_2@第五部分 用户安全配置 @H_502_2@ 在操作系统安全中,用户权限、文件权限也是非常重要。现在就几个小点记录一下。这次目的主要有禁止root用户连接、一般用户使用sudo命令提权。我们在上个步骤中,创建了一个test用户,当我们输入sudo命令时,会提示如下: @H_502_2@
test不在sudoers文件中。此事将被报告。@H_502_2@ @H_502_2@解决这个问题,我们只需要在/etc/sudoers 中添加用户test即可,代码如下:
//找到如下一行,在下面添加即可..... rootALL=(ALL)ALLtestALL=(ALL)ALL//这一行是添加的@H_502_2@到这里应该就可以解决问题了。 @H_502_2@新增:在虚拟机里面重新安装了一个CentOS 7,实验了一下,确实可以成功。下面是/etc/sudoers 属性: @H_502_2@
//修改文件/usr/bin/sudo用户及用户组chownroot:root/usr/bin/sudo//修改权限为4755,其中4代表以文件所有者执行chmod4755/usr/bin/sudo@H_502_2@上面的命令意思是,将文件/usr/bin/sudo拥有者改为root,当执行时以root身份执行,这也是‘4’的含义。如果设置权限时,勿把“4755” 配置为755,就会出现这个错误。
sudo:有效用户ID不是0,sudo属于root并设置了setuid位吗?@H_502_2@解决方法呢,就是刚才说的以root(uid=0)身份运行。 @H_502_2@在实际环境中,为了防止黑客对root账户进行暴力破解,我们通常禁止root账户SSH远程连接。操作如下:
systemctlrestartsshd.service@H_502_2@备注:CentOS 7 取消了service 用法,尽管部分情况下还可以使用,但是我就先使用systemctl吧。 @H_502_2@ 除此之外,我觉得最重要的还是不同用户间的权限分配问题。先暂时留下来,以后根据实际情况添加笔记。 @H_502_2@ 大家,还可以根据参数,依据实际情况配置。大家可以相互交流。