目录
一、用户账号和组账号概述
1)Linux基本用户身份对资源访问进行控制
用户账号
超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限。系统中超级用户是唯一的。
普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。
程序用户:在安装Linux操作系统及部分应用程序,会添加一些特定的低权限用户账户,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等。
组账号
基本组(私有组)
-
建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组默认只容纳了一个用户。只有当系统建立的和用户同名的组才是私有组
-
在用户所属组中的第一个组称为基本组,基本组在 /etc/passwd 文件中指定
附加组(公有组)
- 除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定
[root@localhost ~]# id lisi
uid=1004(lisi) gid=1004(lisi) 组=1004(lisi),1005(stevelu)
1004为基本组或私有 1005为附加组或公共组
[root@localhost ~]# cat /etc/group
root:x:0:
mail:x:12:postfix
---------------------------
postfix:代表附加组
root:组名
x:密码占位符
0:GID
UID和GID
UID(User IDentity,用户标识号)
GID(Group IDentify,组标识号)
- root 用户账号UID和GID号为固定值 0
- 程序用户的账号的UID和GID号默认为
Centos5、6:1~499
Centos7:1~999
- 普通用户的UID和GID号默认为
Centos5、6:500~60000
Centos7:1000~60000
2)用户账户文件(7个字段)
保存用户名称、宿主目录、登录Shell等基本信息
- 文件位置
/etc/passwd
- 每一行对应一个用户的账号记录
3)用户账号文件/etc/shadow(9个字段)
- 文件位置
/etc/shadow
末尾为保留字段(未使用)
- 每一行对应一个用户的密码记录
第一字段:用户名
第二字段:密码 ,当为*或!!时表示用户不能登录到此系统,若该字段为空,则表示无需密码即可登录
第三字段:上次修改密码时间,最后一次修改密码的时间
以linux诞生的第一年(1970 年 01 月 01 日 )作为元年开始计算
计算实际修改日期
date -d '1970-01-01 19043 days'
#计算实际修改日期
第四字段:最小修改密码间隔时间
第五字段:密码有效期
第六字段:密码到期提醒(提示密码即将过期时间)
第七字段:密码过期后的宽限天数 (密码过期后多少天禁用此用户)
第八字段:账号失效时间 ,同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间
第九字段:保留字段(未使用)
4)添加用户账户
useradd命令
useradd [选项]… 用户名
常用选项
-D 改变新建用户的预设值
-c 添加备注文字
-d 指定用户的宿主目录位置(当与-M 一起使用时,不生效)
-e 用户终止日期,日期的格式为YYYY-MM-DD
-f 用户过期几日后永久停权。当值为0时用户立即被停权,而值为-1时则关闭此功能,预设值为-1
-g 指定用户对应的用户组
-G 指定用户的附加组名
-m 用户目录不存在时则自动创建
-M 不建立用户家目录,优先于/etc/login.defs文件设定
-n 取消建立以用户名称为名的群组
-s 指定用户的登录 Shell /sbin/nologin(不能登录)
-u 指定用户id
-D | 改变新建用户的预设值 |
-c | 添加备注文字 |
-d | 指定用户的宿主目录位置(当与-M 一起使用时,不生效)。只能用绝对路径指定目录,且不需要事先创建目录 |
-e | 指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式 |
-f | 用户过期几日后永久停权。当值为0时用户立即被停权,而值为-1时则关闭此功能,预设值为-1 |
-g | 指定用户的基本组名(或使用GID号),对应的组名必须已存在 |
-G | 指定用户的附加组名(或使用GID号),对应的组名必须已存在 |
-m | 用户目录不存在时则自动创建 |
-M | 不建立宿主目录,优先于/etc/login.defs文件设定 |
-n | 取消建立以用户名称为名的群组 |
-s | 指定用户的登录Shell,(比如/bin/bash为可登录系统,/sbin/nologin和/bin/false为禁止用户登录系统) |
-u | 指定用户UID号,要求改UID号码未被其他用户使用。 |
- 若未明确指定用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿 主目录,并在该目录中建立用户的各种初始配置文件。
- 若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/group 和/etc/shadow 文件中。
[root@localhost ~]#useradd -d /ftphome/mike -g mike -G ftpuser -s /sbin/nologin mike
5)设置/更改用户口令passwd
passwd命令
passwd [选项]… 用户名
常用选项
-d | 清空指定用户的密码,仅使用用户名即可登录系统 |
-l | 锁定用户密码,锁定的用户账号无法再登陆系统 |
-u | 解开已锁定用户密码,允许用户自行修改 |
-e | 密码立即过期,下次登陆强制修改密码 |
-k | 保留即将过期的用户在期满后能仍能使用 |
-S | 查看用户账户的状态(是否被锁定) |
不指定用户名时,修改当前账号的密码
示例:
设置密码方法二:echo “密码” | passwd --stdin 用户名
方法三:echo <用户名>:<密码> | chpasswd
--stdin表示标准输入
6)修改用户账号的属性usermod
usermod命令
usermod [选项]… 用户名
常用选项
-u <uid> | 修改用户的UID号 |
-d <登入目录> | 修改用户的宿主目录位置 |
-e <有效期限> | 修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式 |
-g <群组> | 修改用户的基本组名(或使用 GID 号) |
-G <群组> | 修改用户的附加组名(或使用 GID 号) |
-s <shell> | 指定用户的登录 Shell |
-l <账号名称> | 更改用户账户的登录名称 |
-L | 锁定用户账户 |
-U | 解锁用户账户 |
-f <缓冲天数> | 修改在密码过期后多少天即关闭该账号 |
注:使用passwd锁定用户可以用usermod解锁,反之亦可
7)删除用户账户userdel
userdel命令
userdel [-r] 用户名
- 添加-r 选项时,表示连用户的宿主目录一并删除
常用选项
-f | 强制删除用户账号 |
-r | 删除用户主目录及其中的任何文件 |
示例:
- 当系统中的某个用户账户已经不再需要使用时(如该员工已经从公司离职等情况),可以使用userdel命令将该用户账号删除
- 使用userdel命令需要指定账号名称作为参数,添加“-r”选项时可以将该用户的宿主目录一并删除
8)用户账号的初始配置文件
文件来源
- useradd 命令添加一个新的用户账号后会在该用户的宿主目录中建立一些初始配置文件
- 这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件
主要是用户初始配置文件
/etc/profile
/etc/profile.d/XXX.sh 是/etc/profile的子目录
对所有用户有效
全局系统环境变量配置文件,主要用于设置开机后自动执行的命令和环境变量设置
只会在系统启动后执行一次,或者使用 source /etc/profile 手动加载生效
/etc/bashrc
对所有用户有效
也是可以用来设置自动执行的命令和环境变量设置
会在任意用户每次登录或者切换shell环境(su,bash等)都会执行一次
~/.bath_profile
只对家目录的用户有效
效果类似 /etc/profile
会调用 ~/.bashrc
~/.bashrc
只对家目录的用户有效
会调用 /etc/bashrc
~/.bash_logout
此文件中的命令将在该用户每次退出时bash shell时使用
ps:用户宿主目录下的初始配置文件只对当前用户有效,全局配置在/etc/bashrc
示例:
/etc/profile route add -net XXX gw XXX
9)组账号文件
与用户的账号文件相类似
- /etc/group:保存组账号基本信息
- /etc/gshadow:保存组账号的密码信息
10)添加组账号groupadd
groupadd命令
groupadd [-g GID] 组账号名
示例
11)添加删除组成员gpasswd
gpasswd命令
- 设置组账号密码(极少用)、添加/删除组成员
gpasswd [选项]… 组账号名
常用选项
-a | 向组内添加一个用户 |
-d | 从组内删除一个用户成员 |
-A | 指定管理员 |
-M | 定义组成员列表,以逗号分分隔,和-A的用途差不多 |
-r | 删除密码 |
-R | 限制用户登入组,只有组中的成员才可以用newgrp加入该组 |
示例:
12)删除组账号groupdel
gpasswd 组账号名
示例:
13)查询账号信息
groups命令
- 查询用户所属的组
groups [用户名]
finger命令(需要yum安装)
w、who、users命令
- 查询已登录到主机的用户信息
标题 | 含义 |
USER | 登录到系统的用户 |
TTY | 登录终端 |
FROM | 表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名 |
LOGIN@ | 用户登陆的日期和时间 |
IDLE | 表示某个程序上次从终端开始执行到现在所持续的时间 |
JCPU | 和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间 |
PCPU | 当前进程所占用的 CPU 运算时间 |
WHAT | 当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令 |
选项 | 含义 |
---|---|
-a | 列出所有信息,相当于所有选项。 |
-b | 列出系统最近启动的时间日期。 |
-l | 列出所有可登陆的终端信息。 |
-m | 仅列出关于当前终端的信息,who -m 命令等同于 who am i 。 |
-q | 列出在本地系统上的用户和用户数的清单。 |
-r | 显示当前系统的运行级别。 |
-s | 仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。 |
-u | 显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。 |
-T 或 -w | 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。 |
id命令
- 查询用户身份标识
id [用户名]
二、文件、目录的权限和归属
访问权限
- 读取r:允许查看文件内容、显示目录列表
- 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
- 可执行x:允许运行程序、切换目录
归属(所有权)
- 属主:拥有改文件或目录的用户账号
- 属组:拥有该文件或目录的组账号
1)设置文件和目录的权限chmod
chmod命令
chmod [ugoa] [+-=] [rwx] 文件或目录
或
chmod nnn 文件或目录
u,g,o,a分别表示属主、属组、其他用户、所有用户
+,-,=分别表示添加,去除、设置权限
常用选项
-c | 若该文件权限确实已经更改,才显示其更改动作 |
-f | 若该文件权限无法被更改也不显示错误讯息 |
-v | 显示权限变更的详细资料 |
-R | 递归修改指定目录下所有子项的权限 |
示例:
ps:文件夹一定要有执行(x)权限
2)设置文件的目录的归属chown
chown命令
chown 属主 文件或目录
chown:属主 文件或目录
chown 属主:属组 文件或目录
常用选项
-R | 对目前目录下的所有文件与子目录进行相同的拥有者变更 |
-h | 只对于连结(link)进行变更,而非该 link 真正指向的文件 |
3)设置目录和文件的默认权限umask
umask作用
- 控制新建的文件或者目录的权限
- 默认权限去除umask的权限为新建的文件或者目录的权限
umask设置:umask 022
默认权限 umask 022
文件最大默认权限为6 目录最大默认权限为7
文件/目录的默认权限 最大默认权限-umask值
umask查看:umask
示例
三、总结
用户账号管理:useradd,passwd,usermod,userdel
组账号管理:groupadd,gpasswd,groupdel
查询账号相关信息:groups,id,finger,w,who,users
设置目录与文件权限:chmod
设置目录与文件归属:chown
passwd -l 锁定用户
usermod -L 锁定用户
passwd -u 解锁用户
usermod -U 解锁用户