说明:

1、这篇博文记录的是CentOS 7 用户账户的配置,包括添加用户、添加用户组、删除用户、删除用户组等。其中包括分析用户的配置文件、目录以及对安全的思考。

2、用户配置方面CentOS 7与以往版本感觉没有差别。

第一部分 认识用户

  Centos 7 系统最小化安装,默认配置,是没有创建其他用户的。作为服务器操作系统,为了安全起见,一般是使用一般用户。这就牵涉到用户、用户组的创建以及删除。

此外,CentOS 7 和其他版本的Linux一样,都具有相应用户的配置文件及目录,如下:

  1. /etc/passwd    //用户账户信息,可以看出用户名称
    /etc/shadow //用户账户加密后信息,包括但不限于/etc/passwd中的信息
    /etc/group //组账户信息,可以看出组名称
    /etc/gshadow     //组账户安全信息,包括但不限于/etc/group中的信息
    /etc/default/useradd //账户创建时默认值
    /etc/skel/ //包含默认文件的目录,具体作用尚不清楚
    /etc/login.defs //安全性的默认配置,与上面/etc/default/useradd有区别

  我们看一下比较重要的配置文件/etc/default/useradd,内容如下:

  1. # useradd defaults file
  2. GROUP=100 //起始GID值
  3. HOME=/home //家目录位置
  4. INACTIVE=-1             //有效时间,负值为永久,正数代表天数
  5. EXPIRE=
  6. SHELL=/bin/bash //shell路径
  7. SKEL=/etc/skel //默认配置文件路径
  8. CREATE_MAIL_SPOOL=yes //是否创建邮件池,具体作用待以后学习

  我们再来看一下/etc/login.defs文件,重点内容如下:

  1. MAIL_DIR /var/spool/mail
    ...
  2.  
  3. # Password aging controls: 密码期限配置
    #
    #       PASS_MAX_DAYS   Maximum number of days a password may be used.
    #       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
    #       PASS_MIN_LEN    Minimum acceptable password length.
    #       PASS_WARN_AGE   Number of days warning given before a password expires.
    #
    PASS_MAX_DAYS   99999
    PASS_MIN_DAYS   0
    PASS_MIN_LEN    8
    PASS_WARN_AGE   7
    ...
  4.  
  5. # Min/max values for automatic uid selection in useradd 最小/最大UID设置
    #
    UID_MIN                  1000 //我们创建的用户的UID从1000开始
    UID_MAX                 60000
    ....
  6.  
  7. # Min/max values for automatic gid selection in groupadd
    #
    GID_MIN                  1000
    GID_MAX                 60000
    ....
    CREATE_HOME     yes //是否创建家目录
    ...
  8.  
  9. # Use SHA512 to encrypt password. //采用SHA512加密
    ENCRYPT_METHOD SHA512

  从文件内容可见,/etc/login.defs 是比较宏观的进行偏重安全方面的配置。

  下面是一些实际过程中常用的命令:

  1. useradd //添加用户
  2. passwd //为用户设置密码
  3. userdel //删除用户
  4. usermod //修改用户信息
  5. groupadd //添加用户组
  6. groupdel //删除用户组
  7. groupmod //修改用户组信息
  8. groups //显示当前进程用户所属的用户组

第二部分  创建用户

例子一: 最简单的创建用户

执行如下命令:

useradd test

passwd test

  实例如图,并且系统会对密码做限制,比如长度、复杂度,但是不影响创建。可以理解为“温馨提示”。

  这样一个用户名为test的用户已经创建好了。我们看一下属性。

  执行命令:id test   //查看用户信息

  我们发现test的uid=1000,gid=1000,位于test用户组,说明缺参数的新建用户,会默认新建一个与用户名同名的用户组并加入其中,我们也注意到UID、GID的值与默认的配置文件中保持一致,可见配置文件是生效的,同样也可以再新建一个用户,看一下UID、GID的值,会看到是1001.可以尝试一下。我们可以切到/home目录下,会看到用户目录,与配置文件设定一致。

例子二:带参数的创建账户

  上个例子我们采用默认配置,只是设置了用户名和密码。这次我们手动设置UID、GID等。首先我们看一下,useradd的参数,如下:

  1.  -b, --base-dir BASE_DIR 新账户的主目录的基目录
  2. -c, --comment COMMENT 新账户的 GECOS 字段
  3. -d, --home-dir HOME_DIR 新账户的主目录
  4. -D, --defaults 显示或更改默认的 useradd 配置
  5. -e, --expiredate EXPIRE_DATE 新账户的过期日期
  6. -f, --inactive INACTIVE 新账户的密码不活动期
  7. -g, --gid GROUP 新账户主组的名称或 ID
  8. -G, --groups GROUPS 新账户的附加组列表
  9. -h, --help 显示此帮助信息并推出
  10. -k, --skel SKEL_DIR 使用此目录作为骨架目录
  11. -K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
  12. -l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
  13. -m, --create-home 创建用户的主目录
  14. -M, --no-create-home 不创建用户的主目录
  15. -N, --no-user-group 不创建同名的组
  16. -o, --non-unique 允许使用重复的 UID 创建用户
  17. -p, --password PASSWORD 加密后的新账户密码
  18. -r, --system 创建一个系统账户
  19. -R, --root CHROOT_DIR chroot 到的目录
  20. -s, --shell SHELL 新账户的登录 shell
  21. -u, --uid UID 新账户的用户 ID
  22. -U, --user-group 创建与用户同名的组
  23. -Z, --selinux-user SEUSER SELinux 用户映射使用指定 SEUSER

  新建一个UID=501,GID=600,30天有效期,家目录为/home/test5的用户test4.

命令 :

  1. groupadd -g test3 //创建GID=600的用户组test3
  2. useradd -u -g -f -m -d /home/test5 test4

当我们再次打开用户文件/etc/passwd或者id test4会看到我们自己的配置。

uid=501(test4) gid=600(test3) 组=600(test3)
第三部分 更改用户设置

  不同的 用户需要不同的权限,拥有不同的SHELL,是否允许登录。这个部分,就需要用到usermod命令修改用户配置。我们上个例子中创建过一个test账户,默认SHELL是/bin/bash,是可以登录的。

禁止登录:

  1. usermod -s /sbin/nologin test //-s 指定shell

修改用户名:

  1. usermod -l test88 test //-l 新的用户名

此外还可以家目录、过期天数、更换组、锁定用户、解锁用户等功能,可以查看参数实践。

第四部分 删除用户/组

  当我们创建用户/组有错误时,可能会删除用户/组,然后再重新创建。我们使用userdel命令来删除用户。

执行命令:

  1. [root@localhost home]# userdel test
  2. [root@localhost home]# useradd test
  3. useradd:警告:此主目录已经存在。
  4. 不从 skel 目录里向其中复制任何文件。
  5. 正在创建信箱文件: 文件已存在

  出现这个问题是因为我们删除用户时,系统为了安全起见并没有删除相关的文件以及目录。我们查看一下userdel参数:

  1. 用法:userdel [选项] 登录
  2.  
  3. 选项:
  4. -f, --force force some actions that would fail otherwise
  5. e.g. removal of user still logged in
  6. or files, even if not owned by the user
  7. -h, --help 显示此帮助信息并推出
  8. -r, --remove 删除主目录和邮件池
  9. -R, --root CHROOT_DIR chroot 到的目录
  10. -Z, --selinux-user 为用户删除所有的 SELinux 用户映射

  我们可以使用参数-rf 来删除相关文件目录,这一步具有危险性,是否有回滚操作,不是特别清楚。

执行命令:

  1. [root@localhost home]# userdel -rf test
  2. [root@localhost home]# useradd test

  这样,就不会出现提示了。

第五部分 用户安全配置

  在操作系统安全中,用户权限、文件权限也是非常重要。现在就几个小点记录一下。这次目的主要有禁止root用户连接、一般用户使用sudo命令提权。我们在上个步骤中,创建了一个test用户,当我们输入sudo命令时,会提示如下:

  1. test不在 sudoers 文件中。此事将被报告。

解决这个问题,我们只需要在/etc/sudoers 中添加用户test即可,代码如下:

  1. //找到如下一行,在下面添加即可
  2. .....
  3. root ALL=(ALL) ALL
  4. test ALL=(ALL) ALL //这一行是添加的

到这里应该就可以解决问题了。

新增:在虚拟机里面重新安装了一个CentOS 7,实验了一下,确实可以成功。下面是/etc/sudoers 属性:

可以看到拥有setUID权限,任何用户都有x(执行)权限,故可以执行sudo命令。下面的内容就当作是对setUID权限的理解。

ps.因为之前按照网上的资料对其他部分进行了设置,但是感觉并不影响,下面贴出修改的部分及其目的

  1. //修改文件 /usr/bin/sudo 用户及用户组
  2. chown rootroot /usr/bin/sudo
  3. //修改权限为4755,其中4代表以文件所有者执行
  4. chmod /usr/bin/sudo

上面的命令意思是,将文件/usr/bin/sudo拥有者改为root,当执行时以root身份执行,这也是‘4’的含义。如果设置权限时,勿把“4755” 配置为755,就会出现这个错误。

  1. sudo:有效用户 ID 不是 sudo 属于 root 并设置了 setuid 位吗?

解决方法呢,就是刚才说的以root(uid=0)身份运行。

在实际环境中,为了防止黑客对root账户进行暴力破解,我们通常禁止root账户SSH远程连接。操作如下:

  1. //修改 /etc/ssh/sshd.config 文件,

  2. #PermitRootLogin yes
  3. 修改为
  4. PermitRootLogin no
  5.  
  6. //重启sshd服务
  7. systemctl restart sshd.service

备注:CentOS 7 取消了service 用法,尽管部分情况下还可以使用,但是我就先使用systemctl吧。

  除此之外,我觉得最重要的还是不同用户间的权限分配问题。先暂时留下来,以后根据实际情况添加笔记。

  大家,还可以根据参数,依据实际情况配置。大家可以相互交流。

CentOS 7 用户账户配置的更多相关文章

  1. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  2. CentOS FTP基于虚拟用户的配置

    详细可以看:http://www.linuxidc.com/Linux/2013-12/94242.htm 所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的.虚拟用户不能登录 ...

  3. ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(三)—用户账户及cookie配置

    修改用户账户及cookie配置 一.修改密码强度和用户邮箱验证规则: 打开Startup.cs,找到public void ConfigureServices(IServiceCollection s ...

  4. MongoDB学习(配置用户账户和访问控制)

    理解admin数据库 安装MongoDB时,会自动创建admin数据库,这是一个特殊的库.有些用户账户角色赋予用户操作多个数据库的权限,而这些用户只能在admin数据库中创建.要创建有权操作所有数据库 ...

  5. CentOS 7.0安装配置Vsftp服务器

    一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...

  6. CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL)

    CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL) 一.准备篇: /etc/init.d/iptables stop #关闭防火墙 关闭SELINUX vi /etc/sel ...

  7. 如何在 CentOS 7 用 cPanel 配置 Nginx 反向代理

    导读 Nginx 是最快和最强大的 Web 服务器之一,以其高性能和低资源占用率而闻名.它既可以被安装为一个独立的 Web 服务器,也可以安装成反向代理 Web 服务器.在这篇文章,我将讨论在安装了 ...

  8. CentOS 7.0安装配置Vsftp服务器步骤详解

    安装Vsftp讲过最多的就是在centos6.x版本中了,这里小编看到有朋友写了一篇非常不错的CentOS 7.0安装配置Vsftp服务器教程,下面整理分享给各位. 一.配置防火墙,开启FTP服务器需 ...

  9. 【转发】【linux】【ftp】CentOS 7.0安装配置Vsftp服务器

    adduser -d /var/www/android -g ftp -s /sbin/nologin ftp2 一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firew ...

随机推荐

  1. Golang学习 - unicode/utf8 包

    ------------------------------------------------------------ // 编码所需的基本数字 const ( RuneError = '\uFFF ...

  2. archlinux随记

    xrdb -merge .Xresources才能使urxvt的配色显示正常 xpmroot 包含在fvwm包中

  3. Booting ARM Linux

    来源:linux-2.6.30.4/Documentation/arm/Booting ARM Linux Booting ARM Linux            ================= ...

  4. spring mvc 接收页面表单List

    很少写博客,如果写的不好请多多包涵! 最近在用Spring mvc时遇到一个问题,在网上搜了很多资料.几乎没看到解决办法! 例如:当我们在做批量添加或者更新时,在Controller层接收表单数据的问 ...

  5. u163是什么故障 佳能MX328 u163是什么意思?墨水打完了,我加了墨水后还是显示U163(请检查墨水-彩色)警告灯亮

    U163:墨水已用完.请更换墨盒,然后关闭“扫描单元”(“机盖”).如果打印正在进行并希望继续打印,请在不取出墨盒的情况下按 [Stop] (停止) 按钮至少 5 秒. 然后可以在墨水用完的情况下继续 ...

  6. remove all .git files and directories use one command

    find . -type d -name ".git" | xargs rm -rf

  7. 使用SourceTree

    SourceTree是个git的GUI软件. 教程将“使用Git”那个小节可视化,更为直观. 第一次启动的时候选择忽略,然后直接进入界面.  填入git地址与注册邮箱即可 例如mindset这本书的g ...

  8. TaskUtil多线程与定时任务

    package com.taoban.util; /**  * 执行单次任务或定时任务工具类(用于减少new Thread()和new Timer()的使用)  */ public class Tas ...

  9. Visual Studio 扩展包(.vsix)制作

    前言:上篇介绍了 Visual Studio扩展工具添加与卸载,本编要介绍的是Visual Studio 扩展包(.vsix)的制作. 方法: ①.下载并安装Visual Studio 2010 SD ...

  10. C# Exception的子类Serializable警告

    编译时发出的警告:警告 CA2237[1] 将 [Serializable] 添加到 'HardwareException',原因是此类型实现了 ISerializable. Cause[1] An ...