用户类型除root用户外,Linux账户(用户)一般分为两种,系统账户和普通账户。系统账户主要用于运行特定的守护程序。比如我们添加特殊的Linux用户www和mysql来运行Nginx和MySQL。这是为了方便控制??程序权限(即运行该程序的账号的权限),防止攻击者能够在系统中执行任意其他操作。系统账户一般将其登录shell设置为/sbin/nologin,即不能通过shell登录。使用系统账户运行程序的一般方式是通过sudo以系统账户启动程序。普通账户是分配给Linux系统用户的账户。默认情况下,添加用户时,将为用户创建主目录和邮件假脱机(/var/mail/username),但系统帐户不会。普通账号uid>=1000,系统账号uid<1000添加用户默认情况下(不指定options),创建用户的同时会创建一个与账号同名的用户组,这个用户组将被指定为帐户的主要组(此处称为主要用户组)。一个用户可以属于多个用户组,只能指定一个主组,即用户的默认组,即用户创建文件后该文件的组属性值。主要组以外的组是补充组(这里称为附加用户组)。命令:$useradd[options]LOGIN_NAME常用的选项有:-r创建系统账户,不会创建家目录-s指定登录shell,默认为/bin/bash,可以指定为/sbin/nologin-g为用户指定其他主用户组,如果不指定,将创建一个与用户同名的组作为其主用户组。-G为用户指定一个额外的用户组,可以有多个。如果通过usermod命令给用户增加一个额外的用户组,可以加上-a参数:$usermod-a-GGROUP_NAMELOGIN_NAME用户和用户组相关的系统文件Linux(这里更准确的说应该是GNU/Linux.PureLinux常指Linux内核,为了方便,本文将Linux发行版或GNU/Linux统称为Linux,请指正)用户数据库以文件形式存储在/etc/下,所以有时我们可以不使用命令直接操作文件来添加/修改/删除用户,但最好不要这样做,以免格式不正确。/etc/passwd用户账号信息/etc/shadow用户密码信息/etc/group用户组信息/etc/sudoers指定可以执行sudo命令的用户...[root@centos~]#ll/etc/passwd/etc/影子/etc/group/etc/sudoers-rw-r--r--.1rootroot464Jan1912:57/etc/group-rw-r--r--.1rootroot882Jan1912:57/etc/passwd--------.1rootroot812Jan1912:57/etc/shadow-r--r-----.1rootroot4328Jan1912:57/etc/sudoers查看相关文件权限,可见除root用户外的其他用户无法操作用户账号数据。如果普通用户可以随意删除和修改用户账号,就会出现很多问题,这显然是不允许的。用户登录后的shell[root@centos~]#grepxvrzhao/etc/passwdxvrzhao:x:1000:1000::/home/xvrzhao:/bin/bashfile/etc/passwd每一行是一个账号信息,不同的Attributes分开by:,最后一个属性是登录shell,默认为/bin/bash。可以直接修改/etc/passwd文件,也可以在通过useradd或usermod命令添加用户时指定(-s参数)或修改用户登录shell。系统会为每个登录的用户分配一个shell环境,作为用户与操作系统交互的一种方式。常见的shell环境包括sh、bash、zsh等,用户登录后,系统会为当前的Shell环境设置一些环境变量(可以理解为session),首先读取/etc/profile设置,然后阅读~/.bash_profile设置。前者是全局设置,影响每个用户,后者是个人设置,只影响个体(详见鸟哥Linux私房菜相关章节)。设置用户密码添加用户后,无法通过新用户登录,因为没有为其设置登录密码。passwd[OPTION...]
