zoukankan      html  css  js  c++  java
  • Linux命令——su 、su -、sudo

    前言
    大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户。
    切换用户身份有两个命令 su [-] username 和 sudo
    su和su -区别

    su只是切换了root身份,但Shell环境仍然是普通用户的Shell;此时pwd,发现工作目录仍然是普通用户的工作目录

    su -连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。此时pwd,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。

    bash-4.2$ echo $PATH
      /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
    [root@localhost ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    View Code

    以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。

    su和sudo的区别

    su 或者 su -可以切换用户身份,而且每个用户都能切换到root用户,只要他知道root密码即可。这样很不安全,万一哪个用户不消息泄露了root密码就GG了。

    于是引出了改进版命令sudo

    使用sudo执行一个只有root才能执行的命令是可以办到的,但是需要密码。注意。这里的密码不在是root的密码,而是用户自己的密码。默认情况下只有root用户才能执行sudo命令,普通用户要想执行sudo,需要root预先设定。通过visudo命令编辑/etc/sudoers来实现。(好像直接vi  /etc/sudoers也行)

    /etc/sudoers文件内容如下

    ## Sudoers allows particular users to run various commands as
    ## the root user, without needing the root password.
    ##
    ## Examples are provided at the bottom of the file for collections
    ## of related commands, which can then be delegated out to particular
    ## users or groups.
    ## 
    ## This file must be edited with the 'visudo' command.
    
    ## Host Aliases
    ## Groups of machines. You may prefer to use hostnames (perhaps using 
    ## wildcards for entire domains) or IP addresses instead.
    # Host_Alias     FILESERVERS = fs1, fs2
    # Host_Alias     MAILSERVERS = smtp, smtp2
    
    ## User Aliases
    ## These aren't often necessary, as you can use regular groups
    ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname 
    ## rather than USERALIAS
    # User_Alias ADMINS = jsmith, mikem
    
    
    ## Command Aliases
    ## These are groups of related commands...
    
    ## Networking
    # Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
    
    ## Installation and management of software
    # Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
    
    ## Services
    # Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable
    
    ## Updating the locate database
    # Cmnd_Alias LOCATE = /usr/bin/updatedb
    
    ## Storage
    # Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
    
    ## Delegating permissions
    # Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp 
    
    ## Processes
    # Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
    
    ## Drivers
    # Cmnd_Alias DRIVERS = /sbin/modprobe
    
    # Defaults specification
    
    #
    # Refuse to run if unable to disable echo on the tty.
    #
    Defaults   !visiblepw
    
    #
    # Preserving HOME has security implications since many programs
    # use it when searching for configuration files. Note that HOME
    # is already set when the the env_reset option is enabled, so
    # this option is only effective for configurations where either
    # env_reset is disabled or HOME is present in the env_keep list.
    #
    Defaults    always_set_home
    
    Defaults    env_reset
    Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
    Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
    Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
    Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
    Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
    
    #
    # Adding HOME to env_keep may enable a user to run unrestricted
    # commands via sudo.
    #
    # Defaults   env_keep += "HOME"
    
    Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
    
    ## Next comes the main part: which users can run what software on 
    ## which machines (the sudoers file can be shared between multiple
    ## systems).
    ## Syntax:
    ##
    ##     user    MACHINE=COMMANDS
    ##
    ## The COMMANDS section may have other options added to it.
    ##
    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)     ALL
    
    ## Allows members of the 'sys' group to run networking, software, 
    ## service management apps and more.
    # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
    
    ## Allows people in group wheel to run all commands
    %wheel    ALL=(ALL)    ALL
    
    ## Same thing without a password
    # %wheel    ALL=(ALL)    NOPASSWD: ALL
    
    ## Allows members of the users group to mount and unmount the 
    ## cdrom as root
    # %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
    
    ## Allows members of the users group to shutdown this system
    # %users  localhost=/sbin/shutdown -h now
    
    ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
    #includedir /etc/sudoers.d
    View Code

    重点介绍下面两处

    ①此处可以单独设置某个用户。3列分别代表 用户名   我也不知道(反正都这么写)  指定可以使用sudo的命令有哪些

    ②如果用户有几百几千个,总不能一条一条写吧。。。加入wheel组就可以实现所有用户都有sudo权力。

  • 相关阅读:
    [状压dp][spfa] Jzoj P3737 挖宝藏
    [计算几何] Jzoj P3736 数学题
    [排序][vector] Jzoj P6288 旋转子段
    [区间dp] Jzoj P6287 扭动的树
    [bfs][spfa] Jzoj P6286 走格子
    [点分治] Luogu P2664 树上游戏
    [树链剖分][树状数组] Luogu P3676 小清新数据结构题
    [计算几何][dp] Luogu P1995 智能车比赛
    [后缀数组][并查集] Luogu P2178 品酒大会
    [莫比乌斯反演][整除分块] Bzoj P2301 Problem b
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/9179873.html
Copyright © 2011-2022 走看看