sudo命令详解

简介:

sudo介绍:

sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,减少了root用户的登陆和管理时间,提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。

 

 

sudo命令

 

示例讲解:

首先查看sudo是否安装:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
#检查系统中是否存在sudo
[root@lovelace ~] # rpm -qa | grep sudo
sudo -1.7.2p1-13.el5
#检查sudo的执行命令以及相关文件
[root@lovelace ~] # rpm -ql sudo
/etc/pam .d /sudo
/etc/pam .d /sudo-i
/etc/sudoers
/usr/bin/sudo
/usr/bin/sudoedit
/usr/libexec/sesh
/usr/libexec/sudo_noexec .so
/usr/sbin/visudo

 

1、给予用户lovelace,nick创建用户、删除用户和更改用户属性的权限

2、但是上面赋予的权限对root用户无效

在完成上面的习题之前我们先来简单测试下sudo的用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#使用visudo编辑/etc/sudoers文件,添加下面的一行
[root@lovelace ~] # tail -1 /etc/sudoers
lovelace ALL=(root)  /usr/sbin/useradd
#切换用户进行测试
[root@lovelace ~] # su -l lovelace
#创建新用户
[lovelace@lovelace ~]$  sudo /usr/sbin/useraddtest
We trust you have received the usual lecture from the localSystem
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
#这里提示要输入当前用户的密码
[ sudo ] password forlovelace:
Sorry, try again.
[ sudo ] password forlovelace:
Sorry, try again.
[ sudo ] password forlovelace:
useradd :警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
#在执行第一次验证的5分钟之内,不会在要求你输入密码验证
[lovelace@lovelace ~]$  sudo /usr/sbin/useraddcto
#查看结果
[lovelace@lovelace ~]$  tail -2  /etc/passwd
test :x:1013:1013:: /home/test : /bin/bash
#如果我们使用未被授权的命令,将会提示下面的信息
[lovelace@lovelace ~]$  sudo /usr/sbin/userdelcto
[ sudo ] password forlovelace:
Sorry, user lovelace is not allowed to execute  '/usr/sbin/userdel cto' as root on lovelace.localdomain.
cto:x:1014:1014:: /home/cto : /bin/bash

 

 

接下来我们来实现我们刚刚提出的两个问题

1、给予用户lovelace,nick创建用户、删除用户和更改用户属性的权限

2、但是上面赋予的权限对root用户无效

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#使用visudo对/etc/sudoers文件进行编辑 效果如下
[root@lovelace ~] # tail -4 /etc/sudoers
User_Alias USERADMIN=lovelace,nick
Cmnd_Alias COMMAND= /usr/sbin/useradd , /usr/sbin/userdel , /usr/sbin/usermod
USERADMIN ALL=(root) COMMAND
#lovelace ALL=(root) /usr/sbin/useradd
#切换用户验证结果
[root@lovelace ~] # su -l lovelace
[lovelace@lovelace ~]$  sudo /usr/sbin/userdelcto
[ sudo ] password forlovelace:
Sorry, try again.
[ sudo ] password forlovelace:
[lovelace@lovelace ~]$  cat /etc/passwd | grepcto
[lovelace@lovelace ~]$  sudo /usr/sbin//usermod-s  nologin  test
[lovelace@lovelace ~]$  cat /etc/passwd | greptest
lovetest:x:1012:1012:: /home/lovetest : /bin/bash
test :x:1013:1013:: /home/test :nologin
#Note:这个是可以对管理员密码进行更改的
[lovelace@lovelace ~]$  sudo /usr/sbin/usermod-p  51cto root

 

对sudoers文件再次进行编辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#使用visudo对/etc/sudoers文件进行编辑
[root@lovelace magedu] # tail -5 /etc/sudoers
User_Alias USERADMIN=lovelace,nick
Cmnd_Alias COMMAND= /usr/sbin/useradd , /usr/sbin/userdel , /usr/sbin/usermod [-][A-Za-z]*,! /usr/sbin/usermod [-][A-Za-z]* root
USERADMIN ALL=(root) COMMAND
#lovelace ALL=(root) /usr/sbin/useradd
#切换用户再次测试
[root@lovelace ~] # su -l lovelace
#测试看下是否能够对root账户属性进行编辑
[lovelace@lovelace ~]$  sudo /usr/sbin/usermod-p  51cto root
Sorry, user lovelace is not allowed to execute  '/usr/sbin/usermod -p 51cto root' as root on lovelace.localdomain.
#对普通用户操作
[lovelace@lovelace ~]$  sudo /usr/sbin/usermod-p  51cto  test
[ sudo ] password forlovelace:

 

问题解决.....



本文转自lovelace521 51CTO博客,原文链接:http://blog.51cto.com/lovelace/1215182,如需转载请自行联系原作者

相关文章
|
6月前
|
缓存 Linux
lscpu命令详解
`lscpu` 是Linux系统下用于显示CPU架构和相关详情的命令,帮助用户了解处理器配置,适用于性能诊断、系统调优和软件部署规划。输出包括架构(如x86_64或ARM)、操作模式、字节顺序、CPU核心和线程信息、NUMA节点等。选项如 `-a` 显示所有CPU信息,`-b` 和 `-c` 分别显示在线和离线CPU信息。信息来源包括sysfs和`/proc/cpuinfo`文件。
251 2
|
6月前
|
Linux Shell 数据安全/隐私保护
linux命令之sudo/su
linux命令之sudo/su
121 7
|
Ubuntu 应用服务中间件 nginx
Ubuntu exportfs命令
Ubuntu exportfs命令
227 0
|
索引
Samtools安装及常用命令详解
Samtools安装及常用命令详解
1278 0
Samtools安装及常用命令详解
|
Linux 数据安全/隐私保护
|
Shell 数据库 索引
|
分布式计算 Hadoop Linux
|
测试技术 数据安全/隐私保护