linux sudo 命令是用来 申请权限的。
很多非root 用户 想要查看文件 都要 sudo cat 的,也就是要在命令前加上 sudo ,然后 输入密码,才可以。
(1) sudo -s
sudo -s命令的含义是切换到超级用户(root)并打开一个新的shell窗口。
sudo -s
企业中用来控制权限:
禁止root登录 使用普通用户登录
比如开发想要查看日志: 使用dev用户登录系统 使用cat /var/log/messages
我们来演示一下:
第一步: 创建开发dev用户 设置密码
useradd dev
echo 1 | passwd --stdin dev
第二步: 切换到dev用户
su - dev
第三步: 在dev用户下使用cat /varlog/messages
[dev@baimeidashu ~]$cat /var/log/messages
cat: /var/log/messages: Permission denied
第四步: 通过root进行授权给dev用户 cat命令执行时拥有root的权限
方法1: 使用visudo 进行授权 visudo 相当于执行 vim /etc/sudoers 但是有语法检查功能
方法2: 直接编辑源文件 vim /etc/sudoers
第四步: dev用户使用授权后的cat命令
su - du
备注:
使用sudo -l查看用户的sudo提权命令
授权多个命令: 使用逗号分隔命令
dev ALL=(ALL) /usr/bin/cat,/usr/bin/vim
授权为所有命令: ALL 对运维管理员授权最高
dev ALL=(ALL) ALL
对命令进行取反
dev ALL=(ALL) ALL,!/usr/bin/vim,!/usr/bin/sed,!/usr/bin/cat
执行sudo命令时候不需要提示输入自己的密码
dev ALL=(ALL) NOPASSWD: ALL
不需要输入密码的操作:
默认5分钟后刚才输入的sodo密码过期,下次sudo需要重新输入密码,如果觉得在sudo的时候输入密码麻烦,把刚才的输入换成如下内容即可:
your_user_name ALL=(ALL) NOPASSWD: ALL
至于安全问题,对于一般个人用户,我觉得这样也可以的。
如果你想设置只有某些命令可以sudo的话,
your_user_name ALL= (root) NOPASSWD: /sbin/mount, (root) NOPASSWD: /bin/umount, (root) NOPASSWD: /mnt/mount, (root) NOPASSWD: /bin/rm, (root) NOPASSWD: /usr/bin/make, (root) NOPASSWD: /bin/ln, (root) NOPASSWD: /bin/sh, (root) NOPASSWD: /bin/mv, (root) NOPASSWD: /bin/chown, (root) NOPASSWD: /bin/chgrp, (root) NOPASSWD: /bin/cp, (root) NOPASSWD: /bin/chmod
问题:
sudo: error in /etc/sudo.conf, line 19 while loading plugin “sudoers_policy“
解决方案: 连接
chmod 644 /usr/libexec/sudo/sudoers.so
chown -R root /usr/libexec/sudo
注意: 有的时候你的将用户设了nopasswd,但是不起作用,原因是被后面的group的设置覆盖了,需要把group的设置也改为nopasswd。
group_name ALL=(ALL) NOPASSWD: ALL
小结: 重点
1.提权命令
visudo vim /etc/sudoers
2.授权
dev ALL=(ALL) NOPASSWD: ALL
dev ALL=(ALL) 带路径的命令/usr/sbin/vim,/usr/sbin/less
3.普通用户如何执行sudo命令
sudo vim /etc/hosts
欢迎来撩 : 汇总all