• su和sudo命令详解


    我们知道,在Linux下对很多文件进行修改都需要有root(管理员)权限,比如对/ect/profile等文件的修改。很多情况下,我们在进行开发的时候都是使用普通用户进行登录的,尤其在进行一些环境变量的配置工作时,常常需要对一些文件进行修改。那么我们如何获取管理员权限呢?

    ​ 一般来说,有两种方法。一是:利用su命令切换到root用户,在root用户下对那些文件进行修改,完成相关配置工作。二是:利用su命令切换到root用户,修改/etc/sudoers文件,让普通用户具有sudo权限,然后利用su命令切换回普通用户,在执行相关命令前加上sudo。下面我会先介绍这两个命令。

    su

    Linux su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码

    使用权限:所有使用者。

    语法

    su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
    

    选项

    选项 说明
    -c<指令>或--command=<指令> 执行完指定的指令后,即恢复原来的身份;
    -f或——fast 适用于csh与tsch,使shell不用去读取启动文件;
    -l或——login 改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
    -m,-p或--preserve-environment 变更身份时,不要变更环境变量;
    -s<shell>或--shell=<shell> 指定要执行的shell;
    --help 显示帮助;
    --version 显示版本信息。

    实例

    变更帐号为 root 并在执行 ls 指令后退出变回原使用者

    su -c ls root
    

    变更帐号为 root 并传入 -f 参数给新执行的 shell

    su root -f
    

    变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)

    su - clsung
    

    切换用户

    hnlinux@ylg:~$ whoami //显示当前用户
    hnlinux
    hnlinux@wylg:~$ pwd //显示当前目录
    /home/hnlinux
    hnlinux@ylg:~$ su root //切换到root用户
    密码: 
    root@ylg:/home/hnlinux# whoami 
    root
    root@ylg:/home/hnlinux# pwd
    /home/hnlinux
    

    切换用户,改变环境变量

    hnlinux@ylg:~$ whoami //显示当前用户
    hnlinux
    hnlinux@ylg:~$ pwd //显示当前目录
    /home/hnlinux
    hnlinux@ylg:~$ su - root //切换到root用户
    密码: 
    root@ylg:/home/hnlinux# whoami 
    root
    root@ylg:/home/hnlinux# pwd //显示当前目录
    /root
    

    sudo

    Linux sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

    语法

    sudo(选项)(参数)
    

    选项

    选项 说明
    -b 在后台执行指令;
    -h 显示帮助;
    -H 将HOME环境变量设为新身份的HOME环境变量;
    -k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
    -l 列出目前用户可执行与无法执行的指令;
    -p 改变询问密码的提示符号;
    -s<shell> 执行指定的shell;
    -u<用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
    -v 延长密码有效期限5分钟;
    -V 显示版本信息。

    实例

    sudo命令使用

    $ sudo ls
    [sudo] password for hnlinux: 
    hnlinux is not in the sudoers file. This incident will be reported.
    

    指定用户执行命令

    # sudo -u userb ls -l
    

    以root权限执行上一条命令

    $ sudo !!
    

    以特定用户身份进行编辑文本

    $ sudo -u uggc vi ~www/index.html
    //以 uggc 用户身份编辑  home 目录下www目录中的 index.html 文件
    

    获取管理员权限

    方法一

    一般情况下,Linux下root用户默认是没有密码,要利用su命令切换到root用户,需要先利用sudo passwd root命令对root用户设置初始密码

    sudo passwd root #设置初始密码
    

    在修改完root用户的密码之后,我们利用su root命令,输入root用户的密码就可以切换到root用户下来了。

    方法二

    在执行命令前加上sudo让用户获得管理员权限,首先需要在root用户下,具有管理员权限对/etc/sudoers文件进行修改。

    我们需要先利用su命令切换到root用户下,输入visudo -f /etc/sudoers命令进行编辑

    visudo -f  /etc/sudoers
    

    进入文件之后,找到root ALL=(ALL) ALL这条语句所在的地方,将root替换成你想要具有管理员权限的用户名(比如:ylg),在这行语句下面输入ylg ALL=(ALL) ALL,然后进行保存

    root ALL=(ALL) ALL
    # 添加
    ylg ALL=(ALL) ALL
    

    在给普通用户管理员权限之后,以后为了修改文件就可以直接在命令前加上sudo即可,如

    sodu vi /etc/profile
    
  • 相关阅读:
    php出现“syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM”错误的一种情况,及解决方法
    nginx配置:支持phpfastcgi,nginx和phpcgi通信,部分nginx常量解释
    一步步构建大型网站架构(转/收藏)
    PHP中$_REQUEST中包含的数据,数据被覆盖问题
    使用linux时碰到的两个问题
    小谈字节序
    备忘录(1)
    [c#]如何编写需要授权才能使用的WebService?
    [XML]XPath小记
    [Misc]如何得知系统存在哪几个COM口?
  • 原文地址:https://www.cnblogs.com/yangliguo/p/8463143.html
Copyright © 2020-2023  润新知