27
Acegene IT Co. Ltd. 1 Linux 操操操操操操操 操操 操操 操操操操操操操操操操操操 操操操操操操操操操操操操

Linux 操作系统 用户管理

Embed Size (px)

DESCRIPTION

Linux 操作系统 用户管理. 周炯 上海艾基信息技术有限公司. 本章内容. 1 基础知识 2 用户数据库 3 用户管理工具 4 文件访问控制位 SetUID 和 SetGID 5 更该文件的所有权. 1 基础知识. 在 Linux 操作系统中,每一个文件和程序必须属于某一个 “ 用户 ” 。 每一个用户都有一个唯一的身份标识叫做用户 ID ( User ID , UID )。 每一个用户也至少需要属于一个 “ 用户分组 ” ,也就是由系统管理员建立的用户小团体。用户分组也有一个唯一的身份标识叫做用户分组 ID ( Group ID , GID ) - PowerPoint PPT Presentation

Citation preview

Page 1: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 1

Linux 操作系统用户管理

周炯周炯上海艾基信息技术有限公司 上海艾基信息技术有限公司

Page 2: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 2

本章内容• 1 基础知识• 2 用户数据库• 3 用户管理工具• 4 文件访问控制位 SetUID 和 SetGID• 5 更该文件的所有权

Page 3: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 3

1 基础知识• 在 Linux 操作系统中,每一个文件和程序

必须属于某一个“用户”。– 每一个用户都有一个唯一的身份标识叫做用户 I

D ( User ID , UID )。• 每一个用户也至少需要属于一个“用户分

组”,也就是由系统管理员建立的用户小团体。用户分组也有一个唯一的身份标识叫做用户分组 ID ( Group ID , GID )– 用户可以归属于多个用户分组。

Page 4: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 4

1 基础知识• 对某个文件或程序的访问是以它的 UID 和

GID 为基础的。一个执行中的程序继承了调用它的用户的权利和访问权限。

• 每位用户的权限可以被定义为下面两种中的任何一种:– 普通用户 : 只能访问他们拥有的或者有权限执

行的文件;分配给他们这样的权限是因为这个用户或者属于这个文件的用户分组,或者因为这个文件能够被所有的用户访问。

– 根用户 : 能够访问系统全部的文件和程序,而不论根用户是否拥有它们。根用户通常也被称为“超级用户”。

Page 5: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 5

1 基础知识• 在 Linux 操作系统中,任何东西都有一个所有者。

用户都按照这样一个方式配置:它们的访问权限只分配给经过挑选的一个很小的用户范围。– 1.1 用户登录子目录– 1.2 口令– 1.3 shell– 1.4 启动上机脚本程序– 1.5 电子邮件

Page 6: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 6

1.1 用户登录子目录• 用户登录子目录 : 每一个实际登录进入系

统上机的用户都需要有地方保存那些专属于他的配置文件。这个地方就叫做用户登录子目录( home directory )

• 大多数站点都从 /home 开始安排用户登录子目录 , 把用户登录子目录安排在 /home下的决定完全是人为的

• 根用户的登录子目录对大多数 UNIX 操作系统的变体来说都是传统的“ /” ,许多 Linux 操作系统的安装把它设置为 /root

Page 7: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 7

1.2 口令• 每个账户都必须有一个口令,否则就根本不可能

登录进入它。– 当用户在登录提示符处输入它们的口令时,输入的口

令将由系统进行加密。再把加密后的数据与机器中用户的口令数据项进行比较。如果这两个加密数据匹配,就可以让这个用户进入系统。

– 口令建议的规则:非语言单词 ( 不是人类使用语言的单词 ) ,最好大小写、数字和标点符号混用

Page 8: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 8

1.3 shell• 根用户使用的缺省 shell ,叫做 Bourne Again Shell ,简称 bash 。– Linux 操作系统带有好几种 shell供用户选用—

可以在 /etc/shells 文件中看到它们中的大多数。

Page 9: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 9

1.4 启动脚本程序• 当建立了一个用户账号的时候,必须提供

一套缺省的启动脚本让这个用户可以开始工作。– 相当于 dos 下面的 autoexec.bat 或者 config.

sys 的程序• bash 的启动脚本文件是 :

– .bashrc (.bash_bashrc)– .bash_profile(.profile)

Page 10: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 10

1.5 电子邮件• 建立一个新用户意味着能够让这个用户收发电子邮件。– 电子邮箱保存在 /var/spool/mail 子目录中,

以用户名命名的文件指定。• 一个空电子邮箱是一个零长度的文件。所

有电子邮箱都应该只属于它们对应的主人,其访问权限被设置为不允许别人读出其中的内容。

Page 11: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 11

2 用户数据库• 用户数据库 : 是普通的文本文件,可以直接编辑修改– /etc/passwd – /etc/shadow

Page 12: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 12

2.1 /etc/passwd 文件• /etc/passwd 文件保存着用户的登录名、加过密

的口令数据项、用户 ID ( UID )、缺省的用户分组 ID ( GID )、姓名、用户登录子目录以及登录后使用的 shell 。– 用户的登录名不应该超过八个字符。– 文件的每一行保存一个用户的资料,而用户资料的每

一个数据项采用分号分隔。young: boQavhhaCKaXg: 100: 102 : Tang Xiaosheng: /home/young: /bin/bash

Page 13: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 13

2.1 /etc/passwd 文件• 很多站点是通过修改这个加过密的口令数

据项来禁用某个账户的。– 例如:把一个干了坏事的用户的加密口令数据

项修改为boQavhhaCKaXg*used mail bomber

• 用户 ID ( UID )对每一个用户来说都必须是唯一的,只有 UID等于 0时可以例外。

• 有些 Linux 操作系统的发行版本保留数值 -1 (或者 65535 )作为“ nobody” 用户的 UID

Page 14: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 14

2.2 /etc/shadow 文件• /etc/shadow文件中的口令则只对那些具有根用户优先权

的程序如登录程序等可读。• /etc/shadow文件包含加过密的口令,口令失效期和账户

是否已被禁用等方面的信息。• /etc/shadow文件中每一行的格式包含着如下所示的几个

部分:– 登录名。– 加过密的口令。– 从 1970 年 1月 1日起计算,该口令修改后已经过去了多少天。– 需要再过多少天才能修改这个口令。– 需要再过多少天这个口令必须被修改。– 需要在这个口令失效之前多少天对用户发出提示警告。– 口令失效多少天之后禁用这个账户。– 从 1970 年 1月 1日起计算,该口令已经被禁用了多少天。– 保留域。young: boQavhhaCKaXg: 10750: 0: 99999: 7: -1 : -1 : 134529868

Page 15: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 15

2.3 /etc/group 文件• /etc/group 分组定义文件对整个系统来说也必须是可读的。• 每个用户至少会属于一个用户分组,也就是缺省用户分组• 在需要的情况下,用户还可以分配到其他的分组中去。• /etc/passwd 文件中包含着每个用户缺省的分组 ID ( GI

D )。• 在 /etc/group 文件中,这个 GID 被映射到该用户分组的名称以及同一分组中的其他成员去。

• /etc/group 文件中每一行的格式如下所示:– 用户分组名。– 加过密的用户分组口令。– 用户分组 ID 号( GID )。– 以逗号分隔的成员用户清单。

project : baHrE1KPNjrPE: 102 : young, txs

Page 16: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 16

3 用户管理工具• 用户管理有以下途径:

– 编写口令数据库文件– 命令行– LinuxConf

Page 17: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 17

3.1 使用命令行进行用户管理• 可以从下列的六种命令行工具程序中进行选择,

用来执行 G U I 工具程序完成同样的动作:– useradd 增加用户– userdel 删除用户– usermod 修改用户– groupadd 增加组– groupdel 删除组– groupmod 修改组– passwd 设置密码– chpasswd 用文件配置修改密码

• chpasswd < ora_pass• 密码文件格式: oracle:password

Page 18: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 18

3.2 使用 LinuxConf 进行用户管理• LinuxConf工具软件包是一个功能非常强

大的配置工具,可以用来执行许多不同的任务。

• 它的特色之一就是建立、删除和修改用户信息的能力。

• linuxconf 有文本模式下和图形模式下的执行程序。

Page 19: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 19

3.2 使用 LinuxConf 进行用户管理• LinuxConf工具软件包是一个功能非常强

大的配置工具,可以用来执行许多不同的任务。

• 它的特色之一就是建立、删除和修改用户信息的能力。

• linuxconf 有文本模式下和图形模式下的执行程序。

Page 20: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 20

4 更该文件的所有权• 4.1 改变文件的所有权命令 chown• 4.2 改变用户分组命令 chgrp• 4.3 改变文件属性命令 chmod

Page 21: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 21

4.1 改变文件的所有权命令 chown• chown命令可以把一个文件的所有权修改为别人

的。只有根用户能够进行这样的操作。• 这个命令的格式如下所示:#chown [-R] username filename

• 没有所有权的文件 : 是指文件所属的用户不存在– 当用户从 /etc/passwd 文件中被删除后但是属于他的

文件还依然存在的时候。– 在问题中的文件进行子目录列表操作的时候。列表中

不会出现文件的所有者,它将显示为一个号码,这个号码代表着拥有该文件的 UID 。

– 如果有一个新用户在被建立的时候使用了与老用户相同的 UID ,这个相同的 UID 将被显示为所有者,使得新用户看起来就像是拥有着那些文件一样。

Page 22: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 22

4.2 改变用户分组命令 chgrp• chgrp命令可以改变一个文件的用户分组设

置情况。它的格式:– #chgrp [-R] groupname filename

Page 23: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 23

5.3 改变文件属性命令 chmod• 访问权限分为四个部分 ,10位:

– 第一个部分就是访问权限的头一个字母。• “ 普通”文件( -) 不具有任何特殊的值,如果该文件具有特殊的属性,它就用一个字母来表示。• 子目录( d )• 符号链接( l )

– 第二个部分 3 位,表示的是文件所有者的访问权限;– 第三个部分 3 位,表示的是文件所在分组的访问权限;– 第四个部分 3 为,表示的是全系统 ( 系统中的全部用户 ) 的访问权限。

• 当组合属性的时候,把后三个部分的数值逐个相加。– 字母 访问权限 数值– r 读 4– w 写 2– x 执行 1

• 文件的设定:– -rw------- (600) -- 只有属主有读写权限。 – -rw-r--r-- (644) -- 只有属主有读写权限;而属组用户和其他用户只有读权限。 – -rwx------ (700) -- 只有属主有读、写、执行权限。 – -rwxr-xr-x (755) -- 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。 – -rwx--x--x (711) -- 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。 – -rw-rw-rw- (666) -- 所有用户都有文件读、写权限。这种做法不可取。 – -rwxrwxrwx (777) -- 所有用户都有读、写、执行权限。更不可取的做法。

• 目录注意事项:因为不可能去“执行”一个目录。 当添加或清除某个目录的执行权限时,其实上是允许完全查找这个目录。

Page 24: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 24

5.3 改变文件属性命令 chmod• chmod命令:根据文件访问权限的字母以及对应的数值用来设置访问权限的数值。

chmod [OPTION]... MODE[,MODE]... FILE...

• 使用数值改变文件权限:#chmod 777 file1

• 使用字母来改变文件的权限:– 参数设置

• a 所有用户• u 创建者• g 同组用户• o 除去创建者和同组用户之外的用户• + 增加权限 • - 清除权限 • = 设置唯一权限

– 常用设置• g+w -- 增加组用户的写权限 • o-rwx -- 清除其他用户的全部访问权限 • u+x -- 允许文件属主执行文件 • a+rw -- 允许所有用户读和写文件 • ug+r -- 允许文件属主和属组用户读文件 • g=rx -- 设置属组用户只能读和执行文件(不可写)• 通过增加 -R 参数,可以改变整个目录树的权限。

#chmod o+w sneakers.txt #chmod go-rw sneakers.txt #chmod a-rw sneakers.txt

Page 25: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 25

5 文件的权限和 SetUID , SetGID• 文件是通过 SetUID 位和 SetGID 位来控制访问权限的。

– SetUID 位的作用是通过二进制位进行设置的方法使程序按照其所有者的访问权限运行,不再受运行它的用户的访问权限的限制。

• 当用户运行一个应用程序的时候,这个程序将继承该用户所具有的全部权利(或者限制)。用户不能够读取这个文件,那么他运行的程序也不能读取该文件。这个权限可能会与该程序文件(通常叫做二进制文件)所有者所具有的权限有所不同。

• 例如: ls 程序是归根用户所有的,它的访问权限被设置为每一个用户都能够执行,某用户 young 运行了 ls命令,限制这份 ls命令的是分配给用户 young的访问权限而不是根用户。

• 如果把一个执行程序的 SetUID 位设置为 on ,并且让这个命令的二进制文件归属于根用户,那么就意味着如果用户 young 运行这个命令,这命令就是以根用户的访问权限运行的,不再受到用户 young访问权限的限制。

– SetGID 位的是作用于文件用户分组的设置情况– 如果想激活 SetUID 或者 SetGID 位,需要使用 chmod命令

• 如果想把某个程序设置为 SetUID状态,在打算分配给它的访问权限数值前面加上一个数字 4 。

• 如果想把某个程序设置为 SetGID状态,在打算分配给它的访问权限数值前面加上一个数字 2 。

– # chmod 4755 /bin/ls

Page 26: Linux 操作系统 用户管理

Acegene IT Co. Ltd.

AQ&Q U E S T I O N SQ U E S T I O N S

A N S W E R SA N S W E R S

Page 27: Linux 操作系统 用户管理

Acegene IT Co. Ltd. 27

练习• 创建目录

– 以 root 用户建目录 /home/oracle– 以 root 用户建目录 /u01

• 创建 dba, oinstall 用户组– groupadd -g 701 dba– groupadd -g 702 oinstall

• 创建 oracle 用户– useradd -g dba -G oinstall -u 701 -m -d /home/oracle oracle

• 加入 dba,oinstall 组,默认组为 dba• 主目录为 /home/oracle

– 用一个密码文件来修改密码• chpasswd < ora_pass

– 修改自动执行脚本 .bash_profile, 加入以下行• export ORACLE_BASE=/u01• export ORACLE_HOME=$ORACLE_BASE/db10g• export ORACLE_SID=orcl

• 修改 /home/oracle /u01 权限– 修改所有者为 oracle– 所有组为 oinstall– 修改访问权限为 755– chown -R oracle.oinstall /u01