su和sudo命令的区别与使用技巧3

上一篇 / 下一篇  2008-12-11 21:29:14 / 个人分类:Lunix 点滴

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP

4/etc/sudoers中的授权规则

BA M}+oDU+z7gW0

  授权规则是分配权限的执行规则,我们前面所讲到的定义别名主要是为了更方便的授权引用别名;如果系统中只有几个用户,其实下放权限比较有限的话,可以不用定义别名,而是针对系统用户直接直接授权,所以在授权规则中别名并不是必须的;51Testing软件测试网YK_t g5f,v"FAJ W

授权规则并不是无章可寻,我们只说基础一点的,比较简单的写法,如果您想详细了解授权规则写法的,请参看man sudoers

"M w!B/lH:~n*w0

  授权用户主机=命令动作51Testing软件测试网+y6E}^1sJ

  这三个要素缺一不可,但在动作之前也可以指定切换到特定用户下,在这里指定切换的用户要用( )号括起来,如果不需要密码直接运行命令的,应该加NOPASSWD:参数,但这些可以省略;举例说明;

8usm%}&YHU3k[0

  实例一:51Testing软件测试网Pm4C9JH\

  beinan ALL=/bin/chown,/bin/chmod51Testing软件测试网9b [m{Z6H

  如果我们在/etc/sudoers中添加这一行,表示beinan可以在任何可能出现的主机名的系统中,可以切换到root用户下执行/bin/chown/bin/chmod命令,通过sudo -l来查看beinan在这台主机上允许和禁止运行的命令;

/Vq5O9a6z}0

  值得注意的是,在这里省略了指定切换到哪个用户下执行/bin/shown/bin/chmod命令;在省略的情况下默认为是切换到root用户下执行;同时也省略了是不是需要beinan用户输入验证密码,如果省略了,默认为是需要验证密码。

B1] p ymt#un-v0

  为了更详细的说明这些,我们可以构造一个更复杂一点的公式;

Pbqe)[)R'B%}0

  授权用户主机=[(切换到哪些用户或用户组)] [是否需要密码验证]命令1,[(切换到哪些用户或用户组)] [是否需要密码验证] [命令2],[(切换到哪些用户或用户组)] [是否需要密码验证] [命令3]....51Testing软件测试网C3D QKO*l VT"VF

  注解:51Testing软件测试网yHeG|8` \@m

  凡是[ ]中的内容,是可以省略;命令与命令之间用,号分隔;通过本文的例子,可以对照着看哪些是省略了,哪些地方需要有空格;

&^0CGQi!Ac"a4l0

  在[(切换到哪些用户或用户组)],如果省略,则默认为root用户;如果是ALL,则代表能切换到所有用户;注意要切换到的目的用户必须用()号括起来,比如(ALL)(beinan)

h^W|0Z0

  实例二:

Q2ybI u9T2V"d0

  beinan ALL=(root) /bin/chown, /bin/chmod51Testing软件测试网7W*~S4d&kF2}]

如果我们把第一个实例中的那行去掉,换成这行;表示的是beinan可以在任何可能出现的主机名的主机中,可以切换到root下执行/bin/chown,可以切换到任何用户招执行/bin/chmod命令,通过sudo -l来查看beinan在这台主机上允许和禁止运行的命令;51Testing软件测试网 B(f5C#m3y

  实例三:

bm5iz?8w0

  beinan ALL=(root) NOPASSWD: /bin/chown,/bin/chmod

-k8_N/z _} ]v@0

  如果换成这个例子呢?表示的是beinan可以在任何可能出现的主机名的主机中,可以切换到root下执行/bin/chown,不需要输入beinan用户的密码;并且可以切换到任何用户下执行/bin/chmod命令,但执行chmod时需要beinan输入自己的密码;通过sudo -l来查看beinan在这台主机上允许和禁止运行的命令;

j&Qi)Yx+Z0

  关于一个命令动作是不是需要密码,我们可以发现在系统在默认的情况下是需要用户密码的,除非特加指出不需要用户需要输入自己密码,所以要在执行动作之前加入NOPASSWD:参数;

T,O9LfO'T5k"lR0

  有可能有的弟兄对系统管理的命令不太懂,不知道其用法,这样就影响了他对sudoers定义的理解,下面我们再举一个最简单,最有说服务力的例子;

?}3zX%i+W"z/j z0

  实例四:51Testing软件测试网J8z'?Lk%To

  比如我们想用beinan普通用户通过more /etc/shadow文件的内容时,可能会出现下面的情况;

0k;fva-c)[\ C0

$ more /etc/shadow/etc/shadow:权限不够  [beinan@localhost ~]

"H(F;t]!T#z0

  这时我们可以用sudo more /etc/shadow来读取文件的内容;就就需要在/etc/soduers中给beinan授权

)[m#P0}Fu'[2H s2_0

  于是我们就可以先suroot用户下通过visudo来改/etc/sudoers;(比如我们是以beinan用户登录系统的)

;CiPL3q:rV0

$  su  [beinan@localhost ~]

#i\ ^'}'A5L;`4R)m#Q0

  Password:注:在这里输入root密码

ff o"aH0

  下面运行visodu51Testing软件测试网 GY+v2?@5r|T K&x

  [root@localhost beinan]# visudo注:运行visudo来改/etc/sudoers

|zGAs v g0

加入如下一行,退出保存;退出保存,在这里要会用vivisudo也是用的vi编辑器;至于vi的用法不多说了;beinan ALL=/bin/more表示beinan可以切换到root下执行more来查看文件;

{1N'S*x0Y8B| O[Gu\N0

  退回到beinan用户下,用exit命令;

yA Ymb d_&tcq0

  [root@localhost beinan]# exit51Testing软件测试网"N*f0D7v?.ZyH aaAz

  exit

/A0W1{d'_%|)` X[!Vg0

 $  [beinan@localhost ~]

@.B!S H | l9}2d0

  查看beinan的通过sudo能执行哪些命令?51Testing软件测试网'^Zk3Le2c;ELE

$ sudo  -l  [beinan@localhost ~]

C[+Gzy@B0

  Password:注:在这里输入beinan用户的密码

8N,X4d0_']G0

  User beinan may run the following commands on this host:注:在这里清晰的说明在本台主机上,beinan用户可以以root权限运行more;在root权限下的more,可以查看任何文本文件的内容的;

+c%X!\KjU2C Hj0

  (root) /bin/more51Testing软件测试网7rk0|N g9? b+A

  最后,我们看看是不是beinan用户有能力看到/etc/shadow文件的内容;

{2_%{ P s4A8C0

$ sudo more  /etc/shadow  [beinan@localhost ~]

W0sB,Cy.if|0

  beinan不但能看到/etc/shadow文件的内容,还能看到只有root权限下才能看到的其它文件的内容,比如;51Testing软件测试网!jD/LB:~W1td

$ sudo more  /etc/gshadow  [beinan@localhost ~]51Testing软件测试网1`5h$]jTr g

  对于beinan用户查看和读取所有系统文件中,我只想把/etc/shadow的内容可以让他查看;可以加入下面的一行;

:Z C]q.} I0

  beinan ALL=/bin/more /etc/shadow

uN1@+tb1`@,dhc0
  题外话:有的弟兄会说,我通过su切换到root用户就能看到所有想看的内容了,哈哈,对啊。但咱们现在不是在讲述sudo的用法吗?如果主机上有多个用户并且不知道root用户的密码,但又想查看某些他们看不到的文件,这时就需要管理员授权了;这就是sudo的好处;

TAG:

 

评分:0

我来说两句

Open Toolbar