Linux:用户,用户组,ACL,身份转换

Linux:用户,用户组,ACL,身份转换在 Linux 系统中 用户管理是系统管理的重要部分

1,用户与用户组

1.1,用户分类

超级用户(UID=0):root,它具有一切权限,只有进行系统维护(例如建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。

系统用户(UID=1~999):系统正常工作所必需的内建的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,系统用户不能用来登录,如bindaemonadmlp等用户。

普通用户(UID=1000~60000):是为了让使用者能够使用Linux系统资源而建立的;每个用户都有一个数值,称为UID

1.2,用户

与用户(user)相关的配置文件:

  • /etc/passwd :用户(user)的配置文件;
  • /etc/shadow :用户(user)影子口令文件;

登录过程:

  • 先查找/etc/passwd里面是否有你输入的账号?如果没有则退出,如果有的话则将该账号对应的UID与GID(在/etc/group中)读出来,另外,该账号的家目录与shell设置也一并读出。
  • 再来则是核对密码表。这时Linux会进入/etc/shadow里面找出对应的账号与UID,然后核对一下你刚刚输入的密码与里面的密码是否相符。
  • 如果一切都OK的话,就进入shell管理阶段。

/etc/passwd文件结构:

root x 0 0 root /root /bin/bash
账号名称 密码,因为密码放到了/etc/shadow中了,所以你会看到x UID GID 用户信息说明栏 家目录 Shell

/etc/shadow文件结构:

root 一对奇怪的东西 18596 0 99999 7
账号名称 密码 最近修改密码日期 密码不可被修改的天数 密码需要重新修改的天数 密码需要修改期限前的警告天数 密码过期后的账号宽限时间 账号失效日期 保留
密码字段,密码经过编码过的,虽然很难激活成功教程,但是不是不能,所以这个文件的默认权限是【-rw-------】或【-----------】 时间:1970年1月1日为开始,1971年1月1日就是366 在密码过期的几天后,如果用户还没有登录,则账号将不在使用 通常存在于收费服务中
修改密码那天的值 如果是0表示随时可以修改密码;如果是20表示20天后才能修改密码 表示多少天后需要修改密码,99999表示273年,对密码修改没有强制要求。

Ubuntu下修改root密码:

sudo passwd root

1.3,用户组

与用户组(group)相关的配置文件:

  • /etc/group:用户组(group)的配置文件;
  • /etc/gshadow:用户组(group)影子口令文件;

/etc/group文件结构

root x 0
组名 用户组密码,同样是x GID 此用户支持的账号名称
用户组ID 用户组下用户的成员

有效用户组和初始用户组

初始组:用户创建时默认生成的群组,记录在/etc/passwd的第四栏中,无需记录在/etc/group的第四栏。

有效用户组:使用groups可以查看用户当前所属群组,第一个群组为该用户的有效群组。使用newgrp groupname可以将用户的有效群组切换为groupname。

 gshadow文件中记录了群组账号、群组密码(开头为!表示无法登陆)、群组管理员密码和群组成员列表。

2,账号管理

2.1,新增、删除和修改用户

查看我是谁

whoami

新增用户

useradd -u uid -g gid -G gid -mM -c 说明 -d 目录 -s 目录
UID 初始用户组GID 次要用户组GID

-m:强制要建立使用者家目录

-M:不要建立使用者家目录(默认)

用户说明 指定某个目录为家目录 后接shell,若没有指定则默认是/bin/bash
直接指定一个数字为UID 初始用户组 还可以加入的用户组
useradd shao 通过passwd 账号设置密码后,完成用户创建 系统默处理(useradd -D查看默认): 1、在/etc/passwd里面建立一行与账号相关的数据,包括建立UID/GID/家目录等; 2、在/etc/shadow里面将此账号的密码相关参数写入,但是尚未有密码; 3、在/etc/group里面加入一个与账号名称一模一样的组名; 4、在/home下面建立一个与账号名称一模一样的组名;
useradd -u 1500 -g users shao //创建UID为1500,用户组为users,名为shao的账号 useradd -r shao //创建一个名为shao的系统账号,系统自动分配uid,一般小于1000 //系统账号主要是用来执行系统所需服务的权限设置,所以系统账号默认不会主动建立家目录

修改密码

passwd 用户名 //用户名不填,默认为当前用户

修改账号日期相关

chage 账号名 //修改账号信息

修改账号信息

usermod 参数 用户名

 删除用户

userdel -r username //-r 删除用户home //删除内容:用户账号密码参数;用户组参数;用户个人文件数据;

2.2,新增,删除和修改用户组

新增用户组

groupadd -g gid -r 用户组名称
GID 建立系统用户组

修改用户组

groupmod -g gid -n group name 用户组名称
修改GID 修改用户组名称

删除用户组

groupdel 用户组名

3,ACL使用

ACL:访问控制列表,提供传统的属主、所属群组、其他人的读、写、执行权限之外的详细权限设置。ACL针对单一用户、单一文件或目录进行r、w、x的权限设置,对于特殊权限的设置非常有帮助。

getfacl:获取某个文件/目录的ACL设置选项。

setfacl:设置某个目录/文件的ACL规范。

3.1、setfacl&getfacl

setfacl

getfact

-b:删除所有的ACL设置参数 -m:设置后续的ACL参数给文件使用,与x不兼容。 目标文件名
-k:删除默认的ACL参数
-R:递归设置ACL,包括子目录 -x:删除后续的ACL参数,与m不兼容。
-d:设置默认ACL参数,只对目录有效

3.2,针对特定使用者的方式

设置规范:【u:[使用者账号列表]:[rwx]】

touch shao ls -ll setfacl -m u:shao:rx shao ls -ll

多了一个x和一个+

getfacl shao

file:shao 文件名
owner:root 文件的拥有者
group:root 文件的属主
user::rw- 文件拥有者的权限
user:shao:r-x 针对shao用户的权限设置rx,与拥有者root的不同
group::r-- 文件用户组权限仅有r
mask::r-x 默认的有效权限
other::r-- 其他人拥有的权限

 3.3,特定的单一用户组的权限设置

设置规范:【g:[用户组列表]:[rwx]】

setfacl -m g:shao:rx acl shao getfacl shao

多了一个group:shao:r-x,就是表示对shao整个用户组的权限。

3.4,针对有效权限设置

设置规范:【m:[rwx]】

setfacl -m m:r shao getfacl shao

mask表示一种限制,shao用户和shao用户组的权限与mask权限取交集,才表示用户和用户组真正的权限。

4,身份转换

避免无心之失对系统造成的损害;用低权限启动系统,减小入侵损害;软件的限制;

4.1,转换身份指令

su:将user转成root,需要root密码

su -:将当前用户转换为root,且使用root的环境设置
-l:将当前用户转换为username,同时使用其相关环境变量。 username
-m:使用当前用户的环境设置值
-c:将后接指令执行一次

sudo:不需要root密码,仅以当前普通用户密码执行一次root权限指令

sudo -u username(将用户身份转换为username) command

4.2,系统用户查询

who:查询已登录用户

last:查询一个月来用户的登录信息

lastlog:查询用户登录终端和最后登录时间

今天的文章 Linux:用户,用户组,ACL,身份转换分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-07 13:46
下一篇 2025-01-07 13:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/104361.html