用户及权限管理
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:
(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.n
以后真正修改权限,是这种方式