开发中常见的命令操作
一、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
网上很多介绍了,这里总结一下: 文件注释里面已经说的很清楚了。
-
Sudoers allows particular users to run various commands as the root user, without needing the root password.
设置其他用户可以在不知道root用户的密码情况下采用root用户身份运行各种命令 -
This file must be edited with the ‘visudo’ command.
这个文件不能用 vi命令编辑,必须用visudo
命令打开编辑 -
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,可以写明具体的命令用户逗号隔开 -
如果命令很多怎么写,这里提供了别名 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) 时发出,用于通知前台进程组终止进程。