Anda di halaman 1dari 27

Linux 操作 系统

用户管理

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

Acegene IT Co. Ltd. 1


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

Acegene IT Co. Ltd. 2


1 基础知 识
• 在 Linux 操作系统中,每一个文件和程序
必须属于某一个“用户”。
– 每一个用户都有一个唯一的身份标识叫做用户
ID ( User ID , UID )。
• 每一个用户也至少需要属于一个“用户分组
”,也就是由系统管理员建立的用户小团体。
用户分组也有一个唯一的身份标识叫做用
户分组 ID ( Group ID , GID )
– 用户可以归属于多个用户分组。

Acegene IT Co. Ltd. 3


1 基础知 识
• 对某个文件或程序的访问是以它的 UID 和
GID 为基础的。一个执行中的程序继承了
调用它的用户的权利和访问权限。
• 每位用户的权限可以被定义为下面两种中
的任何一种:
– 普通用户 : 只能访问他们拥有的或者有权限执
行的文件;分配给他们这样的权限是因为这个
用户或者属于这个文件的用户分组,或者因为
这个文件能够被所有的用户访问。
– 根用户 : 能够访问系统全部的文件和程序,而
不论根用户是否拥有它们。根用户通常也被称
为“超级用户”。
Acegene IT Co. Ltd. 4
1 基础知 识
• 在 Linux 操作系统中,任何东西都有一个所有者。
用户都按照这样一个方式配置:它们的访问权限
只分配给经过挑选的一个很小的用户范围。
– 1.1 用户登录子目录
– 1.2 口令
– 1.3 shell
– 1.4 启动上机脚本程序
– 1.5 电子邮件

Acegene IT Co. Ltd. 5


1.1 用户 登录子目录
• 用户登录子目录 : 每一个实际登录进入系
统上机的用户都需要有地方保存那些专属
于他的配置文件。这个地方就叫做用户登
录子目录( home directory )
• 大多数站点都从 /home 开始安排用户登录
子目录 , 把用户登录子目录安排在 /home
下的决定完全是人为的
• 根用户的登录子目录对大多数 UNIX 操作
系统的变体来说都是传统的“ /” ,许多
Linux 操作系统的安装把它设置为 /root

Acegene IT Co. Ltd. 6


1.2 口令
• 每个账户都必须有一个口令,否则就根本不可能
登录进入它。
– 当用户在登录提示符处输入它们的口令时,输入的口
令将由系统进行加密。再把加密后的数据与机器中用
户的口令数据项进行比较。如果这两个加密数据匹配
,就可以让这个用户进入系统。
– 口令建议的规则:非语言单词 ( 不是人类使用语言的单
) ,最好大小写、数字和标点符号混用

Acegene IT Co. Ltd. 7


1.3 shell
• 根用户使用的缺省 shell ,叫做 Bourne
Again Shell ,简称 bash 。
– Linux 操作系统带有好几种 shell 供用户选用
—可以在 /etc/shells 文件中看到它们中的大多
数。

Acegene IT Co. Ltd. 8


1.4 启动 脚本程序
• 当建立了一个用户账号的时候,必须提供
一套缺省的启动脚本让这个用户可以开始
工作。
– 相当于 dos 下面的 autoexec.bat 或者
config.sys 的程序
• bash 的启动脚本文件是 :
– .bashrc (.bash_bashrc)
– .bash_profile(.profile)

Acegene IT Co. Ltd. 9


1.5 电子 邮件
• 建立一个新用户意味着能够让这个用户收
发电子邮件。
– 电子邮箱保存在 /var/spool/mail 子目录中,
以用户名命名的文件指定。
• 一个空电子邮箱是一个零长度的文件。所
有电子邮箱都应该只属于它们对应的主人
,其访问权限被设置为不允许别人读出其
中的内容。

Acegene IT Co. Ltd. 10


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

Acegene IT Co. Ltd. 11


2.1 /etc/passwd 文件
• /etc/passwd 文件保存着用户的登录名、加过密
的口令数据项、用户 ID ( UID )、缺省的用户
分组 ID ( GID )、姓名、用户登录子目录以及
登录后使用的 shell 。
– 用户的登录名不应该超过八个字符。
– 文件的每一行保存一个用户的资料,而用户资料的每
一个数据项采用分号分隔。
young : boQavhhaCKaXg : 100 : 102 : Tang Xiaosheng : /home/young :
/bin/bash

Acegene IT Co. Ltd. 12


2.1 /etc/passwd 文件
• 很多站点是通过修改这个加过密的口令数
据项来禁用某个账户的。
– 例如:把一个干了坏事的用户的加密口令数据
项修改为
boQavhhaCKaXg*used mail bomber
• 用户 ID ( UID )对每一个用户来说都必须
是唯一的,只有 UID 等于 0 时可以例外。
• 有些 Linux 操作系统的发行版本保留数值 -
1 (或者 65535 )作为“ nobody” 用户的
UID

Acegene IT Co. Ltd. 13


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
Acegene IT Co. Ltd. 14
2.3 /etc/group 文件
• /etc/group 分组定义文件对整个系统来说也必须是可读
的。
• 每个用户至少会属于一个用户分组,也就是缺省用户分组
• 在需要的情况下,用户还可以分配到其他的分组中去。
• /etc/passwd 文件中包含着每个用户缺省的分组
ID ( GID )。
• 在 /etc/group 文件中,这个 GID 被映射到该用户分组的
名称以及同一分组中的其他成员去。
• /etc/group 文件中每一行的格式如下所示:
– 用户分组名。
– 加过密的用户分组口令。
– 用户分组 ID 号( GID )。
– 以逗号分隔的成员用户清单。
project : baHrE1KPNjrPE : 102 : young, txs

Acegene IT Co. Ltd. 15


3 用户管 理工具
• 用户管理有以下途径:
– 编写口令数据库文件
– 命令行
– LinuxConf

Acegene IT Co. Ltd. 16


3.1 使用 命令行进行 用户管理
• 可以从下列的六种命令行工具程序中进行选择,
用来执行 G U I 工具程序完成同样的动作:
– useradd 增加用户
– userdel 删除用户
– usermod 修改用户
– groupadd 增加组
– groupdel 删除组
– groupmod 修改组
– passwd 设置密码
– chpasswd 用文件配置修改密码
• chpasswd < ora_pass
• 密码文件格式: oracle:password

Acegene IT Co. Ltd. 17


3.2 使用 LinuxConf 进行用户管 理
• LinuxConf 工具软件包是一个功能非常强
大的配置工具,可以用来执行许多不同的
任务。
• 它的特色之一就是建立、删除和修改用户
信息的能力。
• linuxconf 有文本模式下和图形模式下的
执行程序。

Acegene IT Co. Ltd. 18


3.2 使用 LinuxConf 进行用户管 理
• LinuxConf 工具软件包是一个功能非常强
大的配置工具,可以用来执行许多不同的
任务。
• 它的特色之一就是建立、删除和修改用户
信息的能力。
• linuxconf 有文本模式下和图形模式下的
执行程序。

Acegene IT Co. Ltd. 19


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

Acegene IT Co. Ltd. 20


4.1 改变 文件的所有 权命令 chown
• chown 命令可以把一个文件的所有权修改为别人
的。只有根用户能够进行这样的操作。
• 这个命令的格式如下所示:
#chown [-R] username filename
• 没有所有权的文件 : 是指文件所属的用户不存在
– 当用户从 /etc/passwd 文件中被删除后但是属于他的
文件还依然存在的时候。
– 在问题中的文件进行子目录列表操作的时候。列表中
不会出现文件的所有者,它将显示为一个号码,这个
号码代表着拥有该文件的 UID 。
– 如果有一个新用户在被建立的时候使用了与老用户相
同的 UID ,这个相同的 UID 将被显示为所有者,使得
新用户看起来就像是拥有着那些文件一样。
Acegene IT Co. Ltd. 21
4.2 改变 用户分组命 令 chgrp
• chgrp 命令可以改变一个文件的用户分组
设置情况。它的格式:
– #chgrp [-R] groupname filename

Acegene IT Co. Ltd. 22


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) -- 所有用户都有读、写、执行权限。更不可取的做法。
• 目录注意事项:因为不可能去“执行”一个目录。 当添加或清除某个目录的执行权限时
,其实上是允许完全查找这个目录。

Acegene IT Co. Ltd. 23


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

Acegene IT Co. Ltd. 24


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

Acegene IT Co. Ltd. 25


Q&
A
QUESTIONS
ANSWERS
练习
• 创建目录
– 以 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

Acegene IT Co. Ltd. 27