1.1、用户及权限管理
Linux 是一个多用户的操作系统,引入用户,可以更加方便管理 Linux 服务器,系统默认需要以一个用户的身份登入,而且在系统上启动进程也需要以一个用户身份去运行,用户可以限制某些进程对特定资源的权限控制。
接下来介绍如何管理创建、删除、修改用户角色、用户权限配置、组,权限配置及特殊权限深入剖析
1、Linux 用户及组
Linux 操作系统对多用户的管理,是非常繁琐的,所以用组的概念来管理用户就变得简
单,每个用户可以在一个独立的组,每个组也可以有零个用户或者多个用户。
Linux 系统用户是根据用户 ID 来识别的,默认 ID 长度为 32 位,从默认 ID 编号从 0 开始,但是为了和老式系统兼容,用户 ID 限制在 60000 以下,Linux 用户分总共分为三种,分别
如下:
root 用户 (ID 0)
在Linux系统中,root用户UID为0,root用户的权限是最高的,普通用户无法执行的操作,root用户都能完成,所以也被称为超级用户。在Linux系统中的每一个文件、目录和进程都归属于某一个用户,没有用户许可,其它普通用户是无法操作的,但对root用户除外。root用户的特权性还表现在root用户可以超越任何用户和组群对文件或目录进行读取、修改和删除(在系统正常的许可范围内);可以控制对可执行程序的执行和终止;可以对硬件设备进行添加、创建和移除等操作;也可以对文件和目录的属性和权限进行修改,以适合系统管理的需要。
系统用户 (ID 1-499)
系统用户也被称为虚拟用户、伪用户或假用户,这类用户不具有登录Linux系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等,这类用户都是系统自身拥有的。系统用户的UID为1~499。
普通用户 (ID 500 以上)
普通用户能登录系统,在Linux系统上进行普通操作,能操作自己目录的内容,其使用系统的权限受到限制,这类用户都是系统管理员创建的,其UID为500~60000之间。
Linux 系统中的每个文件或者文件夹,都有一个所属用户及所属组,使用 id 命令可以显
示当前用户的信息,使用 passwd 命令可以修改当前用户密码。Linux 操作系统用户的特点
如下:
每个用户拥有一个 UserID,操作系统实际读取的是 UID,而非用户名;
每个用户属于一个主组,属于一个或多个附属组,一个用户最多有 31 个附属组;
每个组拥有一个 GroupID;
每个进程以一个用户身份运行,该用户可对进程拥有资源控制权限;
每个可登陆用户拥有一个指定的 Shell 环境。
2、Linux 用户管理
Linux 用户在操作系统可以进行日常管理和维护,涉及到的相关配置文件如下:
/etc/passwd 保存用户信息
/etc/shdaow 保存用户密码(以加密形式保存)
/etc/group 保存组信息
/etc/login.defs 用户属性限制,密码过期时间,密码最大长度等限制
/etc/default/useradd 显示或更改默认的 useradd 配置文件
如需创建新用户,可以使用命令 useradd,执行命令 useradd songsong 即可创建 songsong 用户,同时会创建一个同名的组 songsong,默认该用户属于 songsong 主组。Useradd songsong 命令默认创建用户 songsong,会根据如下步骤进行操作:
在/etc/passwd 文件中添加用户信息;
如使用 passwd 命令创建密码,密码会被加密保存在/etc/shdaow 中;
为 songsong 创建家目录:/home/songsong;
将/etc/skel 中的.bash 开头的文件复制至/home/songsong 家目录;
创建与用户名相同的 songsong 组,songsong 用户默认属于 songsong 同名组;
songsong 组信息保存在/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 案例演示:
创建新用户sls,并把新用户的组设置为songlss
[root@songsong /]# useradd -g songlss sls
新建 edu 用户,并指定新的家目录,同时指定其登陆的 SHELL;
useradd -d /etc/edu -s /bin/bash edu
创建新用户,并未他指定主组 以及附属组
Useradd -g songlss -G slss edd
linux创建账户并自动生成主目录和主目录下的文件
useradd -d /home/test -m test
为test账户设置新的密码
Passwd test 输入新密码就好
删除用户
用userdel username删除用户
先su root进入超级用户,再userdel username,
userdel -r -f username,强制删除所有与此用户相关的文件,包括家目录和用户邮箱,
userdel -r username是删除所有与此用户相关的文件,
userdel username删除的是账户和组信息,家目录和用户邮箱还在
修改用户及组的属性
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)将 edu 用户属组修改为 edu1,edu2 附属组;
usermod -G edu1,edu2 edu
(2)将 edu 用户加入到 edu3,edu4 附属组,-a 为添加新组,原组保留;
usermod –a -G edu3,edu4 edu
(3)修改 edu 用户,并指定新的家目录,同时指定其登陆的 SHELL;
usermod -d /tmp/aa -s /bin/bash edu
(4)将 edu 用户名修改为 edu1;
usermod -l edu1 edu
(5)锁定 edu1 用户及解锁 edu1 用户方法;
usermod –L edu1;usermod -U edu1
3、Linux 组管理
所有的 Linux 或者 Windows 系统都有组的概念,通过组可以更加方便的管理用户,组的概念应用于各行行业,例如企业会使用部门、职能或地理区域的分类方式来管理成员,映射在 Linux 系统,同样可以创建用户,并用组的概念对其管理。
Linux 组有如下特点:
每个组有一个组 ID;
组信息保存在/etc/group 中;
每个用户至少拥有一个主组,同时还可以拥有 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 edu4 删除 edu4 组 要想删除成功edu4得是空的组
groupadd 案例演示:
(1)groupadd 创建 dzqcedu 组
groupadd dzqcedu
(2)groupadd 创建 dzqcedu 组,并指定 GID 为 1000;
groupadd -g 1000 dzqcedu
(3)groupadd 创建一个 system 组,名为 dzqcedu 组
groupadd -r dzqcedu
Groupmod 案例演示
(4)groupmod 修改组名称,将 dzqcedu 组名,改成 dzqcedu1;
groupmod -n dzqcedu1 dzqcedu
(5)groupmod 修改组 GID 号,将原 dzqcedu1 组 gid 改成 gid 1000;
groupmod –g 1000 dzqcedu1
4、Linux 权限管理
Linux 权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。
Linux 每个进程都是以某个用户身份运行,进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限就越大。
Linux 中所有的文件及文件夹都有至少权限三种权限
r(读取) 可读取文件内容 可列出目录内容
w(写入) 可修改文件内容 可在目录中创建删除内容
x(执行) 可作为命令执行 可访问目录内容
目录必须拥有 x 权限,否则无法查看其内容
Linux 权限授权,默认是授权给三种角色,分别是 user、group、other,Linux 权限与用
户之间的关联如下:
U 代表 User,G 代表 Group,O 代表 Other;
每个文件的权限基于 UGO 进行设置;
权限三位一组(rwx),同时需授权给三种角色,UGO;
每个文件拥有一个所属用户和所属组,对应 UG,不属于该文件所属用户或所属组使用 O 来表示;在 Linux 系统中,可以通过 ls –l 查看 jfedu.net 目录的详细属性
Drwxrwxr -x 2 jfedu1 jfedu1 4096 Dec 10 01:36 jfedu.net
jfedu.net 目录属性参数详解如下:
1、 d 表示目录,同一位置如果为-则表示普通文件;
2、 rwxrwxr-x 表示三种角色的权限,每三位为一种角色,依次为 u,g,o 权限,如上
则表示 user 的权限为 rwx,group 的权限为 rwx,other 的权限为 r-x;
3、2 表示文件夹的链接数量,可理解为该目录下子目录的数量;
4、 从左到右,第一个 jfedu1 表示该用户名,第二个 jfedu1 则为组名,其他人角色默
认不显示;
5、4096 表示该文件夹占据的字节数;
6、Dec 10 01:36 表示文件创建或者修改的时间;
7、Jfedu.net 为目录的名,或者文件名
5、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
[root@bogon home]# chown -R dou ./dou/* #<==把dou目录下的所有文件以及文件夹的所属用 户由root 改为dou用户
[root@bogon home]# ls -l ./dou
total 48
-rw-r-xr–. 1 dou root 13 Mar 21 08:01 123.txt
-rw-r-xr–. 1 dou root 16 Mar 21 08:01 1.txt
drwxr-xr-x. 2 dou root 4096 Mar 21 08:01 Desktop
drwxr-xr-x. 2 dou root 4096 Mar 21 08:01 dfg
drwxr-xr-x. 2 dou root 4096 Mar 21 08:01 Documents
drwxr-xr-x. 2 dou root 4096 Mar 21 08:01 Downloads
drwxr-xr-x. 2 dou root 4096 Mar 21 08:01 dzqc
drwxr-xr-x. 2 dou root 4096 Mar 21 08:01 Music
drwxr-xr-x. 2 dou root 4096 Mar 21 08:01 Pictures
drwxr-xr-x. 2 dou root 4096 Mar 21 08:01 Public
drwxr-xr-x. 2 dou root 4096 Mar 21 08:01 Templates
drwxr-xr-x. 2 dou root 4096 Mar 21 08:01 Videos
[root@bogon home]# chown -R :dodo ./dou/* #<==把dou目录下所有的文件以及文件夹 所属的组改为dodo
[root@bogon home]# ls -l ./dou
total 48
-rw-r-xr–. 1 dou dodo 13 Mar 21 08:01 123.txt
-rw-r-xr–. 1 dou dodo 16 Mar 21 08:01 1.txt
drwxr-xr-x. 2 dou dodo 4096 Mar 21 08:01 Desktop
drwxr-xr-x. 2 dou dodo 4096 Mar 21 08:01 dfg
drwxr-xr-x. 2 dou dodo 4096 Mar 21 08:01 Documents
drwxr-xr-x. 2 dou dodo 4096 Mar 21 08:01 Downloads
drwxr-xr-x. 2 dou dodo 4096 Mar 21 08:01 dzqc
drwxr-xr-x. 2 dou dodo 4096 Mar 21 08:01 Music
drwxr-xr-x. 2 dou dodo 4096 Mar 21 08:01 Pictures
drwxr-xr-x. 2 dou dodo 4096 Mar 21 08:01 Public
drwxr-xr-x. 2 dou dodo 4096 Mar 21 08:01 Templates
drwxr-xr-x. 2 dou dodo 4096 Mar 21 08:01 Videos
[root@bogon home]#
6、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.ne
(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
7、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+2+0=6
r–=100=4+0+0=4
得出结论,用 r=4,w=2,x=1 来表示权限。
使用二进制方式来修改权限案例演示如下,其中默认 jfedu.net 目录权限为 755:
(6)授予用户对 jfedu.net 目录拥有 rwx 权限
讲到这里还剩余一个知识点没讲,那就是Linux 特殊权限及掩码,可以课下进行了解
8、总结
通过对本节内容的学习,读者可以了解 Linux 用户和组的系统知识,同时账号 Linux 用户和组在系统中各种案例操作。我们要可以熟练新建用户、删除用户、修改用户属性、添加组、修改组以及删除组,修改角色的权限