Linux系统:关于Su的版本 (linux系统版本su)

Linux系统中包含了很多常用的工具和命令,其中Su作为一种常用的命令行工具,被广泛应用于管理员和普通用户间的权限切换。不过,随着Linux系统的发展和更新,Su也在不断地演变和改进,衍生出不同版本的Su。本文将对Su的版本及其特点进行介绍。

1. 原生的Su

原生的Su是Linux系统自带的工具,并且是最早期的版本。它可以使管理员以另一个用户身份登录,并获取目标用户的权限。在使用原生的Su时,管理员需要输入目标用户的密码才能登录。这种版本的Su没有特别明显的缺点,被广泛使用。

2. PAM(Pluggable Authentication Modules)Su

PAM Su是在原生Su的基础上开发的一种版本,它结合了PAM模块,可以让管理员不仅仅以目标用户的身份登录,还可以根据需要进行其他操作。比如,管理员可以使用PAM验证模块获取目标用户的认证信息,而不用每次手动输入密码。此外,PAM Su还可以将用户登录行为写入日志文件,以便于管理员进行审计。

3. Sudo(SuperUser Do)

Sudo是 Su 的一个开源替代品,也是最广泛使用的一个版本。与Su不同,Sudo可以提供更加细致的授权管理,而不是仅仅允许管理员以目标用户的身份登录。Sudo允许管理员仅仅执行特定的命令,避免了管理员意外的破坏。此外,Sudo还允许管理员隔离权限,例如可以让普通用户执行root权限下的某个命令,但不允许用户切换到root用户来执行操作。

4. SuExec

SuExec是一种用于Web服务器中的Su版本,它可以实现不需要管理员介入的用户权限切换。SuExec允许许多用户在同一个Web服务器中运行自己的Web站点,并允许各个站点使用不同的权限运行。此外,SuExec还提供了一个更加安全的,不允许普通用户使用root权限执行的管理方案。

Su是Linux系统中的一个非常重要的工具。不同版本的Su有着不同的兼容性和功能特点,管理员可以根据自己的需求选择相应的版本。在使用Su时,管理员需要注意权限切换的合理性和安全性,避免意外的操作和权限泄露。

相关问题拓展阅读:

  • 关于Linux系统上 SU命令的几点安全建议
  • linux su和sudo命令的区别

关于Linux系统上 SU命令的几点安全建议

需要密码才可以执行

指定需要su的用户

首先我们看su在man 帮助页中的解释su – run a shell with substitute userand group IDs ,也就是说通过su我们不用提供用户和组名就可以启动一个shell程序。 su 是一个二进制的可执行文件,命令所在的文件路睁蠢径是/bin/su ,下面是通过命令行查询su文件的类型及所在路径:

例一:

islab$ which su

/bin/su

例二:

islab$ file /bin/悉链陪su

/bin/su : setuid ELF 32-bit LSB shared object, Intel 80386, version1 (SYSV), for GNU/Linux 2.6.9, stripped

例三:

islab$ll /bin/su

-rwsr-xr-x 1 root rootJan/bin/su

例三和例二中我们可以看到su是一个setuid程序(setuid位可以使用chmodu+s 进行设置,如ls显示su文件所有者属性起用了setuid位),在这种情况下,su可以获得比其所有者更高的权限,也就是说su运行的时候,您的权限会被提升,将与root的权限等同。

例三中我们可以看到文件的类型是ELF 32-bit LSB shared object(设置了setuid位),也就是说程序需要libc这样的函数库,也需要使用了ELF 解释器,并遵守LSB 规范。

问一:普通用户可以从其它机器拷贝su命令。

答:他们可以从其它机器拷贝su命令,但是他们将不能对su进行正确的权限设置比如chown root和chmod u+s 等等。所以拷贝过来su不能够正常工作。

问二:如何防止普通用户执行su命令。

答:

1 )。你可以建立一个专门的组,只有组成员才能执行su命令

islab# groupadd wheel

islab# useradd wheel

islab# chown root :mysql /bin/bash

islab# chmod 4750 /bin/su

2 )。只有root用户才能执行su命令。

islab# chmod 4700 /bin/su

3 )。通过pam 库唤源实现只有wheel 组成员才能执行su命令,下面例子中增加了zhaoke帐号到wheel 组中。

islab# groupadd wheel

islab# useradd wheel

islab# usermod -G wheel zhaoke

islab# ll /lib/security/pam_wheel.so

-rwxr-xr-x 1 root root 5692 Feb/lib/security/pam_wheel.so

islab# vi /etc/pam.d/su

增加下面一行auth required /lib/security/pam_wheel.so use_uid

然后保存退出su配置文件。

问三:普通用户虽然不能执行su命令,但是还有可能通过蛮力攻击获得root的密码

答:普通用户可以在shell 或者ssh 方式对root帐户进行蛮力攻击。我们可以考虑使用一些安全工具如pam_abl 来对ssh 进行保护。 pam_abl将能在设定的时间内对错误登陆的帐户进行进行临时封禁。当然普通用户也可以通过程序漏洞提升权限,比如缓冲区溢出。

更多Linux知识请自行百度Linux神书《Linux就该这么学》

linux su和sudo命令的区别

su表示切换用户命令命令,如:

输入:su命令后回车表示切换当前的用户到root用户,或者:

输慎尘镇入:su – root(或者其他用户名)这里加了”-“后表示也切换的当前的环境变量到新用户的环境变量,su root(或宽粗者其他用户名)表示不切换环境变量到当前用户下兄携。

sudo 表示获取临时的root权限命令,如:

sudo gedit /etc/shadow,表示临时使用root权限来编辑/etc/shadow密码文件,因为/etc/shadow密码文件需要使用root权限才能打开与编辑。所以这里使用了sudo命令临时使用root权限来做一些普通账户无法完成的工作~

su

su的全称并不是super user,而是switch user,是不是就突然明白了?是切换用户的意思。su的一般使用方法是su或者su -,两种方法虽然只差了1个字符,但也是有比较大的差异的。

加入了-参数,就是login-shell的方式,也就是说切换到另一个用户之后,当前的shell会加载对应的环境变量和各种设置;

如果没有加入-参数,就是non-login-shell的方式,也就是说当前的shell还是加载切换之前的那个用户的环境变量以及顷穗侍各种设置。

如果不想因为切换到另一个用户导致自己在当前用户下的设置不可用,那么就可以用non-login-shell的方式;如果切换用户后,需雀吵要用到该用户的各种环境变量,那么使用login-shell方式即可。

sudo

全称为super user do,即以超级用户的方式执行命令,这里的超级用户指的就是root用户,我们在Linux中有时会遇到permission

denied的情况,如以ubuntu用户的身份查看/etc/shadow的内容族耐,因为它是只有root用户才能查看的,这个时候就可以使用sudo。

两者的区别在于:

使用su – 提供root账号的密码,可以切换到root用户;

使用sudo su -,提供当前用户的密码,也可以切换到root用户。

如果我们的Linux系统有很多用户需要使用的话,前者要求所有用户都知道root用户的密码,显然是非常危险的;后者是不需要暴露root账户密码的,用户只需要输入自己的账户密码就可以。

linux系统版本su的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux系统版本su,Linux系统:关于Su的版本,关于Linux系统上 SU命令的几点安全建议,linux su和sudo命令的区别的信息别忘了在本站进行查找喔。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Linux系统:关于Su的版本 (linux系统版本su)》
文章链接:https://zhuji.vsping.com/31854.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。