用户与组

266 阅读11分钟

用户与权限

用户 与 用户组

       超级用户(Superuser)

       默认是root用户。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。在生产环境,一般禁止root账号远程登录SSH连接服务器,以加强系统安全。

UID 与 GID 为 0

 

       普通用户(Regular Users)

       这类用户一般是由具备系统管理员root的权限的运维人员添加的。

       在 centos 7中 ,普通用户的UID范围为1000-60000。

 

       系统用户(System Users) 程序用户

       与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在,且默认情况不能登录系统。它们是系统正常运行必不可少的,他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的bin、adm、nodoby、mail用户等。

       UID范围 1-999。

 

用户信息存放目录

       /etc/passwd

用户口令文件

/etc/shadow

 

image.png

字段1:用户名

 

字段2:密码加密值 当此字段为*或!!时,表示用户不能登录到此系统

当为空时,表示用户无需密码即可登录

 

字段3:上次修改密码时间

从1970/1/1到上次修改密码的天数

若为0,则用户应该在下次登录系统时更改密码

 

字段4:最小修改密码间隔天数,即两次修改口令之间所需的最小天数

若不设置,默认为0

空字段 与 0 都表示当天即可修改。

 

字段5:密码有效期  若为99999,表示永久有效。

 

字段6:警告时间    表示从系统开始警告用户到用户密码正式失效之间的天数

空字段或者 0 表示没有密码警告期。

 

字段7:密码过期后的宽限天数。

密码过期后,仍然接受使用此密码进行登录的天数(在此期间,用户应该在下次登录时修改密码)

 

字段8:账户失效时间。从1970/1/1日起,到用户被禁用的天数 默认为空。

账户过期后,用户将不被允许登录

字段9:保留字段。此字段保留作将来使用。

添加账号

useradd 参数 用户名  参数为可选项

    -c   //指定用户的注释字段,可以是用户的描述或备注信息

    -d   //指定用户的主目录路径

    -f    //指定在密码过期后多少天内,用户仍然能够登录系统

    -g   //指定用户的主要组

    -G   //指定用户的附加组,多个组之间使用逗号分隔

    -m   //在创建用户时同时创建用户的主目录

 

修改登录密码  参数为可选项

passwd 参数 用户名 密码   //root用户 指定 用户更改密码

普通用户只能更改自己的密码

-l, --lock   //锁定用户账户,禁止用户登录系统

-u, --unlock   //解锁用户账户,允许用户登录系统

-d, --delete   //删除用户密码,将密码设置为空

-e, --expire   //强制用户在下次登录时更改密码

-n, --mindays "DAYS"   //设置两次密码更改之间的最小天数

-x, --maxdays "DAYS"   //设置密码的最大使用天数

-w, --warndays "DAYS"   //设置密码过期警告的天数

-I, --inactive "DAYS"    //设置用户账户在密码过期后的非活动期限

-S, --status   //显示用户密码的状态信息

-r, --root   //以超级用户(root)身份运行passwd命令

 

更改用户信息

       usermod 参数

              -c, --comment "COMMENT"   //修改用户的备注信息

-d, --home "HOME_DIRECTORY"   //更改用户的主目录

-e, --expiredate "YYYY-MM-DD"   //设置用户账户的过期日期

-g, --gid GROUP   //修改用户的主要组

-aG, --append GROUPS   //将用户添加到附加组列表中

-l, --login NEW_LOGIN   //修改用户的登录名

-s, --shell SHELL   //更改用户的登录shell

-L, --lock   //锁定用户账户,禁止登录

-U, --unlock   //解锁用户账户,允许登录

-p, --password PASSWORD   //设置用户的密码(使用加密后的密码)

-R, --root CHROOT_DIR   //将操作限制为给定的chroot目录

-u, --uid UID   //修改用户的UID

-G, --groups GROUPS   //设置用户的附加组

-a, --append   //将用户添加到附加组,而不是替换现有的附加组列表

 

 

删除用户

       userdel -r 用户名   //删除用户与其家目录

                                          不加参数仅删除用户

 

 

 

组的类别:

 

用户组(User Group)  私有组

用户组是一组用户的集合。每个用户可以属于一个或多个用户组。用户组的目的是为了简化权限管理和资源共享。一个用户组可以有一个组ID(GID)。

 

辅助组(Supplementary Group)  附加组 公共组

辅助组是用户除了主要组外所属的其他组。通过将用户添加到辅助组,可以给予用户访问其他组拥有的文件、目录和资源的权限。

 

主要组(Primary Group)

每个用户在系统中都有一个主要组,该组的GID与用户的UID相关联。主要组是当用户登录系统时默认使用的组。

 

系统组(System Group)

系统组是为了管理系统进程、服务和资源而创建的特殊组。它们通常用于运行特定的系统任务或服务,不用于一般用户。

 

特殊组(Special Group)

特殊组是一些具有特殊权限和功能的系统组。例如,“root”组是系统管理员的特殊组,具有系统最高权限。

 

 

组信息存放目录

/etc/group:保存组账号基本信息

/etc/gshadow:保存组账号的密码信息

 

group文件每行分成了4段,每个字段含义如下:

 

字段1:组账号名称

字段2:密码占位符x;

通常不需要设置组密码。由于安全原因,该密码被记录在/etc/gshadow中,因此显示为'x'。类似/etc/shadow文件

字段3:组编号GID

字段4:本组的成员用户列表 (一般不包括基本组对应的用户帐号),多个成员之间以逗号“,"分隔

 

创建组

groupadd 参数 组名   参数为可选项

       -g, --gid GID   //指定用户组的GID(组ID)

-o, --non-unique   //允许创建一个非唯一的GID。该选项通常与-g一起使用

 

添加 与 删除 组员

gpasswd参数 组名

-a   //向组内添加一个用户

-d   //从组内删除一个用户成员

 

修改用户组

groupmod 参数 组名

-g, --gid GID   //修改用户组的GID(组ID)。

-n, --new-name NEW_GROUP   //修改用户组的名称。

 

删除用户组

       groupdel 组名

 

 

查询信息

       查看用户所属组

       groups  用户名

 

       查看用户的 id标识 与 组的id标识

       id 用户名

 

       查看用户的详细信息

       finger 用户名

 

查询已登录到主机的用户信息

       w 参数 用户名

              -h   不显示输出信息的标题

-l    用长格式输出

 

       显示当前登录系统的用户的信息

       who 参数 文件名      参数和文件名 均为可选项

       -H   //已列表的形式显示信息

 

查询最近三次登录的用户信息

       users

 

查询系统上过去登录用户的信息

       last 参数 过滤参数(USERNAME...  TTY...)

       -a   //显示更详细的信息,包括终端设备的主机名和终端类型

-d   //显示登录的终端设备的下线时间

-n   //仅显示指定数量的最近登录记录

 

 

 

 

 

文件 与 目录 的归属

 

查看文件 与 目录的信息

       ls -l 文件名/目录

       ll 文件名/目录      是上面命令的缩写

 

 

UGO权限每3个字符为一组 其中:

rw-  为 属主 的权限

r--  为 属组 的权限

r--  其他人的权限

 

“.” 表示无ACL权限,“+”表示设置了ACL权限

 

 

 

修改 属主 与 属组

       chown  参数 属主 : 属组 文件名/目录   //可同时修改 属主 与 属组 参数为可选项

              只修改单项 格式

 chown 属主 文件名/目录

 chown  :属组 文件名/目录

 

              参数:

-R   //递归地更改指定目录及其子目录下的所有文件和目录的属组

-f   //不显示错误信息

-v   //显示详细的输出,包括每个更改的文件或目录

 

       chgrp 参数 属组 文件名/目录   //参数为可选项

              参数与chown一致

 

修改一般使用chown命令

 

文件 与 目录的权限

r (读取)   可读取文件内容   可列出目录内容

w (写入) 可修改文件内容   可在目录中新建、移动、删除文件或子目录

x (执行)  可作为程序执行   可切换目录

 

文件是否可以被删除和本身权限没有关系,和所在文件夹有关

 

当只有 r 权限时,不能进入该目录,也不能在目录内创建、删除、修改文件。只能通过 “ls 目录路径”查看目录内的文件名称,不能查看文件的属性信息。

 

当只有 w 权限时,不能进入目录,不能列出目录内的文件,也不能在目录内创建、删除、修改文件。必须同时有 x 权限,才能创建、删除、修改目录内的文件。

 

当只有x权限时,只能进入该目录,但不能列出目录内容,也不能创建文件。

 

x 权限是目录最基础的权限,没有x权限,其他权限也会受影响。

设置文件 与 目录的权限

chmod 参数 对象 赋值 权限类型 文件名/目录   //参数为可选项

-R   //递归地更改指定目录及其子目录下的所有文件和目录的属组

-v   //显示详细的输出,包括每个更改的文件或目录

 

下列可由于数字组代替  如 755  或 1555

              对象

              u 属主(user)

g 属组(group)

o 其他人(other)

a 所有人 (u+g+o)

 

              赋值

              + 增加权限

- 减少相应权限

= 覆盖对应的权限

 

权限类型

r   读

w   写

x   执行

 

 

文件的特殊权限

权限项SUIDSGIDsticky bit
字母表示sst
数字表示421

 

SUID 与 SGID

       作用均为 在用户执行该程序时,用户的权限是该程序文件 属X 的权限

       SUID只适用于 属主

SGID只适用于 属组

sticky bit 只适用于 其他用户

 

SUID

配置要求:

SUID只对可执行的二进制文件起作用,shell脚本设置后不生效

如果设置了suid后,属主的可以执行权限x会变成s(小写),若为S(大写)那文件的属主没有执行权限,设置的SUID无效

SUID对目录设置无意义

 

passwd程序文件中的SUID权限为系统默认配置

实际项目中,出于安全考虑,一般不会人为设置或修改SUID权限

SGID

作用于二进制程序时

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

执行此程序的用户将拥有此程序的属组权限

 

作用于目录时,此目录下所有用户新建文件的默认属组是这个目录的属组

 

在设置SGID的文件后,其属组权限位上的可执行权限x会变成s(小写),若为S(大写)说明属组没有执行权限,设置的SGID无效。

 

 

sticky bit

       只能作用于 目录

       此目录中的文件,只能被所有者自已删除

 

       具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权

在目录设置Sticky 位,只有文件的所有者或root可以删除该文件

 

设置sticky权限后,除拥有目录的用户执行权限x会变成t(小写), 若为T(大写)说明其他用户 没有可执行权限,设置的Sticky无效

 

 

 

 

权限掩码umask

 

umask的作用

控制新建的文件或目录的权限,默认权限去除umask的权限就是新建的文件或者目录的权限。

 

       umask   //查看 配置

       umask 权限值   //权限为 数字组  默认 0022  第一个数字为 特殊权限

 

目录的落地权限=0777-0022=0755。

目录必须要有执行权限,用户才能访问该目录。

 

文件的落地权限=0666-0022=0644。

系统出于安全考虑,创建文件时去掉了所有的执行权限,防止一些不安全的程序文件被错误执行。