目录
用户账号和组账号概述
用户账号
组账户
UID和GID号
用户账号管理
用户账号文件
添加、修改、删除用户账号
uaeradd命令(创建用户)
passwd命令(设置/更改用户密码)
usermod命令(修改属性)
userdel命令(删除用户)
用户账号的初始配置文件
文件按来源
组账号管理
组帐号文件
增加、管理、删除组账号
groupadd 命令(添加组账号)
gpasswd命令(添加、设置、删除组成员)
groupdel命令(删除组账号)
先查询账号信息
groups命令(查询用户账户所属的组)
id命令(查询用户账户的身份标识)
w命令(查询当前主机的用户登录情况)
管理目录和文件的属性
查看目录和文件的属性
设置目录和文件的权限
设置目录和文件的归属
设置目录和文件的默认权限
umask命令
用户账户 | 说明 |
超级用户(root) | root是linux操作系统的超级用户账号对主机拥负全部的权限类似于Windows操作系统的administrator用户只有当进行系统管理系统的管理、维护任务时,才建议使用root用户登陆系统日常处理使用普通用户足以 |
普通用户 | 普通用户有root用户或其他管理员创建拥有的权限收到一定的限制一般只在自己的家目录拥有玩正增的权限 |
系统用户 | 在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等 |
类型 | 说明 |
基本组 | 每个用户必须添加的指定组,基本的组账号只有一个在/etc/passwd文件中记录该用户的基本组GID号 |
附加组 | 用户除了基本组以外,用户可以数以多个附加组 |
Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号),对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。root 用户账号的 UID 号为固定值 0,而程序用户账号的 UID
号默认为 1~499,500~60000 的 UID 号默认分配给普通用户使用。与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~60000 的 GID 号默认分配给普通组使用
/etc/passwd : 每一行对应一个用户的账号记录在文件开头包括超级用户root及个程序用户的帐号信息,系统中新增的用户账号信息将保存到文件末尾,文件的每一行内容中包含了七个用 “ :”(冒号)分隔的配置文件 :shutdown : x : 6 : 0 : shutdown : /sbin : /sbin/shutdown
第一字段:用户账号的名称,也是登录系统时使用的识别名称
第二字段:经过加密的用户密码字串,或者密码占位符“x”
第三字段:用户账号的 UID 号
第四字段:所属基本组账号的 GID 号
第五字段:用户全名,可填写与用户相关的说明信息
第六字段:宿主目录,即该用户登录后所在的默认工作目录
第七字段:登录 Shell 等信息,用户完成登录后使用的 Shell
/etc/shadow文件又被称为 “影子文件” ,其中保存有各个用户账号的密码信息,因此对shadow文件访问应用进行严格限制默认只有root用户能够读取shadow文件中的内容而且不允许编辑文件中的内容每一行对应一个用户的密码记录,文件的每一行内容包含了九个 “ :” (冒号)分隔的配置字段 :shutdown : * : 20081 : 0 : 99999 : 7 : : :
第一字段:用户账名称
第二字段:使用 SHA-512(512为秘钥长度)(哈希算法中的一种)加密的密码字串信息,当为“*”或“!!”时表示此用户不能登录到系统。若该字段内容为空,则该用户无须密码即可登录系统
第三字段:上次修改密码的时间,表示从 1970 年 01 月 01 日算起到最近一次修改密码时间隔的天数(unix发布的时间)
第四字段:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为 0,表示不进行限制
第五字段:密码的最长有效天数,自本次修改密码后,经过该天数以后必须修改密码。默认值为 99999,表示不进行限制
第六字段:提前多少天警告用户密码将过期,默认值为 7
第七字段:在密码过期之后多少天内禁用此用户
第八字段:账号失效时间,此字段指定了用户作废的天(从 1970 年 01 月 01日起计算),默认值为空,表示账号永久可用
第九字段:保留字段,目前没有特定用途
useradd 【选项】 登录名
常用命令选项:
-u: 指定用户的uid号要求uid号未被其他用户使用
-d: 指定用户的宿主目录位置,只能用绝对路径指定目录,不需要实现创建目录
-e: 指定用户的账户实现时间,可使用 YYYY-MM-DD 的日期格式
-g: 指定基本组名(或GID号),对应的组名必须已存在的
-G: 指定用户的附加组名(或使用GID号),对应的组名必须存在
-M: 不建立宿主目录
-s : 指定用户的登录shell,(比如/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)
passwd 【选项】【账号名称】
常用命令选项:
-d: 清空指定用户的密码,仅使用用户名登陆即
-l : 锁定用户账户
-S: 查看用户账户的状态(是否被锁定)
-u: 锁定用户账户
usermod【选项】【登录名】
常用命令选项:
-l: 更改用户的登陆账号名称 (login Name)
-L: 锁定用户账户
U: 解锁用户账户
-u: 修改用户的UID号
-d: 修改用户的宿主目录位置
-e: 修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g: 修改用户的基本组名(或使用GID号)
-G: 修改用户的附加组名(或使用GID号)
-s: 指定用户的登录shell
userdel【选项】【登录名】
常用命令选项:
-r : 同时删除宿主目录
新建文件账号时,从/etc/skel文件目录中复制(隐藏文件)
. /bash_profile : 用户的环境变量
. /bashrc : 用户的bash环境,保存用户的个性化设置
. /bash_logout : 用户的退出情况信息
组账号管理命令的使用相对较少,主要包括 groupadd、groupdel、gpasswd等
对应的组账号可分为基本组和附加组两种类型。每一个用户账号可以是多个组账号的成员,但是其基本组账号只有一个。在/etc/passwd 文件中第 4 字段记录的即为该用户的基本组 GID 号。而对于该用户还属于哪些附加组,则需要在对应组账号的文件中体现
与组账号的配置文件有两个,分别是/etc/group 和/etc/gshadow。/etc/group用于保存组账号名称、GID 号、组成员等基本信息,/etcgshadow用于保存组账号的加密密码字串等信息(但是很少使用到)。某一个组账号包含哪些用户成员,将会在 group 文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用“,”(逗号)分隔
geoupadd 【选项】【组】
常用命令选项:
-g: 指定组的GID(默认从 500 开始自动分配,系统组使用 1-499)
-r: 创建系统组(GID 范围 1-499,默认不指定时普通组 GID 从 500 开始)
-f: 若组已经不存在,不报错(静默处理)
-o: 允许GID重复(与-g配合使用,覆盖唯一性检查)
-p: 设置组密码(不推荐,实际多用gpasswd管理组成员)
注意!!!
需 root 用户或有 sudo 权限才能执行。
若未指定 -o,重复的 GID 会导致创建失败。
系统组和普通组:
系统组用于系统服务(如bin,daemon),GID 1-499
普通组用于用户管理,GID 500+
gpasswd【选项】【组】
常用命令选项:
-a: 添加到用户组
-d: 从组中删除用户
-A: 指定组管理员
-M: 指定组成员与-A类似
-r : 删除组密码
-R: 限制用户登录组,只有组中的成员才可以使用newgrep命令加入该组
goruped【选项】【组】
常用命令选项:
-h: 显示帮助信息
-f : 强制删除用户组,即使有用户存在
groups【选项】....【用户名】....
id【选项】....【用户】....
常用命令选项:
无选项: id 命令会显示用户的 UID(用户标识号)、GID(组标识号)以及所属的所有组
-u: 该选项用于只显示用户的 UID
-g: -g 选项用于只显示用户的基本组 GID
-G: 显示用户所属的所有组的 GID,包括基本组和附加组
-n: 通常与 -u、-g 或 -G 结合使用,用于显示名称而不是 ID
-z: 以 NUL(空字符)作为输出字段的分隔符,而不是默认的空格
w【选项】【用户名】
常用命令选项:
-a: 显示所有用户的信息(包括非活动用户)
-h: 隐藏输出的标题行
-l: 使用长格式输出,显示更多细节(如登录来源 IP)
-s: 使用短格式输出,仅显示关键信息(默认行为)
-u: 显示用户的真实登录名(而非用户名)
-i: 显示 IP 地址而非主机名(适用于远程登录用户)
Linux系统中分为三类用户,系统用户,普通用户和程序用户三类,能登录操作系统的只有两类用户,普通用户和管理员用户
drwxr-xr-x. 2 root root 4.0K 3月22日 17:10 ssh
第 3、4 字段的数据分别表示该文件(或目录)的属主、属组,上例中/etc 目录和/etc/passwd 文件都属于 root 用户、root 组;而第 1 字段的数据表示该文件(或目录)的访问权限,如“drwxr-xr-x”和“-rw-r--r--”。权限字段由四部分
第1 个字符:表示该文件的类型,可以是 d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母“l”(链接文件)等。
第 2~4 个字符: 表示该文件的属主用户(User)对该文件的访问权限。
第 5~7 个字符: 表示该文件的属组内各成员用户(Group)对该文件的访问权限。
第 8~10 个字符: 表示其他任何用户(Other)对该文件的访问权限。
第 11 个字符:这里的“.”与 SELinux 有关,目前不必关注
在表示属主、属组内用户或其他用户对该文件的访问权限时,主要使用了三种不同的权限字符:r、w、x,分别表示可读、可写、可执行。若需要去除对应的权限,则用“-”表示
r(4) | 查看文件内容 查看目录内容(显示子目录、文件列表) |
w(2) | 修改文件内容 修改目录内容(在目录中新建、移动、删除文件或子目录) |
x(1) | 执行该文件(程序或脚本) 执行 cd 命令进入或退出该目录 |
在设置针对每一类用户的访问权限时,可以采用两种形式的权限表示方法:字符形式和数字形式,r、w、x 权限字符可分别表示为八进制数字 4、2、1,表示一个权限组合时需要将数字进行累加。例如,“ rwx ” 采用累加数字形式表示成“7”,“r-x”采用累加数字形式表示成 “ 5 ” ;而 “ rwxr-xr-x ” 由三个权限段组成,因此可以表示为“755”,“ rw-r--r-- ” 可以表示成“644”
chmod [ugoa..] [+-=] [rwx] 文件或目录...
u: 文件属主
g: 文件属组内的用户
o: 其他任何用户
a: 所有用户(u、g、o的总和)
+: 增加相应的权限
-: 减少相应的权限
=: 仅设置对应的权限
需要设置文件或者目录的归属时,主要通过 chown 命令进行,可以只设置属主或属组,也可以同时设置属主、属组。同时设置属主、属组时,用户名和组名之间用 “ : ” 进行分隔。若只设置属组,则需使用 “ : 组名 ” 的形式,如果只需要设置目录或文件的属主,直接以用户名表示归属即可,递归修改目录归属同样可以使用“-R”选项
chown 属主[[:属组]] 文件或目录..
属主: 拥有文件或目录的用户
属组: 拥有文件或目录的用户所在的组
umask 就是默认指定目前用户在新建文件或目录时的权限默认值。执行“umask 022”即可以设置当前用户的默认权限。直接执行“umask”命令就是查看当前系统的默认权限。需要注意的是umask 的分数指的是“该默认值需要减掉的权限”。因此 r、w、x 分别是 4、2、1,如果执行“umask 022”代表group和other 被拿掉了权限"2",也就是被拿掉了“写”权限
一个文件默认的最大权限为666
一个目录默认最大的权限为777
使用root用户创建一个新文件的默认的权限为644
使用root用户创建一个新目录的默认的权限为755
使用普通用户创建一个新文件的默认的权限为664
使用普通用户创建一个新目录的默认的权限为775
如果执行命令“umask 000”,代表文件的默认权限是“777”
umask
是一种用于定义新创建文件或目录默认权限的机制。它通过从最大可能权限中减去掩码值,从而决定实际分配给文件或目录的初始权限
0 | --- | 无权限 |
1 | --x | 只具有执行权限 |
2 | -w- | 只具有写权限 |
3 | -wx |
具有写和执行全新啊 |
4 | r-- | 只具有读权限 |
5 | r-x | 具有读和执行权限 |
6 | rw- | 具有读和写权限 |
7 | rwx | 具有读、写和执行权限 |
[zhangsan@localhost ~]$ umask 0002