账号及权限设置
一、用户账号和组账号概述
1、用户账号
Linux是基于用户身份对资源访问进行控制。
1.1账号分类
用户账号分为三种:超级账号、普通用户、程序用户。
- 超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限。系统中超级用户是唯一的。
- 普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。
- 程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、 daemon、 ftp. mail等。
1.2用户标识UID
UID(用户标识号):
- root用户的UID号为固定值0
- 程序用户的UID号默认为CentOS 5/6:1-499,CentOS 7:1-999
- 普通用户的UID号默认为CentOS 5/6:500-60000,CentOS 7:1000-60000
1.3用户账号文件及密码文件
用户账号文件:保存用户名称、宿主目录(家目录)、登录shell等基本信息,文件位于/etc/passwd。文件间中每一行对应一个用户的账号记录。
基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。
每一行都是记录的一个用户账号信息,共七个字段,每个字段用“:”分隔,每个字段含义:
例:root::x :0 :0 : root : / root :/bin/bash
字段 | 含义 |
---|---|
字段1 | 用户账号的名称 |
字段2 | 用户密码占位符“x” |
字段3 | 用户账号的UID号 |
字段4 | 所属基本组账号的GID号 |
字段5 | 用户全名 |
字段6 | 宿主目录(家目录) |
字段7 | 登录shell信息(/bin/bash为可登录系统,/sbin/nologin和/bin/false为禁止用户登录系统) |
在早期的Unix操作系统中,用户帐号的密码信息是保存在passwd文件中的,不法用户可以很容易的获取密码字串并进行暴力破解,因此春在一定的安全隐患。后来经改进后,将密码转存入专门的shadow文件中,而passwd文件中仅保留密码占位符"x”。
密码文件:位于/etc/shadow,保存用户的密码、账号有效期等信息。每一行都对应一个用户的密码记录。默认只有root用户能够读取 shadow文件中的内容,且不允许直接编辑该文件中的内容。
例:
root:$6$VyoUGqoC$v5HlLM1wagZC/FwGfnrtJFnlT:18445:0:99999:7: : :
字段 | 含义 |
---|---|
字段1 | 用户账号的名称 |
字段2 | 使用MDS加密的密码字串信息,当为"*“或”!!"时表示此用户不能登录到系统。若该字段内容为空,则该用户无须密码即可登录系统 |
字段3 | 上次修改密码的时间,表示从1970年01月o1日算起到最近一次修改密码时间隔的天数 |
字段4 | 密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制 |
字段5 | 密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为999,表示不进行限制 |
字段6 | 提前多少天警告用户密码将过期,默认值为7 |
字段7 | 在密码过期之后多少天禁用此用户 |
字段8 | 帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算),默认值为空,表示账号永久可用 |
字段9 | 保留字段(未使用) |
2、组账号
2.1组账号分类
- 基本组(私有组):基本组账号只有一个,一般为创建用户时指定的组。
- 附加组(公共组):用户除了基本组以外,额外添加指定的组。
2.2组标识GID
GID(组标识号):
- root用户的GID号为固定值0
- 程序用户的GID号默认为CentOS 5/6:1-499,CentOS 7:1-999
- 普通用户的GID号默认为CentOS 5/6:500-60000,CentOS 7:1000-60000
2.3组账号文件及组密码文件
跟用户账号文件相似,组账号文件位于 /etc/group,组密码文件位于 /etc/gshadow。
组账号文件:保存组账号基本信息
例:
mail : x : 12 :postfix
字段 | 含义 |
---|---|
字段1 | 组名称 |
字段2 | 组账号密码占位符“x” |
字段3 | GID号 |
字段4 | 组成员列表 |
组密码文件:保存组账号的密码信息,跟用户账户密码文件类似。
二、用户/组的增删改查
1、useradd命令
命令 | 解释 |
---|---|
useradd 用户名 | 创建一个新用户 |
useradd -u | 指定用户的UID号,要求该UID号码未被其他用户使用。 |
useradd -d | 指定用户的宿主目录位置(当与-M一起使用时,不生效)。只能用绝对路径指定目录,且不需要事先创建目录 |
useradd -e | 指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。 |
useradd -g | 指定用户的基本组名(或使用GID 号),对应的组名必须已存在。 |
useradd -G | 指定用户的附加组名(或使用GID 号),对应的组名必须已存在。 |
useradd -M | 不建立宿主目录 |
useradd -s | 指定用户的登录shell,(比如/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)。 |
2、userdel命令
userdel 用户 //删除用户但不删除用户的宿主目录
userdel -r 用户 //用户账号连同用户的宿主目录一并删除
3、修改用户账号属性usermod
命令 | 含义 |
---|---|
usermod -u | 指定用户的UID号,要求该UID号码未被其他用户使用。 |
usermod -e | 指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。 |
usermod -g | 指定用户的基本组名(或使用GID 号),对应的组名必须已存在。 |
usermod -G | 指定用户的附加组名(或使用GID 号),对应的组名必须已存在。 |
usermod -s | 指定用户的登录shell,(比如/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)。 |
usermod -l | 修改用户名称 |
usermod -L | 锁定用户账号,锁定的用户账号将无法再登录系统 |
usermod -U | 解锁用户账号 |
4、设置/更改用户口令passwd
选项 | 含义 |
---|---|
-d | 清空指定用户的密码,仅使用用户名即可登录系统 |
-l | 锁定用户账,锁定的用户账户将无法再登陆系统 |
-S | 查看用户账户的状态(是否被锁定) |
-u | 解锁用户账户 |
passwd单独使用时是修改用户密码,不指定用户,就是修改当前密码。
5、添加组账号groupadd
groupadd 组账号名 //添加组账号
groupadd -g GID 组账号名 //添加组账号并且指定GID号
6、删除组账号groupdel
groupdel 组账号名
7、查询账号信息
groups 用户名 //查询用户所属的组
id 用户名 //查询用户身份标识
finger 用户名 //查询用户账号的登陆属性(需要先安装finger软件包)
w、who、users //查询已登录到主机的用户信息
三、用户账号的初始配置文件
1、文件来源
useradd命令添加—个新的用户账号后会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件。
2、主要的用户初始配置文件
用户宿主目录下的初始配置文件只对当前用户有效:
- ==/.bash_profile==:此文件中的命令将在该用户每次登录时被执行,它会设置一些环境变量,并且会调用该用户的/.bashrc文件
- ~/.bashrc:此文件中的命令会在每次打开新的bash shell时(也包括登录系统)被执行,并且会调用/etc/bashrc文件
- ~/.bash_logout:此文件中的命令将在用户每次退出登录或退出bash shell时执行
全局配置文件对所有用户有效: - /etc/profile:这个文件是为系统全局变量配置文件,可通过重启系统或者执行source /etc/profile 命令使profile文件被读取
- /etc/profile.d/:这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本
- ==
- /etc/bashrc:每一个运行bash shell的用户都会执行此文件,可通过执行bash 命令打开一个新的bash shell时,使bashrc文件被读取
四、权限设置
1、文件/目录的权限和归属
1.1访问权限
- 读取r:允许查看文件内容、显示目录列表
- 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
- 可执行x:允许运行程序、切换目录
1.2归属
- 属主:拥有该文件或目录的用户账号
- 属组:拥有该文件或目录的组账号
2、查看文件/目录的权限和归属
ls -l install.log
3、设置文件和目录的权限chmod
chmod [ugoa] [+-=] [rwx] 文件或目录
u、g、o、a分别表示属主、属组、其他用户、所有用户
+、-、=分别表示增加、去除、设置权限
chmod nnn 文件或目录
nnn:三位八进制数
如果加上-R,则表示递归修改指定目录下所有子项的权限
还有一个特殊权限SBIT(t):
SBIT权限只能用于对目录进行设置,使指定目录中的文件或者目录只有所有者才能删除文件或者目录
chmod 1nnn 文件或目录
4、设置文件或目录的归属
chown 属主 文件或目录 //设置属主
chown :属组 文件或目录 //设置属组
chown 属主:属组 文件或目录 //同时设置属主和属组
-R还是表示递归修改指定目录下所有文件、子目录的归属
5、设置目录和文件的默认权限umask
5.1umask作用
- 控制新建的文件或者目录的权限
- 默认权限去除umask的权限为新建的文件或者目录的权限
5.2umask设置
umask 022
5.3umask查看
umask
5.4最大默认权限值
普通文件:最大默认权限值为6(rw)
目录:最大默认权限值为7(rwx)