Chinaunix首页 | 论坛 | 博客
  • 博客访问: 657704
  • 博文数量: 780
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 4885
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-22 16:14
文章分类

全部博文(780)

文章存档

2008年(780)

我的朋友

分类: LINUX

2008-08-22 16:26:07


大家都知道,在Derbian和Ububtu中,为了安全起见,以普通用户登录以后在终端中不允许通过su命令来切换为超级用户,想要代替超级用户执行命令必须通过sudo命令来实现,使用sudo命令确实比使用su更加安全。例如,在使用su的时候,由于本身属于超级用户,可以对任何文件进行任何操作,如果因为忘记自己以经成为了超级用户、不小心删除了某些系统所需的重要文件,将会引起及其严重的后果。而如果不使用su,则想执行某个命令,系统会自动检察用户是否拥有这个权限,如果没有,则提醒用户,这个时候再使用sudo命令来暂时替代超级用户来执行,则在这个过程中用户最起码会考虑一下操作是否正确,这样在一定程度上可以防止因粗心而带来的灾难。

但而在基于RedHat的Linux发行版(Fedora,RHEL,RedHat,红旗……)默认使用的是su,而非sudo,如果想要使用sudo,必须正确配置sudoers文件。sudoers位于/etc下,在使用sudo的时候,系统查询sudoers里面给用户分配的权限,然后根据查询结果进行相关操作。下面这个文件是我从Fedora8的sudoers中拷贝出来的,然后进行了翻译和整理,大家可以看一下,然后根据里面的提示进行操作,正确配置自己机器的sudoers文件,打造一个更加安全的系统。
QUOTE:##Sudoersallowsparticularuserstorunvariouscommandsastherootuser,withoutneedingtherootpassword.
##Sudoers可以使特定的用户以根用户的身份执行各种命令,而无需根密码。

##Examplesareprovidedatthebottomofthefileforcollectionsofrelatedcommands,whichcanthenbedelegatedouttoparticularusersorgroups.
##文件的后面给出了相关指令集的例子,这些例子中的用户和组均可用特定的用户和组来代替(替换成你的系统里面的用户和组。)

##Thisfilemustbeeditedwiththe''visudo''command.
##这一文件必须使用visudo来进行编辑!!




##HostAliases
##Groupsofmachines.Youmayprefertousehostnames(perhapsusingwildcardsforentiredomains)orIPaddressesinstead.
#Host_AliasFILESERVERS=fs1,fs2
#Host_AliasMAILSERVERS=smtp,smtp2
#机器的组,可以使用hostname或者IP地址来替代。




##UserAliases
##Thesearen''toftennecessary,asyoucanuseregulargroups(ie,fromfiles,LDAP,NIS,etc)inthisfile-justuse%groupnameratherthanUSERALIAS.
#User_Aliasyyc=yyc
#用户入口,这通常并不是必需的,因为我们可以用正常组来替代,即:使用组名(groupname)而不是USERALIAS。




##CommandAliases
##Thesearegroupsofrelatedcommands...
#控制入口,以下是相关命令的分组。

##Networking(网络)
Cmnd_AliasNETWORKING=/sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/iptables,/usr/bin/rfcomm,/usr/bin/wvdial,/sbin/iwconfig,/sbin/mii-tool

##Installationandmanagementofsoftware(软件的安装和管理)
Cmnd_AliasSOFTWARE=/bin/rpm,/usr/bin/up2date,/usr/bin/yum

##Services(服务)
Cmnd_AliasSERVICES=/sbin/service,/sbin/chkconfig

##Updatingthelocatedatabase(本地数据库升级)
Cmnd_AliasLOCATE=/usr/sbin/updatedb

##Storage(存储)
Cmnd_AliasSTORAGE=/sbin/fdisk,/sbin/sfdisk,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/umount

##Delegatingpermissions(委派权限)
Cmnd_AliasDELEGATING=/usr/sbin/visudo,/bin/chown,/bin/chmod,/bin/chgrp

##Processes(进程相关)
Cmnd_AliasPROCESSES=/bin/nice,/bin/kill,/usr/bin/kill,/usr/bin/killall

##Drivers(驱动)
Cmnd_AliasDRIVERS=/sbin/modprobe



#Defaultsspecification(默认说明)

#
#Disable"sshhostnamesudo",becauseitwillshowthepasswordinclear.Youhavetorun"ssh-thostnamesudo".
#禁止在使用SSH登录的时候使用sudo,这样会显示明码。如果想要在SSH登录的时候使用sudo,登录时候必须使用ssh-t来进行登录。
Defaultsrequiretty

Defaultsenv_reset
Defaultsenv_keep="COLORSDISPLAYHOSTNAMEHISTSIZEINPUTRCKDEDIR\
LS_COLORSMAILPS1PS2QTDIRUSERNAME\
LANGLC_ADDRESSLC_CTYPELC_COLLATELC_IDENTIFICATION\
LC_MEASUREMENTLC_MESSAGESLC_MONETARYLC_NAMELC_NUMERIC\
LC_PAPERLC_TELEPHONELC_TIMELC_ALLLANGUAGELINGUAS\
_XKB_CHARSETXAUTHORITY"

##Nextcomesthemainpart:whichuserscanrunwhatsoftwareonwhichmachines(thesudoersfilecanbesharedbetweenmultiplesystems).
##这一部分是重点,他规定了哪些用户可以在哪些机器上去运行哪些软件。注:不同的系统可以使用同一个sudoers文件。
##Syntax:
##
##userMACHINE=COMMANDS
##
##TheCOMMANDSsectionmayhaveotheroptionsaddedtoit.
##
##Allowroottorunanycommandsanywhere(规定:根用户可以在任何系统上执行所有程序)
rootALL=(ALL)ALL

##Allowsmembersofthe''sys''grouptorunnetworking,software,servicemanagementappsandmore.使组sys里面的用户可以执行网络,软件,服务管理以及其他命令。
#%sysALL=NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES,LOCATE,DRIVERS
#将上面的注释去掉即可实现该功能,其中sys改为自己机器上的组即可。下同。

##Allowspeopleingroupwheeltorunallcommands(使组wheel里面的用户可以执行所有程序,但使用sudo的时候##需要输入个人密码。)
#%wheelALL=(ALL)ALL

##Samethingwithoutapassword(同上,但是不需要输入密码,我的系统在这里进行了修改,使我可以直接使用sudo命令)
#%wheelALL=(ALL)NOPASSWD:ALL
%yycALL=(ALL)NOPASSWD:ALL
##Allowsmembersoftheusersgrouptomountandunmountthecdromasroot
#允许wheel组里面的用户执行mount和umount。
#%usersALL=/sbin/mount/mnt/cdrom,/sbin/umount/mnt/cdrom

##Allowsmembersoftheusersgrouptoshutdownthissystem允许users里面的用户关闭系统。
#%userslocalhost=/sbin/shutdown-hnow

其实,如果只是想在一个用户不多的机器上实现sudo并不难,只要修改这个文件相应的位置即可,文件里面的用户,组,以及相关命##令都可以根据自己的实际情况进行设定,这不难。但是如果一个服务器上有很多的用户,很多的组,如何去设定就要仔细推敲一下了。 下载本文示例代码
阅读(467) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~