su, su -, sudo

来源:互联网 发布:数据库第三章课后答案 编辑:程序博客网 时间:2024/04/24 15:35
su
语法[root @test/root ]#su
参数说明:
范例:
[test@testtest]$su
Password:         <==输入 root 的密码
[root@testtest]#      <==身份变成 root 了!
[test@testtest]$su - <==连环境参数档案都是读取 root 的!
[root@testroot]#su test <==将 root 的身份改为 test ,且不需要输入密码喔!说明
这个指令很有用呦!这是用来将『一般身份转换成super user 』的指令!通常为了安全的考虑,telnet 与 ssh 尽量不要以 root 的身份来登入!但是有时后我们又要在外头以root 的身份来修改系统设定,这个时候 su 就很有用了!su 的使用真的很简单,输入su 之后,直接给他输入 root 的密码,此时您就是 root 了!但是需要特别留意的是:
  • 虽然您已经是 root 的身份,但是您的环境当中,还是属于当初登入的那个使用者!例如我以test 登入 Linux ,再以 su 切换身份成为 root ,但是我的 mail, PATH 及其它一些相关的环境变量,都还是test 这个身份呢!
  • 至于环境变量当中,最麻烦的当属 PATH 这个东西,因为为了避免一般使用者使用了root 的管理指令,所以通常 Linux 都会将指令分类放在两个主要的目录,分别是/bin 与 /sbin !那个 /sbin 大多是 super user 就是 root 用来管理系统的指令啦!所以,可能的话,将test 的 PATH 重新设定成为 root 的 PATH ,这样也比较方便呀!
  • 如果要全部的环境变量均使用 root 的设定档,这个时候必需使用『su - 』来下达命令喔!

此外, su 也可以将您的身份转换成为其它身份的使用者,而,如果您是root ,那么转换为其它身份的使用者,将不需要输入密码喔!很过瘾吧!


sudo

语法

[root @test/root ]#sudo [-u username] [command]
参数说明:
-u  :将身份变成username 的身份
范例:
[test@testtest]$sudo mkdir /root/testing
Password:         <==输入 test 自己的密码
[root@testtest]$sudo -u test touch test<==root 可以执行 test 这个使用者的指令,建立test 的档案!说明
  • 如果单纯的使用 su 来变换成 root 的身份,最大的好处是可以直接下达我们惯用的指令,但是,还是会有问题的,就是如果主机是由多人共管的时候,由于所有的人都必须要知道root 的密码,如此一来,呵呵!很麻烦的啦!因为怕被入侵嘛!而且只要 root改变了密码,那么所有人都必需要通知一次!很麻烦,加上,如果管理群中的一个人不小心泄出了root 的密码,不就完蛋了??那么有没有可以不需要 root 的密码,却还是可以执行root 的工具呢?呵呵!这个时候就有 sudo 的出现了!
  • sudo 的基本语法就是在 sudo 后头直接加上指令,例如上面的例子中,mkdir /root/testing 就是命令啦!那么就可以来执行 root 身份可以动作的事情!此外,由于执行root 身份的工作时,『输入的密码是使用者的密码,而不是 root 的密码,所以可以减少root 密码外流的问题!』如此 root 的密码将不会流出去了!但是 sudo 在使用的时候请小心,就是要在/etc/sudoers 里头设定该有的事项!在预设情况下,只有 root 才能使用 sudo!那有什么用!我们是一般使用者,想要使用的是 sudo 来变成 root 的身份呀!呵呵!没关系!可以使用visudo 来编辑 /etc/sudoers 这个档案即可!在 Mandrake 9.0 与 Red Hat 的Linux 版本之的预设情况中,使用『 visudo 』才能编辑 /etc/sudoers 这个档案,此外,编辑者的身份必须要root 才行!如何编辑呢?在预设的情况中,我们会希望将可以执行 root 动作的人的group 设定为 wheel ,然后:
     [root@est /root]# visudo
    # sudoers file.
    #
    # This fileMUST be edited with the 'visudo' command as root.
    #
    # See the sudoersman page for the details on how to write a sudoers file.
    #
    # Host aliasspecification
    # User aliasspecification
    # Cmnd aliasspecification
    # Defaultsspecification
    # User privilegespecification
    root   ALL=(ALL) ALL
    test   ALL=(ALL) ALL                 <==这一行可以加入,使 test 这个人可以使用 sudo
    # Uncommentto allow people in group wheel to run all commands
    # %wheel       ALL=(ALL)       ALL   <==将这一行批注符号取消
    # Same thingwithout a password
    # %wheel       ALL=(ALL)       NOPASSWD: ALL
    # Samples
    # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
    # %users localhost=/sbin/shutdown -h now 
    如果如同上面的方式,将黄色字体那一行 /etc/sudoers里头将
     
      # %wheel       ALL=(ALL)       ALL
     
    这一行的批注符号取消,如此一来,则群组为wheel 的人就可以进行 root 的身份工作!这个wheel 是系统预设的 group 呢!因此,如果您想要让这部主机里头的一般身份使用者具有sudo 的使用权限,那么您就必需将该 user 放入支持 wheel 这个群组里头!如何加入?呵呵!刚刚上面不是介绍了/etc/group 吗?赶紧去看看!那么万一我想要让『单独的个人可以使用sudo 的功能』呢?呵呵!那就直接以visudo加上这一行
     
      test ALL=(ALL) ALL
     
    即可!那么 test 即可使用 sudo 的功能啰!很简单吧!但是请记得不要以vi 直接修改 sudoers 呦!会有问题!
  • sudo 除了变成 root 的功能之外!嘿嘿!他还可以变成『任何人』的功能呦!举个简单的例子来说好了,我们都知道启动程序的时候最好不要使用root 来启动,因为如此一来当该程序被接管时,接管者(或者说是入侵者)将拥有root 的权限了!所以近来我们都希望不要以 root 来启动一些程序啦!会比较安全!那么我们要以root 来启动成为 test (例如常用的 nobody 这个账号)要如何作?很简单,就使用上面的第二个例子来看:
     
      sudo -u test touch test
      
    root 可以改变身份成为 test 来建立档案!嘿嘿!还不需要输入密码!很棒吧!这个动作我曾经在squid 这个执行程序上面做过,这样一来,即使我的 squid 被利用了,那么该怪客只能拥有nobody 的权限,嘿嘿!该权限是很小很小的!所以可以达到保护主机的部分功能呦!

原创粉丝点击