Linux 是一个多用户的操作系统,引入用户,可以更加方便管理 Linux 服务器,系统默认需要以一个用户的身份登入,而且在系统上启动进程也需要以一个用户身份去运行,用户可以限制某些进程对特定资源的权限控制。
本章向读者介绍 Linux 系统如何管理创建、删除、修改用户角色、用户权限配置、组权限配置及特殊权限深入剖析。
Linux 用户及组
Linux 操作系统对多用户的管理,是非常繁琐的,所以用组的概念来管理用户就变得简单,每个用户可以在一个独立的组,每个组也可以有零个用户或者多个用户。
Linux 系统用户是根据用户 ID 来识别的,从默认 ID 编号从 0 开始,但是为了和老式系统兼容,用户 ID 限制在 60000 以下, Linux 用户分总共分为三种,分别如下:
q root 用户 ( ID 0 )
q 系统用户 ( ID 1-499 )
q 普通用户 ( ID 500 以上)
Linux 系统中的每个文件或者文件夹,都有一个所属用户及所属组,使用 id 命令可以显示当前用户的信息,使用 passwd 命令可以修改当前用户密码。 Linux 操作系统用户的特点如下:
q 每个用户拥有一个 UserID ,操作系统实际读取的是 UID ,而非用户名;
q 每个用户属于一个主组,属于一个或多个附属组,一个用户最多有 31 个附属组;
q 每个组拥有一个 GroupID ;
q 每个进程以一个用户身份运行,该用户可对进程拥有资源控制权限;
q 每个可登陆用户拥有一个指定的 Shell 环境。
Linux 用户管理
Linux 用户在操作系统可以进行日常管理和维护,涉及到的相关配置文件如下:
q /etc/passwd 保存用户信息
q /etc/shdaow 保存用户密码(以加密形式保存)
q /etc/group 保存组信息
q /etc/login.defs 用户属性限制 , 密码过期时间 , 密码最大长度等限制
q /etc/default/useradd 显示或更改默认的 useradd 配置文件
如需创建新用户,可以使用命令 useradd ,执行命令 useradd jfedu1 即可创建 jfedu1 用户,同时会创建一个同名的组 jfedu1 ,默认该用户属于 jfedu1 主组。
Useradd jfedu1 命令默认创建用户 jfedu1 ,会根据如下步骤进行操作:
q 读取 /etc/default/useradd ,根据配置文件执行创建操作;
q 在 /etc/passwd 文件中添加用户信息;
q 如使用 passwd 命令创建密码,密码会被加密保存在 /etc/shdaow 中;
q 为 jfedu1 创建家目录: /home/jfedu1 ;
q 将 /etc/skel 中的 .bash 开头的文件复制至 /home/jfedu1 家目录;
q 创建与用户名相同的 jfedu1 组, jfedu1 用户默认属于 jfeud1 同名组;
q Jfedu1 组信息保存在 /etc/group 配置文件中。
在使用 useradd 命令创建用户时,可以支持如下参数:
用法:useradd [选项] 登录 useradd -D useradd -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 案例演示:
(1) 新建 jfedu 用户,并加入到 jfedu1 , jfedu2 附属组;
useradd -G jfedu1,jfedu2 jfedu |
(2) 新建 jfedu3 用户,并指定新的家目录,同时指定其登陆的 SHELL ;
useradd jfedu3 -d /tmp/ -s /bin/bash |
Linux 组管理
所有的 Linux 或者 Windows 系统都有组的概念,通过组可以更加方便的管理用户,组的概念应用于各行行业,例如企业会使用部门、职能或地理区域的分类方式来管理成员,映射在 Linux 系统,同样可以创建用户,并用组的概念对其管理。
Linux 组有如下特点:
q 每个组有一个组 ID ;
q 组信息保存在 /etc/group 中;
q 每个用户至少拥有一个主组,同时还可以拥有 31 个附属组。
通过命令 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 案例演示:
(1) groupadd 创建 jingfeng 组
groupadd jingfeng |
(2) groupadd 创建 jingfeng 组,并指定 GID 为 1000 ;
groupadd -g 1000 jingfeng |
(3) groupadd 创建一个 system 组,名为 jingfeng 组
groupadd -r jingfeng |
Groupmod 案例演示:
(4) groupmod 修改组名称,将 jingfeng 组名,改成 jingfeng1 ;
groupmod -n jingfeng1 jingfeng |
(5) groupmod 修改组 GID 号,将原 jingfeng1 组 gid 改成 gid 1000 ;
groupmod –g 1000 jingfeng1 |
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 案例演示:
(1) 将 jfedu 用户属组修改为 jfedu1 , jfedu2 附属组;
usermod -G jfedu1,jfedu2 jfedu |
(2) 将 jfedu 用户加入到 jfedu3 , jfedu4 附属组, -a 为添加新组,原组保留;
usermod –a -G jfedu3,jfedu4 jfedu |
(3) 修改 jfedu 用户,并指定新的家目录,同时指定其登陆的 SHELL ;
usermod -d /tmp/ -s /bin/sh jfedu |
(4) 将 jfedu 用户名修改为 jfedu1 ;
usermod -l jfedu1 jfedu |
(5) 锁定 jfedu1 用户及解锁 jfedu1 用户方法;
usermod –L jfedu1 usermod -U jfedu1 |
Userdel 案例演示:
使用 userdel 可以删除指定用户及其用户的邮箱目录或者 Selinux 映射环境:
q userdel jfedu1 保留用户的家目录;
q userdel -r jfedu1 删除用户及用户家目录,用户 login 系统无法删除;
q userdel -rf jfedu1 强制删除用户及该用户家目录,不论是否 login 系统。
Linux 权限 管理
Linux 权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。
Linux 每个进程都是以某个用户身份运行,进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限就越大。
Lnux 中有的文件及文件夹都有至少权限三种权限,常见的权限如表 5-1 所示 :
权限 | 对文件的影响 | 对目录的影响 |
r(读取) | 可读取文件内容 | 可列出目录内容 |
w(写入) | 可修改文件内容 | 可在目录中创建删除内容 |
x(执行) | 可作为命令执行 | 可访问目录内容 |
目录必须拥有x权限,否则无法查看其内容 |
表 5-1 Linux 文件及文件及权限
Linux 权限授权,默认是授权给三种角色,分别是 user 、 group 、 other , Linux 权限与用户之间的关联如下:
q U 代表 User , G 代表 Group , O 代表 Other ;
q 每个文件的权限基于 UGO 进行设置;
q 权限三位一组( rwx ),同时需授权给三种角色, UGO ;
q 每个文件拥有一个所属用户和所属组,对应 UGO ,不属于该文件所属用户或所属组使用 O 来表示;
在 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 目录属性参数详解如下:
q d 表示目录,同一位置如果为 - 则表示普通文件;
q rwxrwxr-x 表示三种角色的权限,每三位为一种角色,依次为 u , g , o 权限,如上则表示 user 的权限为 rwx , group 的权限为 rwx , other 的权限为 r-x ;
q 2 表示文件夹的链接数量,可理解为该目录下子目录的数量;
q 从左到右,第一个 jfedu1 表示该用户名,第二个 jfedu1 则为组名,其他人角色默认不显示;
q 4096 表示该文件夹占据的字节数;
q Dec 10 01:36 表示文件创建或者修改的时间;
q Jfedu.net 为目录的名,或者文件名。
Chown 属主及属组
修改某个用户、组对文件夹的属主及属组,用命令 chown 实现,案例演示如下:
(1) 修改 jfedu.net 文件夹所属的用户为 root ,其中 -R 参数表示递归处理所有的文件及子目录。
chown -R root jfedu.net |
(2) 修改 jfedu.net 文件夹所属的组为 root 。
chown -R :root jfedu.net或者chgrp –R root jfedu.net |
(3) 修改 jfedu.net 文件夹所属的用户为 root ,组也为 root 。
chown -R root:root jfedu.net |
Chmod 用户及组权限
修改某个用户、组对文件夹的权限,用命令 chmod 实现,其中以代指 ugo ,、 - 、 = 代表加入、删除和等于对应权限,具体案例如下:
(1) 授予用户对 jfedu.net 目录拥有 rwx 权限
chmod –R u+rwx jfedu.net |
(2) 授予组对 jfedu.net 目录拥有 rwx 权限
chmod –R g+rwx jfedu.net |
(3) 授予用户、组、其他人对 jfedu.net 目录拥有 rwx 权限
chmod –R u+rwx,g+rwx,o+rwx jfedu.net |
(4) 撤销用户对 jfedu.net 目录拥有 w 权限
chmod –R u-w jfedu.net |
(5) 撤销用户、组、其他人对 jfedu.net 目录拥有 x 权限
chmod –R u-x,g-x,o-x jfedu.net |
(6) 授予用户、组、其他人对 jfedu.net 目录只有 rx 权限
chmod –R u=rx,g=rx,o=rx jfedu.net |
Chmod 二进制权限
Linux 权限默认使用 rwx 来表示,为了更简化在系统中对权限进行配置和修改, Linux 权限引入二进制表示方法,如下代码:
Linux权限可以将rwx用二进制来表示,其中有权限用1表示,没有权限用0表示; Linux权限用二进制显示如下: rwx=111 r-x=101 rw-=110 r--=100 依次类推,转化为十进制,对应十进制结果显示如下: rwx=111=4+2+1=7 r-x=101=4+0+1=5 rw-=110=4+4+0=6 r--=100=4+0+0=4 得出结论,用r=4,w=2,x=1来表示权限。 |
使用二进制方式来修改权限案例演示如下,其中默认 jfedu.net 目录权限为 755 :
(1) 授予用户对 jfedu.net 目录拥有 rwx 权限
chmod –R 755 jfedu.net |
(2) 授予组对 jfedu.net 目录拥有 rwx 权限
chmod –R 775 jfedu.net |
(3) 授予用户、组、其他人对 jfedu.net 目录拥有 rwx 权限
chmod –R 777 jfedu.net |
(4) 撤销用户对 jfedu.net 目录拥有 w 权限
chmod –R 555 jfedu.net |
(5) 撤销用户、组、其他人对 jfedu.net 目录拥有 x 权限
chmod –R 644 jfedu.net |
(6) 授予用户、组、其他人对 jfedu.net 目录只有 rx 权限
chmod –R 555 jfedu.net |
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论