su
参数说明:
-:“su -” 代表切换为 root 的身份。
-l:后面需要加上欲切换的用户账号。
-c:仅进行一次命令,“su - -c "命令" ”,需要输入 root 的密码后再执行,执行命令后身份不变。
-m:表示使用目前的环境变量,不读取新用户的环境变量。
注意:
单纯使用 "su" 切换为 root 身份时,会使很多变量不进行正确的改变,因为读取变量设置方式为 non-login shell 方式;使用 "su -" 方式就不会,因为使用 login shell 的方式读取变量文件。"su" 命令后的 "-" 与用户名字中间有个空格。
因为使用这个命令切换为 root 身份,都需要输入 root 的密码,但是不方便把 root 的密码告诉所有人,所以出现 sudo 这个命令来避免这个问题。
离开 su 命令用 exit。
sudo
开始时系统默认仅有 root 可以执行 sudo,但是可以通过设置用户权限来决定谁可以使用 sudo 这个命令。
设置用户权限:
1、执行 visudo 命令后,大约在76行会看到 "root ALL=(ALL) ALL",利用 visudo 这个命令,其实就是帮你执行 vi /etc/sudoers。
2、在这行后面加上自己需要的设置。
root ALL=(ALL) ALL 代表的意思分别是:
root:用户账号。
第一个 ALL:登陆者的来源主机,就是你从哪台主机连过来的。
第二个 ALL:可切换的身份,就是来源主机可以以什么身份执行后面的命令。
第三个 ALL:可执行的命令,这个命令必须以绝对路径填写。
总的来说就像是穿越,root 指代只让 root 这个人穿越,就像人名一样;第一个 ALL 指代他从哪个地方来的,可能中国,美国,韩国;第二个 ALL 指代让他穿越到哪个人身上;第三个 ALL 指代他能利用这个人的身体做什么。这里的 ALL 意思是没有限制。当然,这四个值可以根据自己的需要来设置。
上面是修改单一用户的 sudo 权限,下面介绍修改用户组权限的方法。
例:
visudo
执行完这个命令后在第84行左右可以看到
%wheel ALL=(ALL) ALL
这是去掉最左边的 "#",加上 "%" 后的样子。修改完保存离开。接着执行
usermod -a -G wheel aaaa
意思是将 aaaa 加入 wheel 的支持。
注意:
root 用户执行 sudo 时不用输密码,欲切换者与执行者身份相同也不用输入密码,但是其他用户再输入自己的密码之后才能进行后续的操作。
如果其他用户也不想输入密码怎么办?也可以通过 visudo 来设置
例:
visudo
执行这个命令后大约在87行可以看到
%wheel ALL=(ALL) NOPASSWD: ALL
因为四个变量(root、ALL、ALL、ALL)都可以是自己设定的,如果用户账号或者可执行的命令有多个又该怎么设置呢?
例:
在 root 身份下,执行 visudo 后输入
User_Alias ADMPW = aaa,bbb,ccc
Cmnd_Alias ADMPWCOM = !/user/bin/passwd, /user/bin/passwd [A-Za-z]*, !/user/bin/passwd root
ADMPW ALL=(root) ADMPWCOM
sudo 命令的用法
给了权限就可以执行命令了,接下来介绍 sudo 命令的用法:
-b:将后续的命令让系统自行执行,而不与目前的 shell 产生影响。
-u:后面可以接欲切换的用户,若无此项则代表切换身份为 root。接用户后可以直接接命令,代表这个用户执行后面的命令。
例:
sudo -u sshd touch /tmp/myssd
意思为以 sshd 的身份在 /tmp 下面新建一个 myssd 的文件。
sudo 搭配 su 使用
为了使自己能将身份转化为 root,但是想要用自己的密码,就可以利用 sudo 和 su 来实现
例:
visudo
User_Alias ADMINS = aaa, bbb, ccc
ADMINS ALL = (root) /bin/su -
接下来 aaa, bbb, ccc 三个人只要输入 "sudo su-" 并且输入自己的密码后就可以变为 root 身份。
注意:
因为 visudo 只是利用 vi 将 /etc/sudoers 文件调出来进行修改,所以对 sudoers 文件的修改操作是根据 vi 的规则来进行修改、保存、退出的。
网友评论