侧边栏壁纸
博主头像
伯淳的个人博客博主等级

行动起来,活在当下

  • 累计撰写 35 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux账号管理与ACL权限设置

Administrator
2023-10-18 / 0 评论 / 1 点赞 / 64 阅读 / 10846 字

Linux的账号与用户组

1./etc/passwd文件结构

cat /etc/passwd

①root:②x:③0:④0:⑤root:⑥/root:⑦/bin/bash

①账号名称

②密码

③UID

④GID

⑤用户信息说明栏

⑥家目录

⑦shell

2./etc/shadow文件结构

cat /etc/shadow

①root:②$y$j9T$ol9.VL1YpZM.3U65Q8aEK/$aqb.U2myNnA6qk8bPONiqpldzTFeo2D/HHxwiN1Vjc.:③19645:④0:⑤99999:⑥7:⑦:⑧:⑨

①账号名称

②密码

③最近修改密码的日期

④密码不可被修改的天数(与③比)

⑤密码需要重新修改的天数(与③比)

⑥密码需要修改期限前的警告天数(与⑤相比)

⑦密码过期后的账号宽限时间(密码失效日)(与⑤ 比)

⑧账号失效日期

⑨保留

3.Linux日期时间是以1970年1月1日作为1而累加的日期(centos 7),其他发行版可能有所不同。

echo $(($(date --date="2015/05/04" +%s)/86400+1))

该命令计算某个日期的累积日数,2015/05/04是想要计算的日期,86400是一天的秒数,%s是自1970年1月1日以来累计的秒数。由于bash仅支持整数,因此最终加1补齐1970/01/01当天。

4./etc/group文件结构

cat /etc/group

①root:②x:③0:④

①组名

②用户组密码(通常不需要设置,给用户组管理员用的)

③GID

④此用户组支持的账号名称

5.有效用户组与初始用户组

groups

该命令第一个输出的用户组是有效用户组

通常有效用户组的作用是新建文件,新建文件属于有效用户组。

newgrp 用户组名

有效用户组的切换,注意:想要切换的用户组必须是拥有的支持的用户组,用完newgrp后必须用exit退出,因为newgrp命令是以一个新的shell来提供这个功能的。

6./ect/gshadow文件结构

cat /etc/gshadow

①root:②*:③:④

①组名

②密码栏(开头为!表示无合法密码,所以无用户组管理员)

③用户组管理的账号

④有加入该用户组支持的所属账号

gshadow最大的功能就是建立用户组管理员

账号管理

1.新增用户

useradd [-u UID] [-g 初始用户组] [-G 次要用户组] [-mM] [-c 说明栏] \

> [-r] [-d 家目录绝对路径] [-s shell] 使用者账号名

-r:建立系统账号,系统账号默认不会主动建立家目录。更多的可选参数可通过man useradd查看

useradd -D 可查看useradd的默认值;

如果不允许用户登录系统获取shell,可将SHELL参数设置成/sbin/nologin

useradd这个程序在建立linux上的账号时,至少会参考:

  • /etc/default/useradd

  • /etc/login.defs

  • /etc/skel/*

这些文件

2.设置密码

passwd [--stdin] [账号名称] <==所有人都可以修改自己的密码

passwd [-l] [-u] [--stdin] [-S] \

> [-n 日数] [-x 日数] [-w 日数] [-i 日期] 账号 <==root功能

选项参数:

--stdin :用前一个管道的输入作为密码输入,在shell脚本很方便(Centos有,其他发行版不一定有这个可选参数)

-l :是 Lock 的意思,会将/etc/shadow 第二栏最前面加上 ! 使密码失效;

-u :与l相对,是 Unlock 的意思!

-S :列出密码的相关参数。

-n :shadow 的第 4 栏位,多久不可修改密码

-x :shadow 的第 5 栏位,多久內必须修改密码

-w :shadow 的第 6 栏位,密码过期前的警告天数

-i :shadow 的第 7 栏位,密码失效天数

3.chage(更详细的密码参数显示功能)

chage [-ldEImMW] 账号名

参数意义man chage 查看。

chage有一个很棒的功能,如果想让用户在第一次登录时,强制他们一定要修改密码后才能登录使用系统资源,可这样处理:

useradd test

echo "test" | passwd --stdin test

chage -d 0 test

chage -l test | head -n 3

上述命令在Centos 7可执行,其他发行版方法会有所不同。

4.usermod(对账号相关数据进行微调)

usermod [-cdegGlsuLU] username

参数意义man usermod 查看。

5.删除用户数据

userdel [-r] username

-r:连同使用者的家目录一起删掉

注意:①如果某账号是暂时不使用,不一定要删除,可将/etc/shadow的账号失效日期(第八字段)设置为0,相关数据都会保留下来;

②在删除账号前,先用find / -user username 查出整个系统内属于username的文件,然后再删除。

6.查询自己或其他人的相关UID/GID等信息

id [username]

7.finger(查看用户相关信息)

新的版本已经默认不安装这个软件了。

8.chfn(修改/etc/passwd第五栏位)

chfn [-foph] 账号名

9.chsh

chsh [-ls]

-l:列出系统可用的shell,是/etc/shells的内容

-s:设置修改自己的shell

chfn与chsh这两个命令,都能让一般用户修改/etc/passwd这个系统文件,所以这两个文件的权限一定是SUID的功能。

9.新增,修改与删除用户组

groupadd [-g gid] [-r] 用户组名

-r:建立系统用户组

groupmod [-g gid] [-n group_name] 用户组名

-g:修改现有的GID数字

-n:修改用户组名称

groupdel [groupname]

10.用户组管理员

除了系统管理员,也可让某个用户组建立一个管理员,管理账号加入/移出改用户组。

gpasswd groupname 设置groupname密码

gpasswd [-A user1,...] [-M user3,...] groupname

gpasswd [-rR] groupname

-A:将groupname的管理权交给后面的使用者

-M:将某些账号加入用户组

-r:将groupname的密码删除

-R:让groupname的密码栏失效

-a:将使用者加入这个用户组

-d:将使用者删除出这个用户组

主机的详细权限规划:ACL的使用

ACL中文译为访问控制列表,主要提供传统的属主、所属用户组、其他人的读、写、执行权限之外的详细权限设置。

ACL可以针对单一用户、单一文件或目录进行rwx的权限设置。

1.ACL的设置

setfacl [-bkRd] [{-m|-x} acl参数] 目标文件名

-m:设置acl参数,不可与-x合用

-x:删除后续的acl参数,不可与-m合用

-b:删除所有acl参数

-k:删除默认的acl参数

-R:递归设置acl参数(子目录)

-d:设置默认acl参数,只对目录有效,且在该目录下新建的数据(含文件)会继承此默认值。

①针对特定使用者

setfacl -m u:[使用者账号列表]:[rwx] 目标文件名

如果是u::[rwx],表示设置的是该文件拥有者

②针对单一用户组的权限设置

setfacl -m g:[用户组列表]:[rwx] 目标文件名

③针对有效权限(effective permission)的设置

setfacl -m m:[rwx] 目标文件名

用户或用户组所设置的权限必须存在于mask的权限设置内才有效。

注意:在设置没有任何权限的ACL语法中,权限的字段不可留白,应加上一个减号(-)。

2.查看acl

getfacl filename

用户身份切换

1.su

su [-lm] [-c 命令] [username]

-:单纯使用-如(su -)代表使用login-shell的变量文件读取方式登录系统。

若username为空,则代表切换root身份

-l:后面接使用者账号,也是login-shell方式

-m:-m与-p一样,表示使用目前的环境配置

-c:仅进行一次命令,执行完毕恢复原来身份

注意:单纯使用su 切换为root身份,读取的变量设置方式为非登录shell的方式,这种方式很多原来的变量都不会被修改。一般推荐用su - 方式切换root。

2.sudo

sudo [-b] [-u 新使用者账号] [命令]

-b:将后续的命令放到后台执行,不与当前的shell产生影响

-u:后面接切换的使用者,如无此项代表切换root

示例:以sshd身份创建文件

sudo -u sshd touch /tmp/mysshd

ll /tmp/mysshd

-rw-r--r--. 1 sshd sshd 0 Jul 21 23:37 /tmp/mysshd

※仅有规范到/etc/sudoers文件内的用户才能执行sudo命令,要通过visudo去修改这个文件

visudo的设置:

①单一用户可使用root所有命令,与sudoers文件语法

比如:让vbird1可以使用root的任何命令

[root@study ~]# visudo

....(前面省略)....

root ALL=(ALL) ALL <==找到这一行,大约在第98行

vbird1 ALL=(ALL) ALL <==新增的

....(底下省略)....

上面的解释:

使用者账号 登陆者的来源主机名称=(可切换的身份) 可执行的命令

②利用wheel用户组(也可改成自定义组)以及免密码的功能处理visudo

[root@study ~]# visudo

....(前面省略)....

%wheel ALL=(ALL) ALL <==大约在 106 行左右,请将这行的 # 拿掉,在最左邊加上 % ,代表后面接的是一個(群组)之意!

[root@study ~]# usermod -a -G wheel pro1 <==将 pro1 加入 wheel 的支持

[root@study ~]# visudo

....(前面省略)....

%wheel ALL=(ALL) NOPASSWD: ALL <==大约在 109 行左右,请将 # 拿掉!

即可实现wheel组的用户不需要密码登录sudo。

③有限制的命令操作

[root@study ~]# visudo <==注意是 root 身份

myuser1 ALL=(root) /usr/bin/passwd <==最后指令务必用绝对路径

④通过别名创建visudo(别名可以是账户,命令,主机;都需要大写)

[root@study ~]# visudo <==注意是 root 身份

User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2

Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

ADMPW ALL=(root) ADMPWCOM

好好理解这个别名的设置,通过别名,可以将多用户加入到管理员行列,而不需要一个一个设置。

⑤sudo的时间间隔

两次执行sudo的间隔在5分钟内,再次执行sudo时不需要密码。

⑥sudo搭配su的使用方式

[root@study ~]# visudo

User_Alias ADMINS = pro1, pro2, pro3, myuser1

ADMINS ALL=(root) /bin/su -

这样设置后,上述四个人只要输入sudo su - 并且输入自己的密码,立刻变成root身份,不需要root密码。这是实际环境中,多人公用一台主机常用的技巧。

用户的特殊shell与PAM模块

1.特殊的shell:/sbin/nologin

系统账号的shell就是使用/sbin/nologin,重点在于系统账号是无法登陆的。

这里无法登陆指的是:这个用户无法使用bash或其他shell来登录系统,并不是说这个账号无法使用其他的系统资源。

2.PAM模块(插入式验证模块)

PAM可以说是一套应用程序编程接口(API),他提供了一连串的验证机制,只要用户将验证阶段的需求告知PAM后,PAM就能返回用户验证的结果(成功或失败)。

※遇到远程连接机制无法用root登录时,可试下从PAM模块中找找原因。

PAM模块与其他程序的相关性

1

评论区