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
应用实例
- 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`
- 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
重重点说明
- su 与 su -的区别
su: 不完全切换,保留原来的工作环境
su -: 完全切换。改变用户,且改变用户的工作环境。包括HOME,SHELL, USER, LOGNAME, PATH等
网友评论