Linux是一个多用户的操作系统,引入用户,可以更加方便管理Linux服务器,系统默认需要以一个用户的身份登入,而且在系统上启动进程也需要以一个用户身份去运行,用户可以限制某些进程对特定资源的权限控制。
本章向读者介绍Linux系统如何管理创建、删除、修改用户角色、用户权限配置、组权限配置及特殊权限深入剖析。
1 Linux用户及组
Linux操作系统对多用户的管理,是非常繁琐的,所以用组的概念来管理用户就变得简单,每个用户可以在一个独立的组,每个组也可以有零个用户或者多个用户。
Linux系统用户是根据用户ID来识别的,从默认ID编号从0开始,但是为了和老式系统兼容,用户ID限制在60000以下,Linux用户分总共分为三种,分别如下:
Linux系统中的每个文件或者文件夹,都有一个所属用户及所属组,使用id命令可以显示当前用户的信息,使用passwd命令可以修改当前用户密码。Linux操作系统用户的特点如下:
2 Linux用户管理
Linux用户在操作系统可以进行日常管理和维护,涉及到的相关配置文件如下:
如需创建新用户,可以使用命令useradd,执行命令useradd jfedu1即可创建jfedu1用户,同时会创建一个同名的组jfedu1,默认该用户属于jfedu1主组。
Useradd jfedu1命令默认创建用户jfedu1,会根据如下步骤进行操作:
在使用useradd命令创建用户时,可以支持如下参数:
用法:useradd [选项] 登录useradd -Duseradd -D [选项]选项:-b, –base-dir BASE_DIR 指定新账户的家目录;-c, –comment COMMENT 新账户的 GECOS 字段;-d, –home-dir HOME_DIR 新账户的主目录;-D, –defaults 显示或更改默认的 useradd 配置;-e, –expiredate EXPIRE_DATE 新账户的过期日期;-f, –inactive INACTIVE 新账户的密码不活动期;-g, –gid GROUP 新账户主组的名称或ID;-G, –groups GROUPS 新账户的附加组列表;-h, –help 显示此帮助信息并推出;-k, –skel SKEL_DIR 使用此目录作为骨架目录;-K, –key KEY=VALUE 不使用 /etc/login.defs 中的默认值;-l, –no-log-init 不要将此用户添加到最近登录和登录失败数据库;-m, –create-home 创建用户的主目录;-M, –no-create-home 不创建用户的主目录;-N, –no-user-group 不创建同名的组;-o, –non-unique 允许使用重复的 UID 创建用户;-p, –password PASSWORD 加密后的新账户密码;-r, –system 创建一个系统账户;-R, –root CHROOT_DIR chroot 到的目录;-s, –shell SHELL 新账户的登录 shell;-u, –uid UID 新账户的用户 ID;-U, –user-group 创建与用户同名的组;-Z, –selinux-user SEUSER 为SELinux 用户映射使用指定 SEUSER。 |
---|
Useradd案例演示:
useradd -G jfedu1,jfedu2 jfedu |
---|
useradd jfedu3 -d /tmp/ -s /bin/bash |
---|
3 Linux组管理
所有的Linux或者Windows系统都有组的概念,通过组可以更加方便的管理用户,组的概念应用于各行行业,例如企业会使用部门、职能或地理区域的分类方式来管理成员,映射在Linux系统,同样可以创建用户,并用组的概念对其管理。
Linux组有如下特点:
通过命令groupadd、groupdel、groupmod来对组进行管理,详细参数使用如下:
groupadd用法-f, –force 如果组已经存在则成功退出;并且如果 GID 已经存在则取消 –g;-g, –gid GID 为新组使用 GID;-h, –help 显示此帮助信息并推出;-K, –key KEY=VALUE 不使用 /etc/login.defs 中的默认值;-o, –non-unique 允许创建有重复 GID 的组;-p, –password PASSWORD 为新组使用此加密过的密码;-r, –system 创建一个系统账户;groupmod用法-g, –gid GID 将组 ID 改为 GID;-h, –help 显示此帮助信息并推出;-n, –new-name NEW_GROUP 改名为 NEW_GROUP;-o, –non-unique 允许使用重复的 GID;-p, –password PASSWORD 将密码更改为(加密过的) PASSWORD;groupdel用法groupdel jfedu 删除jfedu组; |
---|
Groupadd案例演示:
groupadd jingfeng |
---|
groupadd -g 1000 jingfeng |
---|
groupadd -r jingfeng |
---|
Groupmod案例演示:
groupmod -n jingfeng1 jingfeng |
---|
groupmod –g 1000 jingfeng1 |
---|
4 Linux用户及组案例
Useradd主要用于新建用户,而用户新建完毕,可以使用usermod来修改用户及组的属性,如下为usermod详细参数:
用法:usermod [选项] 登录选项:-c, –comment 注释 GECOS 字段的新值;-d, –home HOME_DIR 用户的新主目录;-e, –expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE;-f, –inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态;-g, –gid GROUP 强制使用 GROUP 为新主组;-G, –groups GROUPS 新的附加组列表 GROUPS;-a, –append GROUP 将用户追加至上边 -G 中提到的附加组中,并不从其它组中删除此用户;-h, –help 显示此帮助信息并推出;-l, –login LOGIN 新的登录名称;-L, –lock 锁定用户帐号;-m, –move-home 将家目录内容移至新位置 (仅于 -d 一起使用);-o, –non-unique 允许使用重复的(非唯一的) UID;-p, –password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码;-R, –root CHROOT_DIR chroot 到的目录;-s, –shell SHELL 该用户帐号的新登录shell环境;-u, –uid UID 用户帐号的新UID;-U, –unlock 解锁用户帐号;-Z, –selinux-user SEUSER 用户账户的新SELinux 用户映射。 |
---|
Usermod案例演示:
usermod -G jfedu1,jfedu2 jfedu |
---|
usermod –a -G jfedu3,jfedu4 jfedu |
---|
usermod -d /tmp/ -s /bin/sh jfedu |
---|
usermod -l jfedu1 jfedu |
---|
usermod –L jfedu1usermod -U jfedu1 |
---|
Userdel案例演示:
使用userdel可以删除指定用户及其用户的邮箱目录或者Selinux映射环境:
5 Linux权限管理
Linux权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。
Linux每个进程都是以某个用户身份运行,进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限就越大。
Lnux中有的文件及文件夹都有至少权限三种权限,常见的权限如表5-1所示:
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r(读取) | 可读取文件内容 | 可列出目录内容 |
w(写入) | 可修改文件内容 | 可在目录中创建删除内容 |
x(执行) | 可作为命令执行 | 可访问目录内容 |
目录必须拥有x权限,否则无法查看其内容 |
表5-1 Linux 文件及文件及权限
Linux权限授权,默认是授权给三种角色,分别是user、group、other,Linux权限与用户之间的关联如下:
在Linux系统中,可以通过ls –l查看jfedu.net目录的详细属性,如图5-1所示:
drwxrwxr-x 2 jfedu1 jfedu1 4096 Dec 10 01:36 jfedu.net |
---|
图5-1 Linux jfedu.net目录详细属性
jfedu.net目录属性参数详解如下: