程序员在旅途

用这生命中的每一秒,给自己一个不后悔的未来!

0%

Linux用户管理

一、Linux用户管理综述

1.1 了解Linux用户

Linux是一个多用户、多任务的的操作系统,为了实现资源管理及出于安全的考虑,需要对用户进行不同权限的分配,同时通过对用户进行划分成组便于更高效地管理用户权限。
Linux 系统在/etc/passwd文件存储了系统中所有用户的基本信息,该文件是系统用户配置文件。/etc/passwd对系统所有用户可读,只有系统管理员才可以修改的。
除了用户信息文件外,系统中记录与用户相关信息的文件还包括:

/etc/passwd:用户及其属性信息(名称、UID、基本组ID等等);
/etc/group:组及其属性信息;
/etc/shadow:用户密码及其相关属性;
/etc/gshadow:组密码及其相关属性;

/etc/passwd文件内容解读:

root@ecs:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
……..

/etc/passwd文件中的每个用户都有一个对应的记录行,记录着这个用户的一下基本属性。,每行记录又被冒号(:)分隔为7个字段,其格式 和具体含义如下:

第一列为用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
第二列为密码占位符:(x表示该账户需要密码才能登录,为空时,账户无须密码即可登录),
第三列为用户的UID:每个用户都有唯一的一个 UID,Linux 系统通过 UID 来识别不同的用户,UID 就是一个 0~65535 之间的数,不同范围的数字表示不同的用户身份;
第七列为账户登录Shell:/bin/bash为可登录系统Shell,/sbin/nologin表示账户无法登录系统。

另外可以看到,除了常见的root等用户外,Linux 系统中默认会创建一些系统或服务正常运行所必需的用户,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求,这种用户通常称为系统用户或伪用户。系统用户无法用来登录系统,但也不能删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题。
常见的伪用户有:

bin 拥有可执行的用户命令文件
sys 拥有系统文件
adm 拥有帐户文件
nobody NFS使用

1.2 Linux用户分类

在Linux中,为了更好地控制不同用户对系统的操作管理,对系统中的用户进行了分类管理,一般分为三类:

管理员:系统的管理员用户,UID为0,通常命名为root。
系统用户:UID为1~999,Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会由独立的系统用户负责运行,进而有效控制被破坏范围。
普通用户:由管理员创建的用于日常工作的用户,UID从1000开始。

为了方便管理属于同一组的用户,Linux系统中还引入了用户组的概念。通过使用用户组号码(GID,Group IDentification),可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。另外,在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳到其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。

还可以使用SUID、SGID与SBIT特殊权限更加灵活地设置系统权限,来弥补对文件设置一般操作权限时所带来的不足。文件访问控制列表(Access Control List,ACL)可以进一步让单一用户、用户组对单一文件或目录进行特殊的权限设置,让文件具有能满足工作需求的最小权限。
SUID权限简介:

1.只有可以执行的二进制程序文件才能设定SUID权限,非二进制文件设置SUID权限没任何意义.
2.命令执行者要对该程序文件拥有执行(x)权限.
3.命令执行者在执行该程序时获得该程序文件属主的身份.
4.SUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

1.3Linux安全上下文

用户操作Linux需要经过三个步骤的权限认证:

Authentication:认证
Authorization:授权
Accouting:审计

Linux中的进程以进程发起者的身份运行,进程所能够访问的所有资源的权限取决于进程的发起者的身份;

二、用户和组相关命令

2.1 查看用户属性信息:id

id命令用于显示用户的详细信息

id [用户名]

2.2 用户创建:useradd

useradd 选项 用户名

options:

-d 家目录
-e 到期时间
-u uid
-g 用户组
-s 默认shell解释器

示例:

1
useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe

2.3 用户删除:useradd

常用的选项是 -r,它的作用是把用户的主目录一起删除
示例:

1
userdel -r sam

此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

2.4 用户修改:usermod

usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

示例:

1
usermod -s /bin/ksh -d /home/z –g developer sam

2.5 密码修改:passwd

passwd 选项 用户名
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
options:

-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。

2.6 组创建:groupadd

groupadd 选项 用户组
选项:

-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

示例:
向系统中增加了一个新组group2,同时指定新组的组标识号是101。

1
groupadd -g 101 group2

2.7 组修改:usermod

groupmod 选项 用户组
常用的选项有:

-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

1
groupmod –g 10000 -n group3 group2

2.8 组删除:groupdel

groupdel 用户组