开发中常见的命令操作

一、sudo 和 su

  • su 是switch user的意思,指当前用户将切换其他用户
  • sudo 是super user do 的意思,指当前用户申请超级管理员权限执行命令

相关博客:
https://mp.weixin.qq.com/s/UnOJkBxms_OQdEsXmwVDYA
https://www.cnblogs.com/slgkaifa/p/6852884.html

1.1 su的用法

su [-] [-c] [要切换的用户]

su  # 切换root用户
su - # 切换root用户,当前环境变量全部切换root
su user1  # 切换成 user1
su - user1 # 切换成 user1,当前环境变量全部切换user1
  • su 命令后面不跟任何信息,那么默认是切换到 root 用户
  • 加入了-参数参数,表示将当前的shell环境包括环境变量一并切换成新用户的
  • -c表示不需要先切换用户再执行命令,可以直接在当前用户下,以另一个用户的方式执行命令
  • 其他用户切换成root用户需要熟人root用户的登录密码

1.2 sudo的用法

一个用户能否使用 sudo 命令,取决于/etc/sudoers 文件的设置,该文件只能root用户修改。
最主要的用法是: 当前非root用户临时取得root用户的权限运行规定可运行的命令

例如:临时获得root权限运行 docker命令查看容器运行情况。

sudo docker  ps -a

例如:切换成root用户,此时需要输入当前用户的登录密码,而不是root用户的秘密

sudo su -
password:  

当然,有的时候也发现根本不需要密码即可切换成root,这是由于/etc/sudoers 文件里面设置的。

cat /etc/sudoers
...
## Same thing without a password
 %wheel        ALL=(ALL)       NOPASSWD: ALL
...

1.3 关于 /etc/sudoers

网上很多介绍了,这里总结一下: 文件注释里面已经说的很清楚了。

  1. Sudoers allows particular users to run various commands as the root user, without needing the root password.
    设置其他用户可以在不知道root用户的密码情况下采用root用户身份运行各种命令

  2. This file must be edited with the ‘visudo’ command.
    这个文件不能用 vi命令编辑,必须用 visudo 命令打开编辑

  3. Allow root to run any commands anywhere
    root ALL=(ALL) ALL
    appuser ALL=(ALL) /usr/bin/cat, /usr/bin/du, /usr/bin/ls, /usr/bin/cd

    Allows people in group wheel to run all commands
    %wheel ALL=(ALL) ALL

    第一列是用户账号或用户组(带%),
    第二列的ALL意思是登陆者的来源主机名,
    第三列等号右边小括号里的ALL是代表能够切换的身份。
    第四列ALL是可运行的命令,如果不是ALL,可以写明具体的命令用户逗号隔开

  4. 如果命令很多怎么写,这里提供了别名 Aliases
    查看sudoers这个文件的时候。你会看见User_Alias。Host_Alias和Cmnd_Alias这些东西,他们都是一些别名:
    User_Alias表示具有sudo权限的用户列表,就是第一列參数。
    Host_Alias表示主机的列表。就是第二列參数。
    Cmnd_Alias表示同意运行命令的列表,就是第四列參数。

## 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...

所以假设有几个password管理员的话就能够加上例如以下代码:

[root@localhost ~]# visudo
User_Alias PWMNG = manager1, manager2, manager3
Cmnd_Alias PWCMD = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
PWMNG    ALL=(root)    PWCMD

二、nohup 和 &

这个命令常常同时出现,用于程序脚本后台运行,例如下面的指令,将 payment.jar 这个java程序后端运行:

nohup java -jar payment.jar  &

两者区别或者单独使用有什么不一样的地方?

按下 Ctrl + C 键
(中断当前运行命令行)
关闭终端
(结束当前session)
单独使用nohup进程退出进程不受影响
单独使用 &进程不受影响进程退出

补充知识点:linux——各类signal信号 ,这里介绍两种常见信号:

  • SIGHUP Hong UP
    一般用户关闭或异常退出当前的Linux终端,例如手动关闭 Xshell窗口发出此信号, 通知同一session内的各个作业, 这时它们与控制终端不再关联。

  • SIGINT 程序终止(interrupt)信号,
    在用户键入INTR字符(通常是Ctrl+C) 时发出,用于通知前台进程组终止进程。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐