文章目录
- 使用者身份的切换
- 配置`sudo`
- 单一用户
- 群组处理
- 有限制的命令操作
- 特殊shell与PAM模块
- Linux用户信息传递
- 与当前系统上其他用户对话
- 建立大量账号
- 最后
在理解了前篇 篇六:用户权限控制与账号管理 后,我们继续深入用户权限控制关于用户身份切换、限制特殊权限相关的内容。
使用者身份的切换
操作服务器的几个建议:
- 使用一般账号(非root账号)进行系统操作,可以避免很严重的错误指令
- 使用较低权限启动系统服务
比对对于不同的系统服务,apache
、mysql
等服务,分别单独建立一个用户专门用来启动该服务,防止破坏整个系统 - 软件本身的限制
有些软件默认就是不允许root
身份登录的,比如elasticsearch
,只能使用一般用户登录
关于su
命令的使用,还有有要注意的地方的:
su [-lm] [-c 指令] [username]
- 单纯使用- ,代表 login -shell 方式登录系统,如果后面没有 使用者,则默认是 root身份
-l 与-类似,但后面需要加上要切换的使用者的账号,也是 login-shell的方式
-m 与-p命令一样,表示目前的环境设定,而不读取使用者的配置文件
-c 仅进行一次的命令,所以-c后面可以加指令
这个su
命令有没有那个-
,差距还是比较大的,如下:
单纯使用『 su
』切换成为 root 的身份, 读取的变量设定方式为 non-login shell
的方式,这种方式
很多原本的变量不会被改变,所以很多root的惯用指令,只能通过 绝对路径执行,因为 环境变量 并不是 root!
所以在切换身份到root时,务必使用su -
命令
如果未来防止root用户的密码泄露,有想要使用root的执行权限,就可以通过sudo
命令来实现 使用root身份来执行命令,而且只有/etc/sudoers
内的用户才可以使用 sudo
命令
基本使用如下:
sudo [-b] [-u 新使用者账号]
-b 将后续的指令放到背景中让系统自行执行,不与目前的shell产生影响
-u 后面可以接要切换的使用者,若无此选项,则表示切换到root
执行 sudo
的流程如下:
所以 sudo
命令的重点就是,必须要看/etc/sudoers
的设定值,可以使用sudo
的是通过输入用户自己的密码来执行后续的指令串的,但是sudoers
文件不建议直接修改,最好是通过visudo
命令进行修改
配置sudo
除了 root
之外的其他账号,若想要使用 sudo
执行属于 root
的权限指令,则 root
需要先使用 visudo
去修改 /etc/sudoers
,让该账号能够使用全部或部分的 root
指令功能, 这是由于 etc/sudoers
是有设定的语法的,如果设定错误的话,会造成无法使用功能sudo
指令的不良后果,所以需要 visudo
去修改,这样在结束修改的时候,系统会自动检查语法
一般在某用户使用 sudo
命令时,是需要输入 该用户的密码的,但是如果两次执行 sudo
的时间间隔在 五分钟之内,那么再次执行 sudo
就不用再次输入密码了
单一用户
设置单一用户可以进行root所有指令:
在主机可以修改的位置如下:
这其中四个组件的含义如下:
- 使用者账号:即系统的那个账号可以使用
sudo
这个指令 - 登入者的来源主机名:指定客户端计算机,相当于信任源
- 可切换的身份:该账号可以切换为什么身份来下达后续的指令,默认的root表示可以切换为任何人
- 可下达的指令:可以使用该指令下达什么命令
上面的 ALL
是个特殊的关键词,表示 任何身份、主机或指令的意思
群组处理
对于群组的处理:
上面的设定值就表示 任何加入wheel这个群组的使用者,都可以使用sudo
切换身份来操作任何指令,就相当于是 群管理员了。
有限制的命令操作
实现用户仅能进校部分系统任务,比方说,系统上面的 myuser1
仅能够帮 root
修改其他用户的密码时,亦即『当使用者仅能使用 passwd
这个指令帮忙 root
修改其他用户的密码』时 的情况
如果现在有 若干个用户,需要设置为同样的权限,可以不用写这样的若干行代码,而是通过 别名实现:
如果需要大量执行很多root的工作,可以使用sudo
搭配su
使用:
特殊shell与PAM模块
考虑建立仅使用系统资源,但是不登录系统的权限,就是可以使用部分系统资源,但是无法使用bash或者shell来登录系统,在Linux主机中,各个系统账号,打印作业由 lp
这个账号在管理, WWW
服务由 apache
这个账号在管理, 他们都可以进行系统程序的工作,但是『就是无法登入主机取得互动的 shell』而已
PAM:可以说是一套应用程序编程接口 (Application Programming Interface, API),他提供了一连串的验证机制,只要使用者将验证阶段的需求告知 PAM 后, PAM 就能够回报使用者验证的结果 (成功或失败)。
执行流程如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-osrXzymQ-1667999827129)(02鸟哥的Linux私房菜10-14.assets/image-20220609210210360.png)]
关于PAM的其他内容,这里不再整理 详见 《鸟哥的Linux私房菜》13.5.3、13.5.4、13.5.5
Linux用户信息传递
关于Linux某个账号的信息,查询使用者的命令,上面的 id
、config
命令都可以实现,last
命令可以查询该用户登录的时间
查询目前已经登录再系统上的用户: w
或who
每个账号最近登录时间:lastlog
, 该命令会去读取 /var/log/lastlog
文件
与当前系统上其他用户对话
通过write
命令将 信息传递给 接受者
write 使用者账号 [用户所在终端接口]
使用如下:
但是 mesg
这个命令对 root 传递的信息没有任何阻挡力
还可以使用mail
命令操作:
收信者,只要使用 mail
命令就可以打开收件箱,查看 邮件信息了,在输入提示符那里,可以输入操作指令:
建立大量账号
先看pwck
命令:pwck 这个指令在检查 /etc/passwd
这个账号配置文件内的信息,与实际的家目录是否存在等信息,还可以比对 /etc/passwd /etc/shadow
的信息是否一致,另外,如果 /etc/passwd
内的数据字段错误时,会提示使用者修订
本部分没有整理,详见 《鸟哥的Linux私房菜》13.5.7
最后
一起提高,慢慢变强