【IT专家网独家】一、sudo简介
Sudo是一款开源安全工具,它能允许管理员给予某些用户或组以作为root用户或其他用户从而运行特定命令的权利。这个软件还能记录下特定系统用户的命令和参数。sudo的开发者声明这个软件的基本出发点就是“让人们以尽可能少的权限完成他们的工作。Sudo在1986年夏天首次发行,Todd Miller先生现在负责这个程序并在BSD方式的许可证下发行它。Sudo主页位于http://www.sudo.ws/sudo/ 。Sudo程序是一款在命令行方式下工作的安全工具,并且我们每次只执行一条命令。它支持的功能如表-1:
功能特征 |
描述 |
命令记录 |
记录命令和参数。该功能用于跟踪用户输入的命令,尤其适合于进行系统审计。因为sudo 会记录下所有作为root用户(或者规定的其他用户)的命令,所以许多管理员经常用它来替代root shell,以便记录下自己使用的命令,这不仅能增进系统安全,还能用来进行故障检修。 |
多系统集中记录 |
Sudo联合系统日志守护进程syslog后,能将所有日志集中存放在一个Unix主机上。 |
命令限制 |
限定用户或者用户组能够使用的命令。 |
票据式系统 |
票据式系统通过创建票据对登录sudo施行时间限制,在给定时间内票据是有效的。每个新命令都刷新这个票据时间。缺省是5分钟 |
多系统集中管理 |
Solaris的Sudo 的配置一般写在/usr/localsudoers这个文件中,而该文件可以供多个系统所用,这样一来,我们就可以在一个主机上对这些系统进行集中管理了。 |
|
|
二、下载安装Sudo
#wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/sudo-1.6.9p16-sol10-x86-local.gz #wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libintl-3.4.0-sol10-x86-local.gz #wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libiconv-1.11-sol10-x86-local.gz #wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libgcc-3.3-sol10-intel-local.gz #gunzip sudo-1.6.9p16-sol10-x86-local.gz #gunzip libintl-3.4.0-sol10-x86-local.gz #gunzip libiconv-1.11-sol10-x86-local.gz #gunzip libgcc-3.3-sol10-intel-local.gz |
下面使用pkgadd –d 命令以此安装以上四个软件包。
图1 sudo安装完成界面
说明:Sudo几乎支持所有的UNIX类操作系统版本,但如果要从源代码进行安装的话,必须准备好GCC编译器和Gun make工具。也可以使用pkgget安装sudo,solairs有一种工具,这就是pkg_get,由blastwave.org推出的。用作者的话说是:“一个用来自动抓取www.sunfreeware.com上的包的工具. 模拟了Debian linux上的"apt-get".”传统的Solaris命令功能并不够强大--这个软件可以补充很多包管理的功能。这个工具简单到仅使用如下命令就可以获取sunfreeware.com上一个包的最新版本。
# pkg-get install sudo
这条命令会自动下载适合你的体系结构和为你的OS修订的版本sudo数据库(如果存在的话),并安装它。如果你已安装了一个较老的版本,就可以使用'upgrade'代替 'install',这样就会用新的版本覆盖老的版本(即升级)。
下载pkg-get:
#wget http://www.blastwave.org/pkg_get.pkg #pkgadd -d pkg-get.Pkg # pkg-get –I sudo |
三、配置Sudo
要配置sudo ,我们必须对/usr/local/sudoers 文件进行编辑,该文件中定义了哪些用户可以执行哪些命令。此外,只有root用户才有编辑该文件的权限,并且还必须用visudo 命令对其编辑。在编辑sudoers 文件时,visudo命令会执行以下任务:
(一) 检查语法错
即使在修改中找到一个语法错误,visudo也不会保存所做的修改。当发现语法错误时,它会指出错误所在的行号,并给出相应的指导性的提示。这时,我们会看到一个“What Now ?”提示和三个选项:“e”表示重新编辑文件;“x”表示退出并且不作任何保存;“Q”表示退出并保存更改的内容。如果sudoers 文件存在语法错误,而我们又选择Q退出并保存visudo的修改的话,那么我们是无法正常运行sudo的,直到语法问题得到纠正为止。遇到这种情况,我们必须再一次运行visudo,修正错误,然后再次保存文件。当修正问题时,最好选择e项;如果您对于正误还心存顾虑时,可以选择x项,这样在退出时便不会变成修改了。
(二) sudoers 配置文件中别名规则
使用者说明节区格式:
使用者 接收群组 [: 接收群组 ] ...
接收群组 ::= 主机象征 = [op]指令象征 [,[op]指令象征] ...
主机象征 ::= 一个小写的主机名称或主机别名。
指令象征 ::= 一个指令或指令别名。
op ::= 逻辑的 '!' 否定操作数。
主机别名节区格式:
Host_Alias 主机别名 = 主机列表
Host_Alias ::= 这是一个关键词。
主机别名 ::= 一个大写的别名。
主机列表 ::= 以逗号间隔的一些主机名称。
指令别名节区格式:
Cmnd_Alias 指令别名 = 指令列表
Cmnd_Alias ::= 这是一个关键词。
指令别名 ::= 一个大写的别名。
指令列表 ::= 以逗号间隔的一些指令。
所有在 '#' 符号后面的文字都会被当作是批注。 太长的行可以使用倒斜线 '\' 字符来分成新的行。 保留的别名 'ALL' 在 {Host,Cmnd}_Alias' 里都可以使用。不要用 'ALL' 来定义一个别名,这个别名无效。 注意到 'ALL' 暗示全部的主机跟指令。 你可以使用这个语法从整个范围中减掉一些项目:
user host=ALL,!ALIAS1,!/etc/halt...
下面是一个范例
# Host alias specification Host_Alias HUB=houdini.rootgroup.com:\ REMOTE=merlin,kodiakthorn,spirit Host_Alias MACHINES=kalkan,alpo,milkbones Host_Alias SERVERS=houdini,merlin,kodiakthorn,spirit # Command alias specification Cmnd_Alias LPCS=/usr/etc/lpc,/usr/ucb/lprm Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh Cmnd_Alias MISC=/bin/rm,/bin/cat:\ SHUTDOWN=/etc/halt,/etc/shutdown # User specification britt REMOTE=SHUTDOWN:ALL=LPCS robh ALL=ALL,!SHELLS nieusma SERVERS=SHUTDOWN,/etc/reboot:\ HUB=ALL,!SHELLS jill houdini.rootgroup.com=/etc/shutdown,MISC markm HUB=ALL,!MISC,!/etc/shutdown,!/etc/halt billp ALL=/usr/local/bin/top:MACHINES=SHELLS davehieb merlin=ALL:SERVERS=/etc/halt:\ kodiakthorn=ALL |
上面的 sudoers 说明文件是由 4 个主机别名说明,4 个指令别名说明以及 7个使用者说明所组成的。Britt 被允许在远程机器 (merlin, kodiakthorn,
还有 spirit) 上执行 /etc/halt, /etc/shutdown, /usr/etc/lpc 以及 /usr/ucb/lprm 命令。Rohn 被允许在任何机器上执行除了 SHELL 指令群以外的任 何指令。Jill 被允许在 houdini 上执行 /etc/shotdown命令, /bin/rm命令, 以及 /bin/cat命令。Davehieb 可以在 merlin 以及 kodiakthorn 上执行任何指令并且 可以关闭服务器 。
(三)配置实例
Sudoers文件中包含一个root条目,默认的权限规定如下所示:
root ALL = (ALL ) ALL
该配置允许root用户可以执行所有命令。
要想让其他用户作为root 来运行命令,我们必须将这些用户加入到sudoers 文件中。我们还必须规定允许在哪些主机上运行这些命令。最后,我们还必须列出这些用户可以作为root 来运行的具体命令。在下面的步骤中,我们将创建用户goodcjh1 ,并允许他作为root 用户在我们的机器上执行某些命令。
⒈ 打开该sudoers文件,命令如下所示:
visudo
⒉ Sudoers 文件将在vi 中打开,在其中找到“User privilege specification”部分。然后在root 条目之后,按i键插入下面一项:
goodcjh1 cjh = /sbin/ifconfig, /bin/kill,usr/bin/killall
图2 配置sudo
⒊ 这一行的作用是允许用户bob作为root用户来执行命令ifconfig、kill和ls,killall。
⒋ 按下ESC写入并退出文件,然后键入以下命令:
:wq
这个命令利用vi写并退出该文件。说明您必须事先建立一个goodcjh1的用户。
四、运行Sudo
我们已经配置sudo,让它给予用户goodcjh1以超级用户权限来执行ifconfig、kill命令。当bob 要运行这些命令时,他必须键入sudo 命令,并输入其口令。
⒈ 首先作为用户bob登录。
⒉ 找出bob可以作为root用户执行的命令,为此,键入以下命令:
sudo –l
⒊ 如果第一次以用户bob的身份运行sudo 的话,会给出一个警告,如图3:
这里提示您输入口令,注意,不要输入root用户的口令,而是goodcjh1的口令。
4 下面将列出允许bob在这个主机上运行的各个命令,如图4所示:
5 使用sudo命令查看一个网络接口
sudo /sbin/ifconfig pcn0 如图5 。
图5 使用sudo命令查看一个网络接口
五、Sudo 命令参数详解
sudo命令格式如下:
sudo -K | -L | -V | -h | -k | -l | -vsudo [-HPSb] [-a auth_type] [-c class|-] [-p prompt] [-u username|#uid] {-e file [...] | -i | -s | command}
下面我们再来看一下sudo其它常用的一些参数:
还有一些不常用的参数,在手册页sudo(8)中可以找到。
六、无需口令的情形
有些情况下,没有必要每次运行sudo时都得输入口令,因为该用户已经登录到系统上了。所以,sudo 为我们提供了一种有效的方法来避免这种单调乏味的任务,办法就是在sudoers 文件中加入NOPASSWD 标签。修改goodcjh1的用户权限规定,如下所示:
goodcjh1 cjh = NOPASSWD: /sbin/ifconfig, /bin/kill, /bin/ls
然后按ESC键,然后键入:wq 来写入并退出文件。
七、Sudo的日志功能
sudo为安全考虑得很周到,不仅可以记录日志,还能在有必要时向系统管理员报告。但是,sudo的日志功能不是自动的,必须由管理员开启。这样来做:
# touch /var/log/sudo# vi /etc/syslog.conf
在syslog.conf最后面加一行(必须用tab分割开)并保存:
local2.debug /var/log/sudo
重启日志守候进程,
ps aux | grep syslogd
把得到的syslogd进程的PID(输出的第二列是PID)填入下面:
kill –HUP PID
这样,sudo就可以写日志了。
小技巧:缺省visudo命令使用vi编辑。 如果你喜欢emacs或者pico,可以放置对可变的EDITOR环境变量,命令如下:
例如,如果你使用pico编辑,运行bash解释器:
export EDITOR=/usr/bin/pico
csh和 tcsh解释器:
setenv EDITOR /usr/bin/pico editor
总结:通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su; sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。
附录:BSD许可证
The BSD License(BSD)是Berkeley Software Distribution License(柏克莱软件发布授权条款)的缩写,许多软件是在此一授权条款下发布的。因为BSD起源自加州大学柏克莱分校,所以最原始发布的BSD拥有者是加州大学董事会。又因一些软件设计师修订BSD的部份内容以做为其软件程序授权使用,造成BSD有多种不同条款内容,统称BSD-style授权条款。最初的BSD是由四个主要条款构成的,其中广告条款的存在让许多后来参与修改原始码的使用者均会将其名字加入声明之中,而遭受GNU计划(GNU Project)的批评:该广告条款造成非常冗长的声明内容,是相当不便利,且易发生使用上困扰而与GPL不兼容。而为了响应Richard Stallman(GNU 计划的主导者与GPL的起草者),BSD的官方主导人William Hoskins遂在一九九九年七月二十二日率先将该广告条款自BSD中删除,也引发其它使用BSD者的跟进,删除广告条款之后的BSD被称为「三条款 BSD」(3-clause BSD),而原本的被称为「四条款BSD」(4-clause BSD)。而BSD与其它授权条款如GPL条款内容相比,是几乎没有限制的,因此是更接近公共领域(public domain)的。BSD授权许可证没有实现"通透性"自由,也就是其不保证软件源代码开放的连续性。这样如果你希望采用别人开发的BSD软件,进行一些修改,然后作为产品卖,或者仅仅保密自己的做的一些除了软件开发以外的工作,那么你就可以从中得利。从赚钱为目的的商务角度看来,如果你使用了BSD授权许可证的软件,那么你就可以任意进行。你可以更好地控制你的OS系统,并且防止其他人拷贝你的商业产品。
相关推荐
熟悉`/etc/passwd`和`/etc/group`文件,以及`su`、`sudo`命令的使用。 Solaris的配置涉及多个方面,包括软件管理、系统更新、服务管理等。Solaris使用`pkg`工具进行软件安装和管理,通过`pkgadd`、`pkginfo`、`...
2. 认证与授权:了解PAM(Pluggable Authentication Modules)机制,理解sudo、authselect等工具的使用。 3. 防火墙与安全策略:配置IPFilter防火墙规则,理解Solaris Zone的隔离机制,实现安全策略。 九、备份与...
学会创建、删除用户,管理用户权限,以及使用sudo命令进行特权操作。熟悉umask命令,理解其在控制文件默认权限中的作用。 四、网络与服务配置 Solaris 9支持多种网络协议和服务,如TCP/IP、DNS、NFS、SSH等。学习...
4. 网络浏览:让 Solaris 服务器出现在 Windows 网络浏览器的列表中。 ### 二、在 Solaris 上安装 Samba 的步骤 1. **获取 Samba**: 首先,你需要下载适用于 Solaris 的 Samba 包。通常,这可以通过 Solaris ...
学会创建、删除用户,管理用户和组权限,以及使用`su`、`sudo`等命令,对系统安全至关重要。 3. **网络设置**:配置IP地址、子网掩码、网关,以及DNS解析是网络管理的基础。Solaris 10 提供`ifconfig`、`netstat`等...
总之,"tcl.8.6.1.i86pc.Solaris.10.pkg" 是一个针对 Solaris 10 平台的 TCL 8.6.1 版本的软件包,使用 `pkgadd` 命令进行安装,这将使用户能够在 Solaris 系统上利用 TCL 的强大功能进行各种编程和自动化任务。
2. **用户管理与权限控制**:Solaris 8采用了多用户环境,文档会涵盖创建和管理用户账户、设置权限、以及使用安全管理工具如sudo和pam的相关内容。 3. **网络配置**:对于网络服务,如DNS、DHCP、NFS和SMB等,文档...
这里假设你的系统是sparc架构,如果使用的是Intel架构,请将`sparc-sun-solaris2.10`替换为相应的值。 - 编译源码:`make` - 安装编译后的文件:`sudo make install` 2. 安装GDB: - 解压GDB源码包:`tar -xvf ...
"sudo-1.7.0.tar.gz" 是一个针对 Solaris 10 X86 操作系统的开源软件包。...在安装完成后,sudo 就可以在你的 Solaris 10 X86 系统上使用了,你可以通过运行 `sudo -h` 查看帮助信息,了解其各种参数和用法。
SMF是Oracle Solaris的现代服务管理框架,它使得系统服务的启动、停止、监控和诊断更加有序和自动化。通过SMF,管理员可以远程控制服务的状态,确保远程系统的服务持续性和可靠性。 十、Remote Logging and ...
9. **权限和用户管理**:解释用户权限问题,如sudo、root权限的使用和管理。 10. **文件系统问题**:如文件系统挂载问题、空间管理、文件权限错误等。 此外,文档还可能包含关于UNIX商标和版权的法律声明,以及...
【SVN在Solaris下的安装】是一个涉及到版本控制系统Subversion(SVN)在Solaris操作系统上的部署过程。Subversion是一个开源的版本控制系统,用于管理文件和目录的更改历史,广泛应用于软件开发团队协同工作场景。在...
3. **用户与权限管理**:理解UNIX权限模型,设置用户和组,管理密码策略,以及使用`sudo`和`su`进行权限切换。掌握ACL(访问控制列表)的使用,以提供更细粒度的权限控制。 4. **网络与服务配置**:学习IP地址、...
在Solaris 10中,使用`pkgadd`或`pkgutil`命令安装缺失的包。 5. **配置Nagios**: - 复制示例配置文件:`cp -R samples /usr/local/nagios/etc`。 - 根据实际情况修改配置文件,如`nagios.cfg`、`objects/*.cfg`...
4. **Remote Administration Tools**:Oracle Solaris 11.2提供了多种命令行工具和GUI工具,如`ssh`、`rsh`、`rsync`、`sudosh`以及`Remote Desktop Viewer`,用于远程执行命令、文件同步和图形界面操作。...
《Solaris高级系统管理员指南》是一本针对Sun Microsystems公司开发的Solaris操作系统的深度学习资料。这本书涵盖了Solaris...通过深入学习并实践书中内容,可以让你在面对复杂的Solaris系统管理挑战时更加游刃有余。
- 安全性:了解如何使用`sudo`、权限管理(`setuid`, `setgid`)以及防火墙规则(`ipf`或`ipfilter`)来增强系统安全性。 总的来说,掌握Solaris 10的基本操作涉及登录、环境熟悉、用户管理、命令行操作以及系统...
8. **安全策略**:防火墙配置、SELinux和Solaris Security Toolkit的使用,以及密码策略和审计机制的设定。 9. **硬件管理**:识别和添加硬件设备,如磁盘、网络接口和打印机,以及使用 prtconf 和 iostat 命令来...
4. **sudo**:允许普通用户以其他用户(通常是root)的权限执行命令,增强了安全性。 5. **用户认证与授权**:理解PAM(Pluggable Authentication Modules)机制,以及如何配置 `/etc/pam.conf`。 四、其他关键概念...