您的位置 首页 linux 运维

linux提权命令sudo

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

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章