linux黑客总结

linux黑客总结
linux安全问题概述
1.1 linux用户
添加一个用户并付于口令 adduser passwd
/etc/passwd 和/etc/shadow文件,保存用户名和密码文件。查看其说明。
LINUX将用户分为三类:ROOT,普通用户和系统用户。其中系统用户从不登录,这些账号用于特定的目的,不属于任何特定的人,没有主目录。它包括 ftp/apache和lp。ftp 用于匿名登录,apache用于处理http请求等,lp用来处理打印功能.
用户组的概念,多个用户的集合./etc/group
Usermod –G 把某用户加入某组 
Chgrp 更改文件组的所有者
Chmod改变文件的权限
当我们用touch创建一个文本文档的时候,我们也可以用umask来设置用户的默认许可值
Chattr修改文件的属性 lsattr显示文件的属性
1.2 其它安全性控制
1.2.1信号
信号是一个进程发送给另一个进程的消息,TERM(终止信号)是发送给进程的常用信号之一,杀掉失控的进程,HUP信号通常用于当程序的配置改变后,强制进程重新读取配置文件.
Kill –TERM 1111
Killall –HUP 1111
1.2.2特权端口
小于1024的端口
1.2.3虚拟内存管理
任何消耗过多内存的进程都会被内核杀掉,而其它进程不受影响,这是
Linux内存管理安全性的一个特点,其它的操作系统没有这样的机制.进程在启动时都分配有自己的内存区保存程序和静态变量,内核自已处理任何其它的运行时内存分配,除非事先以标准的进程间通信方法去做特定的设置,否则任何进程都不能访问其它进程的内存。
1.2.4系统日志
1.2.5 /etc/securetty
指定了允许root登录的TTY设备。
认证模块PAM(pluggable authentication module),linux发布的默认配置
1.2.6 Chrooting
1.2.7使用LINUX权来减少ROOT风险
1.3错误代码
1.3.1末降低权限
1.3.2缓冲区溢出
把数据塞到小于其容积的空间,就会发生缓冲区溢出,许多语言没有内建的边界检查机制—编译期无警告,运行期无防护。攻击者在他的数据中手工编写合法的机器代码,强制函数来运行一些指令,而不是返回main。这些代码通常被称为shell 代码,因为大多数针对缓冲区溢出的攻击都会试图运行/bin/sh的一个拷贝,或者在/tmp中生成一个suid为root的/bin/sh的拷贝。
Libsafe是一个动态加载库,它通过中间软件层来截获对所有存在这类漏洞的库函数的请求,并激活与这些库函数同等功能的替代版本,这一版本将可能的缓冲区溢出限制在当前的堆栈中,从而防止那类可能被攻击者用于劫持程序的数据覆盖行为的发生。
Stackguard工具
1.3.3格式字符串漏洞
它通常出现在程序员使用类似于printf()或者syslog()等支持格式化输入的函数打印简单字符串的场合,正确的方式应该为
Printf(“%s”,str);
Libsafe工具可以解决这个问题
1.3.4竟争条件
1.3.5 审计工具
Rats 审计c,c++,perl,python,php或者用flawfinder工具都可以审计第一节所说的问题。
2.预防措施
2.1弱点扫描程序
2.1.1系统安全扫描程序
使用find命令发现系统中所有的suid或者sgid程序,这些地方通常是入侵的起始
Find / \ ( -perm -02000 –o –perm -04000 \) –ls
推荐使用 lsat工具来检查系统的安全性linux security auditing tool
2.1.2网络安全扫描

2.2扫描检测器
2.3加固系统
2.4日志文件分析、
2.4.1 syslog消息
日志级别 emerg 系统已不可用
Alert 必须马上采取行动
Crit 危急
Err 错误
Warning 警告
Notice 注意
Info 通知消息
Debug 调试信息
日志的表达方式 /etc/syslog.conf
Facility.loglevel logtarget
2.4.2审查日志文件
2.4.3日志分析软件
logsurfer
2.4.4与日志有关的常见攻击
Stunnel命令的应用
2.5文件系统完整性检查
2.5.1生成校验和许可数据库
Md5sum命令校验
在黑客入侵之前生成文件的校验和,建立数据库
修改配置文件或者修改可写的程序,比如在/etc/rc#.d中添加文件,在启动时运行任何命令.
2.5.2现有的文件完整性工具
Aide工具可以检查文件的完整性
3.对机器和网络进行踩点
3.1在线搜索
可以看一下有没有关于我们要入侵的网站或者服务器的一些信息。比如说联系人,IP范围等
3.2whois数据库
Whois bjca.org.cn
Host bjca.org.cn
Whois.arin.net数据库可以列出IP网络的使用者,然后再根据使用者列出其IP地址的范围。
whois 218.30.108.60@whois.arin.net区别whois 218.30.108.60的不同
这样可以看到我们需要扫描的网站或者服务器的IP地址,域名地址,以及一些与注册有关的详细信息,帮助我们更好的了解入侵主机的信息。
3.3ping 扫射
Linux下的端口扫描工具最好用NAMP,这个工具比较适合。而且功能还有许多的扩展功能
3.4DNS问题
两个重要的命令nslookup host
Host -t any sina.com.cn
Host -t txt sina.com.cn
Host -c chaos –t txt version(authors).bind some_name_server
加强主DNS的安全性,做次DNS,次DNS从主DNS上复制全部内容

次DNS的方法
Zone “bjca.org.cn” {
Type slave; file “slave/bjca.org.cn”;
Master { 210.73.90.203 ; 210.73.90.202 ; };
区域传送内容可以阅读DNS的相关文档。

有举可以阅读DJBDNS,也是一个非常不错的DNS系统
3.5 traceroutes
Traceroute 根据生存时间来确定是哪一种操作系统,以及版本的确定
TTL:生存时间 指定数据报被路由器丢弃之前允许通过的网段数量。
TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。
TTL 字段值可以帮助我们识别操作系统类型(不完全准确,因为 TTL 是可以修改的)。
LINUX 64
WIN2K/NT 128
WINDOWS 系列 32
UNIX 系列 255
3.6端口扫描
NAMP的端口扫描,同时也可以通过TTL生存值来确定是哪一种操作系统
3.7操作系统检测
根据旗标来检测来看是哪一种操作系统,以及各种旗标的对策
根据开放的端口来判定是哪种操作系统,假如监听的是SMTP,SSH,PROTMAP,我们就可以判定基本上应为UNIX操作系统。
最可依赖的检测方法是发送特定的IP包,并检查其响应。可以用NAMP来检测。
不同的操作系统对4个IP参数有不同的默认设置。TTL、窗口大小、DF(不要重新装位)和TOS(服务类型)
3.8枚举RPC服务
远程过程调用并没有指定专门的端口,它是一个规范,允许机器通过网络调用其它机器上的进程。因此这些服务向portmap(以前sunrpc)守护进程注册自己的端口。
可以使用namp检测是否有RPC服务在运行。
3.9通过NFS的文件共享
可以用showmount 显示主机上共享的NFS目录,启有NFS会依赖远程过程调用RPC服务,叫sunrpc或者protmap
Showmount –a target
它占用的端口是2049的TCP和UDP端口,可以在防火墙上阻止不必要人的访问。减少安全隐患。
3.10简单网络管理协议(SNMP)
它使用UDP的161、162端口,如果要开启此项服务,最好利用其最新的V3版本。连接SNMP的唯一方法是知道其群字符串,默认的有PUBLIC只读和PRIVATE读写群字符串,
查找群字符串可以用onesixtyone这个工具.
入侵信息查找可以用SNMPUTIL(windows下操作)这个工具。
3.11网络漏洞扫描程序
推荐用nessus 这个工具,最强的网络扫描工具。
由外到内的入侵
4社交工程、特洛伊木马和其它黑客的方法
4.1社交工程
4.1.1社交工程种类
4.1.2如何避免社交工程攻击
4.1.3黑客的家庭作业
员工目录
公司电话系统
办公目录
Usenet上的贴子和邮件列表
联机数据库
主页
公开的DNS信息
4.2特洛伊木马
4.3病毒和蠕虫
4.3.1病毒和LINUX
4.3.2蠕虫和LINUX
5.物理攻击
5.1攻击办公室
5.2启动权限是ROOT权限
Sulogin进入单用户的模式
启动时是加入linux single

Configfile命令加载他自己的配置文件
Module加载所需的模块
用root和rootnoverify设置grub的root设备
用savedefault将当前配置保存为默认配置
用uppermem设置高端内存

启动时的加载配置
5.3加密文件系统
6.网络攻击
6.1使用网络
6.1.1 tcp/ip网络
Tcp/ip协议组 ip\tcp\udp\icmp
了解各个协议的组成及基本情况

6.1.2公共电话网络
6.2可经由网络攻击的漏洞
6.2.1网络守护进程中的编程错误
最好的防止软件漏洞的方法是保持软件的最新版本.
常见的攻击目标
Rpc.mountd(nfs服务的一部分)
RPC和NFS服务,如RPC.start
邮件服务,如imapd/popd
Ftp服务,如wu-ftpd

对策:关闭不必要的进程,保持软件的最新版本,早期检测,保持性函数库
6.2.2默认或有害的配置
6.2.3 x windows系统
用xhost + 可以添加访问本地机器的客户端。
6.2.4攻击openssh
6.3攻击网络客户端
6.4默认口令
6.5嗅探网络信息
常见的嗅探器:tcpdump /ethereal
6.6口令猜测
关完备finger和rwho服务,关掉/etc/seruretty中不要的tty终端
7.高级网络攻击
7.1 DNS攻击
访问控制列表来限制访问

7.2路由问题
主干路由采用BGP可者OSPF,甚至IS-IS协议的会比较多些。源路由允许发送者指定数据包到达目的地前在internet上经由的路径。它可以用来对于网络勘探和调试,但也可以用来绕过安全网关和地址转换。如果攻击者能够向某个网络发送源路由数据包,就更容易伪装成该网络上的地址。以下命令确定系统是否允许源路由数据包:# cat /proc/sys/net/ipv4/conf/eth0/accept_source_route 1表示允许,0表示不允许
配置本地网卡为为某个可信的IP #ifconfig eth0:0 inet 192.168.3.15 netmasl 255.255.255.255
能够接192.168.3.15
#nc –g 10.4.4.1 –g 10.1.5.129 –g 10.10.1.1 –g 192.168.2.1 192.168.3.2 25
Netcat将建一个内建源路的TCP包,指定路径为从本机到10.4.4.1,再到 10.1.5.129,再经10.10.1.1和192.168.2.1最后到192.168.3.2

关闭源路由的方法
proc/sys/net/ipv4/conf/eth0/accept_source_route=0
在/etc/sysctl.conf中添加net.ipv4.conf.all.accept_source_route=0
在路由器上关闭(config)#no ip source-route
7.3高级嗅探和会话劫持
HUNT具有数据包嗅探和全话劫持能力,通过ARP期骗的形式来实现
DSNIFF是一个更优秀的网络审计、测试和嗅探工具
7.4 滥用信任关系
不依赖基于IP的约束 使用安全的SSH访问,而不采有telnet ftp等
NFS安全的对策建议采用替代产品,AFS或者coda.日常访问可以用vpn的方式

保护名字服务需要NIS的时候确保它运行在安全的网段 在/var/yp里面添加
/var/yp/securenets
使用ldap认证时,必须禁止对LDAP服务器的匿名访问。
7.5 攻击无线网络
Wlan连接区域的大小取决于空间的性质
只接受指定的网卡 .但可以有#ifconfig wlan0 10:20:30:40:50:60来更改MAC
建立加密密钥 WEP(wired equivalent privacy算法)
新的无线协议将以客户验证机制来取代简单的密码共享机  机制 
SSID(service set id)用于辨识共享同一空间的不同无线网络
用VPN保护无线网络
7.6实施出口过滤
出口过滤是阻止欺骗的最重要途径
主要是防火墙策略设置, 允许或者不允许一些IP的通过

本地用户的攻击
8.提升用户权限
8.1提升权限
#cat >> /home/user/.profile >>EOM
Cp /home/cracker/suid_shell /tmp/.shells/ USER
Chomd 755 /tmp/.shells/ USER
EOM
这样当用户下次登录时,会将攻击者的suid_shell的拷贝保存在/tmp/.shells下,之后攻击者在运行个程序时就可获得该用户的身份。
限制有户主目录的访问,umask默认权限的设置
历史文件攻击.bash_history保存最近的1000条输入。
有时我们可以用locate替代find来查找一些命令,它的默认数据库为/var/lib/slocate/slocate.db 经常用updatedb命令维护、更新数据库..在查找方面updatedb 等价于find /,递归搜索整个文件系统
安全地创建locate数据库
备份tar xzvf /dev/nrtf0 /etc/shadow /root/.ssh
8.2口令存储和使用
/etc/passwd文件保存常用的账户信息,比如用户和组ID,用户SHELL和用户的全名等
/etc/shadow保存加密的口令,只能被 ROOT读取
通常查找.netrc(保存了ftp,http,curl等的密码)
#find / -name .netrc | xargs cat
去掉用户文件中的口令
保护系统的口令文件
可恢复口令的对策.不使用/etc/popauth
8.3可信路径和特洛伊木马
特洛伊木马程序是rootkit的一部分,而rootkit中的程序可以替代系统内相应的二进制程序
从路径中去掉 “ . “
防止不安全程序的执行 减少系统中suid和sgid程序的数量 以noexec标志加载
限制可执行程序
8.4 SUDO
Sudo能够限制用户只在某台主机上运行某些命令。 
 Sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。 
 Sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。 
Sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0411。
Sudo用法见附件一
8.5可从本地攻击的程序
Suid和sgid程序是安全问题的常见根源,linux不支持suid的shell脚本
Chattr +i 将限制文件为不可修改
硬链接和符号链接
存储在碰盘上的文件实际上只是位元(bit)集合,并拥有与之相关的信息节点(inode).文件系统通过信息节点找到包含文件数据的碰盘扇区,各个文件系统维护它自己的信息节点表。每个文件都可以通过指向信息节点的目录项找到.
ln 建立硬链接 #ln file2 file1
符号链接是一类间接指向文件的目录项,并不直接指向文件的信息节点。
Stat可以判断目录下的文件是否是符号链接
8.6基于内核的攻击
最近的安全漏洞与用于进程跟踪的系统调用ptrace()有关.
升级内核或者加载相关的模块(insmod\modprode)
9.LINUX的用户证机制
9.1 LINUX上口令的工作方式
MD5加密方法,DES加密只能支式到8位密码
9.2口令破解程序
John the ripper
9.3 PAM(可插入认证模块pluggable authentication modules)

9.4蛮力口令猜测攻击

9.5口令保护

9.6 linux中非shell程序的有户认证机制
Apache httpasswd
Samba sampasswd /etc/samba

服务器的安全
10.邮件安全
更改旗标
关闭vrfy响应 
关闭expn请求
阻塞垃圾邮件
资源限制
加密邮件和smtp
10.1.1 sendmail
10.1.2 qmail
10.1.3 postfix
10.1.4 exim
11.ftp服务器安全
11.1 ftp会话范例
11.2 主动FTP模式
只有在主动模式下才能进行加密,确保口令不被监听到
用SSH建立连接.
设置一次有效口令算法 /etc/pam.d/ftp中设置
更改旗标
12.web服务器和动态页面
12.1 apache web 服务器
/etc/httpd/conf/httpd.conf

12.2 CGI程序问题
12.3 PHP
12.4其它linux web 服务器
13.访问控制和防火墙
13.1 inetd和xinetd概述
/etc/xinetd.d
以前的版本中主要有inetd做守护进程,现在主要用xinetd做守护进程,由它来维护各项服务的启动或者停止,而不需要由各项服务自己来启动或者停止,这样避免了系统中同时有多个守护进程运行.
默认default配置/etc/xinted.conf的意思
Defaults
{
Instance = 60
Log_type = FILE /var/log/servicelog
Log_on_success = HOST PID
Log_on_failure = HOST RECORD
Per_source = 5
}
Instance 服务器并发处理的请求数上限
Log_type 在文件中记录日志,也可以用syslog
Log_on_success,log_on_failure 对成功或者失败的连接选择要记录的信息,包括PID,HOST和USERID
Per_source 同一IP地址对同一服务建立连接的上限.它和instance可以防止系统资源耗尽的情况.
Tcp封装器使用两上文件/etc/hosts.deny和/etc/hosts.allow来实现其功能


13.2 防火墙:内核访问控制
三种方式,接受accept,回绝reject,拒绝数据包drop
Itpables –A INPUT –i eth0 –s 0/0 –d 192.168.2.22 –p tcp –dport telnet –j ACCEPT
Itpables –A INPUT –i eth0 –s 0/0 –d 192.168.2.22 –p tcp –dport telnet –j REJECT
Itpables –A INPUT –i eth0 –s 0/0 –d 192.168.2.22 –p tcp –dport telnet –j DROP
13.2.1 linux包过滤
拒绝ICMP PING 和 traceroute
Iptables –A INPUT –s 0/0 –d 192.168.2.22 –p icmp –icmp-type echo-request –j DROP
为对付traceroute,拒绝所有流向端口33435-33525的UDP数据包
Iptables –A INPUT –s 0/0 –d 192.168.2.22 –p udp –dport 33435:33525 –j DROP


13.2.2阻塞特定的网络访问


14.拒绝服务攻击
14.1 内核DOS攻击
对于此种攻击我们能解决的办法只有一种,升级内核,或者别连接互联网好了
14.2 网络潮涌
Ping –f –s 2048 192.168.2.22持继向192.168.2.22发送大小为2048的数据包
Udp潮涌攻击对像 解决方法 关闭/etc/xinetd.conf中的chargen,echo,以及其它的tcp/udp小型服务就可以
Smurt是以icmp\echo\request(ping)的方式攻击,解决的办法关闭路由器和防火墙的广播功能,在LINUX主机上忽略广播包
#echo 1 > /proc/sys/net/ipv4/icmp_igonre_broadcasts
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
SYN潮涌

14.3 分布式拒绝服务攻击
Ddos攻击
14.4 本地资源耗尽攻击
Ulimit约束用户 –a 显示所有约束
-f   shell所能创建的文件大小的上限
-t 每秒可以占用的CPU时间上限
-n 打开文件的上限
-u 进程数上限
-v虚拟内存上限
在/etc/security/limits.conf中定义约束

入侵之后
15.隐藏通道
15.1踪迹隐藏
抹掉与其相关的日志内容/var/log 
15.2木马化的系统程序
找出删除状态的文件lsof –c suspicious_program
使用stuunel的ssl加密或者使用ssh的反向连接可以隐藏自己的信息。
连接伪装
16后门
16.1基于主机的认证和用户访问
在/etc/hosts.allow添加自己的主机
监视/etc/exports 、/etc/rc.d
查看账号信息/etc/passwd 、/etc/shadow 、/etc/group
查看用户的crontab文件 /var/spool/cron/crontabs/username
16.2创建和修改账号
16.3使用ssh无口令登录
修改/etc/ssh/hosts.equiv .rhosts实现无口令登录
对策:修改/etc/ssh/sshd_config文件来配置
16.4可从网络访问的root shell
16.5木马后门
17攻击系统的高级方法
17.1入侵内核
查看正在运行的模块lsmod使用modprobe和rmmod程序来安装和删除内核模块
解决内核攻击的办法升级运行lids的内核补丁,并适时配置
17.2rootkit
Rootkit 是一个可快速安装预打包的特洛伊程序套件.多数rootkit也包括监听局域网上传输的口令.
利用chkrootkit来检测入侵

Linux的运行级别
关闭系统(保留)
单用户模式(保留)
多用户模式,但不支持NFS
完整的多用户模式(运行级别2+NFS)
未用
完整多用户模式+x11(xdm)登录
重新启动系统(保留)
S,s用于进入运行级别1的脚本,不能被直接使用
7-9合法,但通常不使用 
查看运行级别
Chkconfig --list
改变运行级别的方法
Chkconfig -- level 123456 mysql off(on)


附件
Sudo用法
 Sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,us等等。这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。它的特性主要有这样几点: 
§ Sudo能够限制用户只在某台主机上运行某些命令。 
§ Sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。 
§ Sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。 
§ Sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0411。 

 一,安装
 检测是否一经安装了SUDO:
# rpm -q sudo
sudo-1.6.8p12-4.1

如果没有安装,下载软件包进行安装:
对于大多数系统来说,sudo的配置都是相对比较简单的: 
0) $> cd /;cp sudo-1.6.8p12.tar.gz / 
1) $> tar vxzf sudo-1.6.8p12.tar.gz 
2) 如果是从低版本升级的话,升级之前请仔细阅读UPGRADE文件。 
3) 如果你在编译之前,已经为另外一台不同的主机运行了’configure’,你必须用make distclean清除’config.cache’文件。否则,’configure’将不能再运行。你也可以直接’rm config.cache’. 
4) 阅读’OS dependent notes’看是否支持你的系统。 
5) $> cd sudo-8p12 
6) 阅读configure文件,仔细看其中的’Available configure options’部分,看是否要加一些特殊的选项。这里选项很多,不过常用的主要有这么几个主要的配置参数: 
--with-pam 支持使用PAM,使用该选项时要求一个有效的/etc/pam.d/sudo文件
--cache-file=FILE 将缓存test的结果存到FILE文件中。 
--help 打印帮助。 
--no-create 不要输出.o文件 
--quiet, --silent 不打印’checking…’信息 
--exec-prefix=EPREFIX 设置包含sudo 和visudo命令的目录 
--bindir=DIR 将sudo命令安装到EPREFIX/bin 
--sbindir=DIR将visudo命令安装到EPREFIX/bin 
--sysconfdir=DIR 将sudoers配置文件安装到DIR,默认为/etc. 
--mandir=DIR将man文件安装到DIR,默认为/man. 
--with-CC=path 指定你要使用的c编译器的路径。 
--with-skey 支持S/Key OTP(一次使用密码) 
--with-opie支持NRL OPIE OTP(一次使用密码) 
--disable-shadow 不支持shadow密码的系统的选项开关,sudo默认是编译并使用shadow密码的。 
--with-sudoers-mode=mode sudoers配置文件模式,默认为0440。 
--with-sudoers-uid sudoers配置文件的所有者id,默认为0 
--with-sudoers-gid sudoers配置文件的所有者的组id,默认为0 
--without-passwd 用户认证无须密码。 
--with-logging=TYPE 日志类型,可以选择’syslog’、’file’或者两种都可以。 
--with-logpath=path 日志存放的路径和文件名,默认为/var/log/sudo.log 
--with-umask 在运行root命令是用umask,默认的umask是0022 
--with-passwd-tries=tries sudo写入log日志前提示输入密码的次数,默认为3次。 
--with-timeout=minutes sudo提示输入密码之前的时间,默认为5分钟 
--with-password-timeout=minutes 密码的有效期,默认为5分钟,0表示密码永远有效。 
--without-lecture 第一次运行sudo不打印lecture信息 
--disable-root-sudo root用户不能运行sudo。 
--enable-log-host 记录主机host到日志文件 
--disable-path-info 出错时,不显示sudo的路径。 
如 输入:./configure --with-timeout=10 --without-lecture --disable-root-sudo --disable-path-info --sysconfdir=/home/config/ --bindir=/bin --sbindir=/sbin 
7) make 
8) make install 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
 二,配置,
编辑配置文件命令:visudo
默认配置文件位置:/etc/sudoers
# cat /etc/sudoers
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification

# Runas alias specification

# User privilege specification
root    ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

# Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now
#

可以用visudo编辑sudoers配置文件,不过也可以直接通过修改sudoers文件实现,不过编辑之前最好看一下它的sample.sudoers文件,里面有一个相当详细的例子可以参考。 
#第一部分:用户定义,将用户分为FULLTIMERS、PARTTIMERS和WEBMASTERS三类。 
User_Alias FULLTIMERS = millert, mikef, dowdy 
User_Alias PARTTIMERS = bostley, jwfox, crawl 
User_Alias WEBMASTERS = will, wendy, wim 
#第二部分,将操作类型分类。 
Runas_Alias OP = root, operator 
Runas_Alias DB = oracle, sybase 
#第三部分,将主机分类。这些都是随便分得,目的是为了更好地管理。 
Host_Alias SPARC = bigtime, eclipse, moet, anchor :\ 
SGI = grolsch, dandelion, black :\ 
ALPHA = widget, thalamus, foobar :\ 
HPPA = boa, nag, python 
Host_Alias CUNETS = 128.138.0.0/255.255.0.0 
Host_Alias CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0 
Host_Alias SERVERS = master, mail, www, ns 
Host_Alias CDROM = orion, perseus, hercules 
#第四部分,定义命令和命令地路径。命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患 ,因此使用的时候也是使用绝对路径!
Cmnd_Alias DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\ 
/usr/sbin/restore, /usr/sbin/rrestore 
Cmnd_Alias KILL = /user/bin/kill 
Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm 
Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown 
Cmnd_Alias HALT = /usr/sbin/halt, /usr/sbin/fasthalt 
Cmnd_Alias REBOOT = /usr/sbin/reboot, /usr/sbin/fastboot 
Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \ 
/usr/local/bin/tcsh, /usr/bin/rsh, \ 
/usr/local/bin/zsh 
Cmnd_Alias SU = /usr/bin/su 
# 这里是针对不同的用户采用不同地策略,比如默认所有的syslog直接通过auth 输出。FULLTIMERS组不用看到lecture(第一次运行时产生的消息);用户millert使用sudo时不用输入密码;以及logfile的 路径在/var/log/sudo.log而且每一行日志中必须包括年。 
Defaults syslog=auth 
Defaults:FULLTIMERS !lecture 
Defaults:millert !authenticate 
Defaults@SERVERS log_year, logfile=/var/log/sudo.log 
#root和wheel组的成员拥有任何权利。 如果想对一组用户进行定义,可以在组名前加上%,对其进行设置.
root ALL = (ALL) ALL 
%wheel ALL = (ALL) ALL 
#FULLTIMERS可以运行任何命令在任何主机而不用输入自己的密码 
FULLTIMERS ALL = NOPASSWD: ALL 
#PARTTIMERS可以运行任何命令在任何主机,但是必须先验证自己的密码。 
PARTTIMERS ALL = ALL 
#jack可以运行任何命令在定义地CSNET(128.138.243.0, 128.138.242.0和128.138.204.0/24的子网)中,不过注意前两个不需要匹配子网掩码,而后一个必须匹配掩码。 
jack CSNETS = ALL 
#lisa可以运行任何命令在定义为CUNETS(128.138.0.0)的子网中主机上。 
lisa CUNETS = ALL 
#用户operator可以运行DUMPS,KILL,PRINTING,SHUTDOWN,HALT,REBOOT以及在/usr/oper/bin中的所有命令。 
operator ALL = DUMPS, KILL, PRINTING, SHUTDOWN, HALT, REBOOT,\ 
/usr/oper/bin/ 
#joe可以运行us operator命令 
joe ALL = /usr/bin/su operator 
#pete可以为除root之外地用户修改密码。 
pete HPPA = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root 
#bob可以在SPARC和SGI机器上和OP用户组中的root和operator一样运行如何命令。 
bob SPARC = (OP) ALL : SGI = (OP) ALL 
#jim可以运行任何命令在biglab网络组中。Sudo默认“+”是一个网络组地前缀。 
jim +biglab = ALL 
#在secretaries中地用户帮助管理打印机,并且可以运行adduser和rmuser命令。 
+secretaries ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser 
#fred能够直接运行oracle或者sybase数据库。 
fred ALL = (DB) NOPASSWD: ALL 
#john可以在ALPHA机器上,us除了root之外地所有人。 
john ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root* 
#jen可以在除了SERVERS主机组的机器上运行任何命令。 
jen ALL, !SERVERS = ALL 
#jill可以在SERVERS上运行/user/bin/中的除了us和shell命令之外的所有命令。 
jill SERVERS = /user/bin/, !SU, !SHELLS 
#steve可以作为普通用户运行在CSNETS主机上的/usr/local/op_commands/内的任何命令。 
steve CSNETS = (operator) /usr/local/op_commands/ 
#matt可以在他的个人工作站上运行kill命令。 
matt valkyrie = KILL 
#WEBMASTERS用户组中的用户可以以www的用户名运行任何命令或者可以us www。 
WEBMASTERS www = (www) ALL, (root) /usr/bin/su www 
#任何用户可以mount或者umount一个cd-rom在CDROM主机上,而不用输入密码。 
ALL CDROM = NOPASSWD: /sbin/umount /CDROM,\ 
/sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM 

三,使用
指令名称:sudo
使用权限:在 /etc/sudoers 中有出现的使用者 
使用方式:sudo -V 
sudo -h 
sudo -l 
sudo -v 
sudo -k 
sudo -s 
sudo -H 
sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s 
用法:sudo command 
说明:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行 
参数: 
-V 显示版本编号 
-h 会显示版本编号及指令的使用方式说明 
-l 显示出自己(执行 sudo 的使用者)的权限 
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码 
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟) 
-b 将要执行的指令放在背景执行 
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称 
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码) 
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell 
-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root ) 
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令 
范例: 
sudo -l 列出目前的权限 
sudo -V 列出 sudo 的版本资讯
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值