美文网首页
Linux命令之——su

Linux命令之——su

作者: NeverGP | 来源:发表于2018-08-17 10:18 被阅读0次

    LINUX.jpg

    命令功能

    字面意思,运行一个带有替换用户和组ID的命令,可以理解为切换用户。

    使用格式

     su [options...] [-] [user [args...]]
    
    

    常用选项

            --c command, --command=command: 通过-c选项将命令传给shell
             --session-command=command: 和-c类似,但是不会创建新的会话
            -f, --fast: 将-f选项传给shell,能否有用取决于shell
            -g, --group=group: 指定主组,这个选项值允许root用户使用
            -G, --supp-group=group: 指定追加一个组,该选项只允许root用户使用。
            如果没有指定主组,那么第一个追加的组通常被作为主组
            -, -l, --login: 以类似真实登录环境启动一个shell,作为登录shell。(切换用户)
                1.  清除除了TERM(术语)以外的所有环境变量
                2. 重置HOME,SHELL, USER, LOGNAME, PATH等环境变量
                3. 更改了用户家目录
                4. 将shell的argv [0]设置为' - ',以使shell成为登录shell
            -m, -p, --preserve-environment: 保留所有环境变量。如果通过--option指定,则该选项可以忽略。
            -s SHELL, --shell=SHELL: 运行指定的shell代替默认的shell。这个shell是依据下列规则指定的:
                1. 通过--shell选项指定
                2. 如果使用--preserve-environment选项,则在环境变量SHELL中指定shell
                3. shell是在目标用户的口令 条目中列出的shell
                4. /bin/sh
    

    应用实例

    1. su LOGINNAME
    [root@centos7 ~]#su test
    [test@centos7 root]$pwd
    /root
    [test@centos7 root]$echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:`/root/bin`
    
    1. su - LOGINNAME
    [root@centos7 ~]#su - test
    Last login: Thu Aug 16 21:39:52 EDT 2018 on pts/1
    [test@centos7 ~]$pwd
    /home/test
    [test@centos7 ~]$echo $PATH
    /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/test/.local/bin:`/home/test/bin`
    

    su - LOGINNAME -c COMMAND
    or
    su -LOGINNAME --command=COMMAND

    [test@centos7 ~]$su - -c 'useradd testuser'
    Password: 
    [test@centos7 ~]$id testuser
    uid=1002(testuser) gid=1002(testuser) groups=1002(testuser
    [test@centos7 ~]$tail /etc/passwd
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    gdm:x:42:42::/var/lib/gdm:/sbin/nologin
    gnome-initial-setup:x:989:983::/run/gnome-initial-setup/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin
    clown:x:1000:1000:clown:/home/clown:/bin/bash
    test:x:1001:1001::/home/test:/bin/bash
    testuser:x:1002:1002::/home/testuser:/bin/bas
    

    重重点说明

    1. su 与 su -的区别

    su: 不完全切换,保留原来的工作环境
    su -: 完全切换。改变用户,且改变用户的工作环境。包括HOME,SHELL, USER, LOGNAME, PATH等

    相关文章

      网友评论

          本文标题:Linux命令之——su

          本文链接:https://www.haomeiwen.com/subject/xyxzbftx.html