linux终止程序与用户切换
Linux命令行下如何终止当前程序
快捷键:
- Ctrl+c
- 在命令行下起着终止当前执行程序的作用,(这条命令貌似要输入两次)
- Ctrl+d
- 相当于exit命令,退出当前shell
- Ctrl+s
- 挂起当前shell(保护作用很明显哦)
- Ctrl+q
- 解冻挂起的shell再不行就重新连接打开一个终端,reboot linux 或 kill 相关进程。
Linux系统下用户切换
su [user] 和 su - [user]的区别:
su [user]切换到其他用户,但是不切换环境变量,su - [user]则是完整的切换到新的用户环境。
如:
[root@rac1 ~]# pwd --当前目录
/root
[root@rac1 ~]# su oracle --使用su [user]
[oracle@rac1 root]$ pwd --当前目录没有改变,还是之前的用户目录
/root
[oracle@rac1 root]$ su - oracle --使用su - [user]
Password:
[oracle@rac1 ~]$ pwd --当前目录变为当前用户的家目录
/home/oracle
[oracle@rac1 ~]$
所以建议大家在切换用户时,尽量用su - [user],否则可能会出现环境变量不对的问题。
为什么需要切换用户身份?
在日常工作中,尽量使用普通用户账号操作,当需要root权限的时候再通过身份切换的方式切换至root管理员,这样能保证系统的安全性。使用普通账号的安全性主要体现在两个方面:
- 防止因误操作而删除了系统重要文件;
- 创建一些系统账户专门用来启动某些服务,这样即使该服务被攻陷,系统仍然是安全的。
下面介绍两种Linux中切换用户身份的方式。
身份切换方式一:su
该命令可以将身份切换至指定账户,但需要输入该账户的密码。
su [-lm] [-c 命令] username
这个我目前用的比较多:
通常用 su root 切换到root用户
用su 用户名 切换到普通用户
- 若不加username则表示切换至root
- 使用su和su -均能切换至root账户,但不加-会使很多变量仍然保持切换前用户的变量,而加了-之后则参数将会完全变成root的参数,尤其是环境变量PATH,从而能够直接使用某些命令,而无需指定绝对路径。
- 若只想执行一个root权限才能执行的命令的时候,可以将命令直接写在-c的后面,这样无需切换身份,如:
su -c vim /etc/shadow
身份切换方式二:sudo
使用su切换身份需要直到root账号的密码,这样并不安全。为了提高安全性,我们可以使用sudo来执行需要root权限的功能。 sudo由root指定,指定后用户只需输入自己账号的密码就能申请到root权限,而无需告诉任何人root密码,因此安全了不少。
sudo [-b] [-u username] 需要执行的命令
-b:使后续的命令自行执行,而不与目前的shell产生影响。
使用visudo指定拥有sudo权限的账户
拥有sudo权限的账户由/etc/sudoers文件维护,我们只需修改该文件的内容即可指定用户拥有sudo权限。但sudoers文件具有一定的语法规则,因此不建议使用vim直接修改,而是使用visudo命令进行操作,因为visudo命令能进行语法检查,当我们出现语法错误时能够及时纠正。 下面我们就来看看sudoers文件的内容:
root ALL=(ALL) ALL
- 第一个参数表示允许进行sudo操作的用户名
- 第二个参数表示允许的源主机IP
- 第三个参数表示可以切换的用户名
- 第四个参数表示允许执行的命令
使用visudo指定拥有sudo权限的用户组
$users ALL=(ALL) ALL
$表示该用户为一个用户组。在visudo中设置了用户组后,只要是该用户组的用户均有sudo权限。如果想让一个用户获得sudo权限,只需加入该用户组即可,无需再修改sudoers文件。
开启sudo免密功能
先前的用户在执行sudo命令后都需要输入自己的密码,然而对于一些十分信任的用户可以免去他们在sudo时输入密码:
$users ALL=(ALL) NOPASSWD:ALL
只需在最后一个参数前加上NOPASSWD即可!
限制sudo操作
1.限制可切换的用户范围,如:只允许chai能sudo至root
chai ALL=(root) ALL
2.限制用户能执行的操作,如只允许用户执行命令/usr/bin/passwd
chai ALL=(root) /usr/bin/passwd
通过别名设置visudo
- 通过User_Alias为用户们起一个别名
- 通过Cmnd_Alias为可执行的操作起一个别名 如,允许jsmith, mikem这两个用户将身份切换至root,并可以执行/sbin/route和 /sbin/ifconfig这两个命令。
User_Alias ADMINS = jsmith, mikem
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig
ADMINS ALL=(root) NETWORKING
sudo与su的搭配使用
su和sudo各有千秋,su能切换用户身份,但需要知道对方的密码,这并不安全;而sudo无需知道对方的密码,但每次执行root命令都需要加上sudo,这很不方面,下面的配置能够让这两种方式的优点结合起来:
User_Alias ADMINS = chai1,chai2,chai3
ADMINS ALL=(root) /bin/su -
此时只要输入sudo su -并输入自己的密码后即可变成root账户。
大部分内容属于
作者:大闲人柴毛毛

浙公网安备 33010602011771号