1、 用户和用户组的介绍

1.1 用户介绍

1.1.1 Linux系统的安全

1)如果一个团队来管理服务器,每个人的权限都是root账户,如果有人不熟悉Linux,那么对服务器威胁就会相当大,后果也是灾难性的。 Linux是出了名的对安全要求较高的系统,所以用户的权限等级制度和操作规范管理的很严格。
2)多用户系统从事实来说对系统管理更为方便。从安全角度来说,多用户管理的系统更为安全,比如张三用户的某个文件不想让别人看到,李四的文件不想让别人编辑,只需要设置用户的相关文件属性即可。用户权限不同完成的工作内容也不同。

1.1.2 Linux是多用户多任务的系统

1)例如,某台 Linux 服务器上有 4 个用户,分别是 root、www、ftp 和 mysql,在同一时间内,root 用户可能在查看系统日志、管理维护系统;www 用户可能在修改自己的网页程序;ftp 用户可能在上传软件到服务器;mysql 用户可能在执行自己的 SQL 查询,每个用户互不干扰,有条不紊地进行着自己的工作。与此同时,每个用户之间不能越权访问,比如 www 用户不能执行 mysql 用户的 SQL 查询操作,ftp 用户也不能修改 www 用户的网页程序。

1.1.3 Linux的用户角色划分

1)用户在系统中是分角色的,在Linux 系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性,事实上,Linux系统采用一个32位的整数记录和区分不同的用户,这意味着系统可以记录多达40亿个不同的用户。
2)root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;
3)虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、profix等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
4)普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;sudo
5)如果您想了解Linux系统的一些帐号,请查看 /etc/passwd ;

1.1.4 用户组介绍

1)用户组是具有相同特征用户的逻辑集合。简单的理解,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有 10 个用户的话,就需要授权 10 次,那如果有 100、1000 甚至更多的用户呢?
显然,这种方法不太合理。最好的方式是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中。那么,所有用户就具有了和组一样的权限,这就是用户组。

1.2 创建用户

1.2.1 用户与组的关系。

一对一:一个用户可以存在一个组中,是组中的唯一成员;
一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。

1.2.2 用户UID

用户UID标识范围
1)在Linux系统中,1000以下的UID是系统保留的UID,随意修改系统上某些帐号的 UID 很可能会导致某些程序无法进行
2)通常普通用户的UID大于1000,因为在添加普通用户时,系统默认用户ID从1000开始编号。
0:超级用户
1-999:系统用户
1000-60000:创建用户范围

1.2.3 创建用户命令

useradd用法

  1. useradd 选项 用户名
  2. 参数:
  3. -c comment 指定一段注释性描述。
  4. -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,能创建主目录。
  5. -g 用户组 指定用户所属的用户组。默认创建一个和自己用户同名的组
  6. -G 用户组,用户组 指定用户所属的附加组。
  7. -s Shell文件 指定用户的登录Shell。默认用的shell /bin/bash,不让登录指定/sbin/nologin
  8. -u 用户号 指定用户的用户号,如果同时有-o选项,则能重复使用其他用户的标识号。
  9. #举例

1.2.4 修改用户

usemod用法

usermod 参数 用户名
参数:
 -c 说明
 -g 用户组 初始用户组
 -G 用户组 其他用户组
 -l 修改用户名
 -L 锁定账号(在/etc/shadow文件中用户对应密码密码串的前面加上两个叹号(!!))
 -U 解锁
删除用户:

1.2.5 删除用户

usedel用法

userdel 参数 用户名
参数:
-r  为删除用户的home目录

1.2.6 修改密码

passwd用法

passwd相关参数操作:
passwd 用户名 直接修改密码
-l 锁用户
-u 解锁用户

1.3 创建用户牵扯到的文件

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

1.3.1 /etc/passwd

文件格式:
用户名:密码:UID:GID:用户信息:HOME目录路径:用户shell
其中UID为0则是用户root,1~499为系统用户,500以上为普通用户

1.3.2 /etc/shadow

保存用户密码信息,包括加密后的密码,密码过期时间,密码过期提示天数等。

1.3.3 /etc/skel

目录下的文件,一般是我们用useradd 和adduser 命令添加用户(user)时,系统自动复制到新添加用户(user)的家目录下;如果我们通过修改 /etc/passwd 来添加用户时,我们可以自己创建用户的家目录,然后把/etc/skel 下的文件复制到用户的家目录下,然后要用chown 来改变新用户家目录的属主;

1.3.4 /etc/default/useradd

HOME=/home 注:把用户的家目录建在/home中;
INACTIVE=-1 注:是否启用帐号过期停权,-1表示不启用;
EXPIRE= 注:帐号终止日期,不设置表示不启用;
SHELL=/bin/bash 注:所用SHELL的类型;
SKEL=/etc/skel 注: 默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;

1.3.5 /etc/login.defs

/etc/login.defs 文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID和GID的范围;用户的期限等等,这个文件是可以通过root来定义的;

1.2 用户组介绍

1.2.1组的概念

用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;

1.2.2 创建用户组命令 groupadd

groupadd 用户组名
-g GID 指定新用户组的组标识号(GID)。默认是上一个组的GID+1

1.2.3 修改用户组属性 groupmod

groupmod 选项 用户组名
-g GID 为用户组指定新的组标识号。
-n 新用户组 将用户组的名字改为新名字

1.2.4 删除用户组 groupdel

groupdel GROUP
其中:GROUP 为要删除的组账户名

1.2.5 创建组涉及到的文件

/etc/group
/etc/gshadow