- 浏览: 411060 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
冯大圆__渐成胡子渣:
写得很详细,想请求一下,bundler install的时候设 ...
Rails Assets Pipeline -
DaSunWarman:
...
#!/usr/bin/env 脚本解释程序的作用 -
alexag:
...
javascript立即执行函数与函数声明和函数表达式 -
houxm:
你也可以使用更简单的方式(只要在元素上添加 data-togg ...
bootstrap 小tip -
jaycongwen:
帮我看看啊,我刚学wen@wen-desktop:~$ cd ...
cannot load such file -- openssl
用sudo提高脚本程序的权限
一,为什么要用sudo?
sudo可以提高脚本程序的权限,例如:我们曾经遇到过这种问题,
有一些文件需要通过web程序删除,但这些文件apache又没有权限访问,
所以删除不了,给用户使用程序带来不便
所以,这时需要借助于sudo来提高权限
备注:
1,apache为何没有权限?
我们先来看一下apache的用户是谁?
执行:ps auxfww
可以看到:
root 601 0.0 0.0 16092 80 ? S 2008 0:56 /usr/sbin/httpd
nobody 27493 0.0 0.2 19032 2468 ? S Feb08 0:14 \_ /usr/sbin/httpd
nobody 27494 0.0 0.4 18392 4472 ? S Feb08 0:13 \_ /usr/sbin/httpd
nobody 27495 0.0 0.3 18364 3252 ? S Feb08 0:19 \_ /usr/sbin/httpd
nobody 27496 0.0 0.3 23888 3216 ? S Feb08 0:09 \_ /usr/sbin/httpd
当前的apache的用户是nobody,
此设置是由apache的配置文件httpd.conf所设置的
接下来一个问题:我们何不把apache的用户设置root?
这样太不安全,因为使用sudo就意味着风险,我们把权限提得越高,出现错误的可能性就越大,也就越危险
2,apache和脚本是什么关系?
这个要看安装时的设置,因为现在一般是把php安装为apache的一个模块,
所以通过web访问php时,php的执行用户就是apache中所设置的用户
二,如何安装sudo?
一般情况下,sudo作为发行版的标准配置已经默认安装,
但也有未安装的情况,此时安装sudo这个rpm包即可
也可用yum进行安装
[root@dev ~]# yum install sudo
三,如何使用sudo?
我举一个例子:用来删除无权限访问的图片
分成三步:第一步:写一个bash脚本
第二步:让sudo允许使用bash脚本
第三步:在php程序中调用
1,先写bash脚本:
[root@store root]# vi /usr/sbin/delpic.sh
#!/bin/bash
rm -f $1.jpg
修改权限使可被执行
[root@store root]# chmod 755 /usr/sbin/delpic.sh
说明: delpic.sh中
$1是从命令行接收到的第一个参数
2,在修改sudo的配置文件/etc/sudoers之前,需要先使此配置文件可以被编辑
我们看一下它的属性设置
[root@store root]# ls -l /etc/sudoers
-r--r----- 1 root root 622 Aug 31 2007 /etc/sudoers
下面设置属性,使/etc/sudoers可以被编辑,当然,编辑完成后还需要把权限恢复为原样
[root@store root]# chmod 777 /etc/sudoers
可以编辑了:
[root@store root]# vi /etc/sudoers
添加一行:
nobody ALL = NOPASSWD: /usr/sbin/delpic.sh
完成后再恢复配置文件原有的属性
[root@store root]# chmod 440 /etc/sudoers
说明:
添加到配置文件中的一行命令起什么作用?
注意sudoers的语法:
授权用户 主机=命令动作
此三个对象,缺一不可
第一栏: nobody
此栏标明sudo的应用对象,当前例子是nobody这个用户
备注:如果是用户组,请在前面添加%号
例如:
%admin表示admin这个用户组
第二栏: ALL=
此栏指定当前规则所适用的主机,设置为ALL时表示是所有主机
等号后面可以跟上 用户或用户组,如果省略掉用户或组,表示默认切换到root用户
所以此处等价于:ALL=(root)
再看一个例子:ALL=(ALL)
这个就表示能切换到所有用户
第三栏: NOPASSWD: /usr/sbin/delpic.sh
此栏指定sudo所指定用户可以执行的命令,如有多个命令,可以在此处用逗号隔开
NOPASSWD: 表示无需输入密码进行验证
注意:如不加此项,则默认是需要输入密码验证的
如果是执行某个目录下所有的命令,可以利用通配符
例如: /usr/sbin/*
综述上面的内容:
nobody这个用户可以切换到root执行 /usr/sbin/delpic.sh这个命令,并且在切换时无需输入密码
3,在php程序中调用我们所创建的bash脚本
delpic.php
<?php
//得到文件路径
$filepath = $_GET['filepath'];
//删除文件:
system("sudo /usr/sbin/delpic.sh $filepath");
?>
注意:
从php中调用我们所写的bash脚本时,需要在命令行前面添加 sudo
四: sudo配置文件中其他项的说明:
/etc/sudoers中默认有一行命令是未被注释掉的
root ALL=(ALL) ALL
它的作用:## Allow root to run any commands anywhere
即:允许 root以任何用户的身份在任何主机上运行任何命令
五: 编辑/etc/sudoers的专用命令
编辑/etc/sudoers很麻烦,需要反复修改权限,
我们可以使用visudo进行编辑,这样可以避免修改权限,
当然,前提是要切换到root超级用户下
[lhd@localhost ~]$ su root
密码:
[root@localhost lhd]# ll /etc/sudoers
-r--r----- 1 root root 3161 2008-05-05 /etc/sudoers
[root@localhost lhd]# visudo
六:多学一点内容:
如果我想在一行规则之中定义多个用户,多个主机,多个命令,应该怎么样写?有无简单的写法?
答案是:我们可以使用别名,
什么是别名?可以这样理解:别名就是定义了变量,然后在规则中引用变量
看例子:
fedora 10上面附带的
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
Cmnd_Alias关键字用来声名命令的别名
STORAGE是别名的名字,实际代表的命令是/sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
再看两个
Host_Alias MAILSERVERS = smtp, smtp2
主机别名的声明
User_Alias ADMINS = jsmith, mikem
用户别名的声明
实际应用的例子:
%sys ALL = STORAGE
sys这个组可以切换为root超级用户执行STORAGE这个别名所代表的命令
别名的应用很灵活,用法也很多,如有需要,请大家自己参考手册进行更深入的学习
别名的用法执行 man sudoers 这个命令可以看到
一,为什么要用sudo?
sudo可以提高脚本程序的权限,例如:我们曾经遇到过这种问题,
有一些文件需要通过web程序删除,但这些文件apache又没有权限访问,
所以删除不了,给用户使用程序带来不便
所以,这时需要借助于sudo来提高权限
备注:
1,apache为何没有权限?
我们先来看一下apache的用户是谁?
执行:ps auxfww
可以看到:
root 601 0.0 0.0 16092 80 ? S 2008 0:56 /usr/sbin/httpd
nobody 27493 0.0 0.2 19032 2468 ? S Feb08 0:14 \_ /usr/sbin/httpd
nobody 27494 0.0 0.4 18392 4472 ? S Feb08 0:13 \_ /usr/sbin/httpd
nobody 27495 0.0 0.3 18364 3252 ? S Feb08 0:19 \_ /usr/sbin/httpd
nobody 27496 0.0 0.3 23888 3216 ? S Feb08 0:09 \_ /usr/sbin/httpd
当前的apache的用户是nobody,
此设置是由apache的配置文件httpd.conf所设置的
接下来一个问题:我们何不把apache的用户设置root?
这样太不安全,因为使用sudo就意味着风险,我们把权限提得越高,出现错误的可能性就越大,也就越危险
2,apache和脚本是什么关系?
这个要看安装时的设置,因为现在一般是把php安装为apache的一个模块,
所以通过web访问php时,php的执行用户就是apache中所设置的用户
二,如何安装sudo?
一般情况下,sudo作为发行版的标准配置已经默认安装,
但也有未安装的情况,此时安装sudo这个rpm包即可
也可用yum进行安装
[root@dev ~]# yum install sudo
三,如何使用sudo?
我举一个例子:用来删除无权限访问的图片
分成三步:第一步:写一个bash脚本
第二步:让sudo允许使用bash脚本
第三步:在php程序中调用
1,先写bash脚本:
[root@store root]# vi /usr/sbin/delpic.sh
#!/bin/bash
rm -f $1.jpg
修改权限使可被执行
[root@store root]# chmod 755 /usr/sbin/delpic.sh
说明: delpic.sh中
$1是从命令行接收到的第一个参数
2,在修改sudo的配置文件/etc/sudoers之前,需要先使此配置文件可以被编辑
我们看一下它的属性设置
[root@store root]# ls -l /etc/sudoers
-r--r----- 1 root root 622 Aug 31 2007 /etc/sudoers
下面设置属性,使/etc/sudoers可以被编辑,当然,编辑完成后还需要把权限恢复为原样
[root@store root]# chmod 777 /etc/sudoers
可以编辑了:
[root@store root]# vi /etc/sudoers
添加一行:
nobody ALL = NOPASSWD: /usr/sbin/delpic.sh
完成后再恢复配置文件原有的属性
[root@store root]# chmod 440 /etc/sudoers
说明:
添加到配置文件中的一行命令起什么作用?
注意sudoers的语法:
授权用户 主机=命令动作
此三个对象,缺一不可
第一栏: nobody
此栏标明sudo的应用对象,当前例子是nobody这个用户
备注:如果是用户组,请在前面添加%号
例如:
%admin表示admin这个用户组
第二栏: ALL=
此栏指定当前规则所适用的主机,设置为ALL时表示是所有主机
等号后面可以跟上 用户或用户组,如果省略掉用户或组,表示默认切换到root用户
所以此处等价于:ALL=(root)
再看一个例子:ALL=(ALL)
这个就表示能切换到所有用户
第三栏: NOPASSWD: /usr/sbin/delpic.sh
此栏指定sudo所指定用户可以执行的命令,如有多个命令,可以在此处用逗号隔开
NOPASSWD: 表示无需输入密码进行验证
注意:如不加此项,则默认是需要输入密码验证的
如果是执行某个目录下所有的命令,可以利用通配符
例如: /usr/sbin/*
综述上面的内容:
nobody这个用户可以切换到root执行 /usr/sbin/delpic.sh这个命令,并且在切换时无需输入密码
3,在php程序中调用我们所创建的bash脚本
delpic.php
<?php
//得到文件路径
$filepath = $_GET['filepath'];
//删除文件:
system("sudo /usr/sbin/delpic.sh $filepath");
?>
注意:
从php中调用我们所写的bash脚本时,需要在命令行前面添加 sudo
四: sudo配置文件中其他项的说明:
/etc/sudoers中默认有一行命令是未被注释掉的
root ALL=(ALL) ALL
它的作用:## Allow root to run any commands anywhere
即:允许 root以任何用户的身份在任何主机上运行任何命令
五: 编辑/etc/sudoers的专用命令
编辑/etc/sudoers很麻烦,需要反复修改权限,
我们可以使用visudo进行编辑,这样可以避免修改权限,
当然,前提是要切换到root超级用户下
[lhd@localhost ~]$ su root
密码:
[root@localhost lhd]# ll /etc/sudoers
-r--r----- 1 root root 3161 2008-05-05 /etc/sudoers
[root@localhost lhd]# visudo
六:多学一点内容:
如果我想在一行规则之中定义多个用户,多个主机,多个命令,应该怎么样写?有无简单的写法?
答案是:我们可以使用别名,
什么是别名?可以这样理解:别名就是定义了变量,然后在规则中引用变量
看例子:
fedora 10上面附带的
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
Cmnd_Alias关键字用来声名命令的别名
STORAGE是别名的名字,实际代表的命令是/sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
再看两个
Host_Alias MAILSERVERS = smtp, smtp2
主机别名的声明
User_Alias ADMINS = jsmith, mikem
用户别名的声明
实际应用的例子:
%sys ALL = STORAGE
sys这个组可以切换为root超级用户执行STORAGE这个别名所代表的命令
别名的应用很灵活,用法也很多,如有需要,请大家自己参考手册进行更深入的学习
别名的用法执行 man sudoers 这个命令可以看到
发表评论
-
#!/usr/bin/env 脚本解释程序的作用
2014-02-08 14:59 25725#!/usr/bin/env 在linux的一些bash的脚本 ... -
vim 分屏方法
2012-02-25 01:21 1831使用分屏命令: :new 创建空白分屏 :split 对当 ... -
ubuntu开启SSH服务
2011-09-16 11:09 1415SSH分客户端openssh-client和openssh-s ... -
Ubuntu Linux系统下apt-get命令详解
2011-09-16 02:28 1096整理了Ubuntu Linux操作系统下apt-get命令的详 ... -
Unable to lock the administration directory (/var/lib/dpkg/), is another process
2011-09-16 02:17 6215通过终端安装程序sudo apt-get install ** ... -
linux sh,bin文件的安装方法
2011-09-11 13:00 2224记下在Ubuntu下安装*.sh和*.bin的简单方法。 * ... -
nginx高并发配置
2011-08-23 21:38 1453nginx配置及说明: worker_processes 8 ... -
Nginx Configure 配置详解
2011-08-23 21:33 1757Nginx 使用 Unix 下常用的 './configure ... -
linux shell 简单介绍
2011-08-21 20:55 1575Linux 系统结构: 硬件->Kernel(驱动程序 ... -
RPM APT YUM
2011-08-05 02:04 2521RPM 是 Red Hat Package Manager ... -
unix shebang 符号
2011-11-22 22:09 1657在计算机科学中,Shebang(也称为Hashbang)是一个 ... -
ubuntu安装nginx+passenger
2011-07-13 00:07 22421、安装passenger gem install passe ... -
/etc/profile 和/etc/environment
2011-07-06 01:07 2042先将export LANG=zh_CN加入/etc/profi ... -
第一次使用ubuntu11.0.4
2011-07-05 00:51 1292因为是第一次使用ubuntu11.0.4,所以对 ... -
linux 下memcached安装配置
2011-06-29 17:58 1472最近在研究怎么让Discuz!去应用Memcache去做一些事 ... -
linux 家目录下的.bashrc 与.profile文件的区别
2011-06-29 17:45 3444今天在干活时因为经常要重启nginx服务器,命令实在是冗长麻烦 ... -
添加非root用户为sudo用户
2011-04-13 14:33 2988第一种方法: 添加sudo ... -
Linux下cron的使用
2011-04-07 23:16 977cron是一个linux下的定时 ... -
关于初次使用ubuntu的相关记录
2011-03-19 01:29 1017初次接触ubuntu的时候啥也不知道,所以总是什么都是一塌糊涂 ...
相关推荐
在某些场景下,我们可能需要在脚本中使用`sudo`命令来执行需要管理员权限的操作。通常,运行带有`sudo`的命令时,系统会提示用户输入密码。然而,为了实现自动化,我们不希望在脚本执行过程中手动输入密码。本文将...
4. **命令行工具**:Nsudo提供了命令行界面,用户可以通过简单的命令行参数指定要执行的命令以及所需的权限等级,方便进行自动化脚本编写和远程操作。 5. **源代码开放**:Nsudo的源代码是公开的,开发者可以查看、...
这时,我们通常会用到`sudo`(Superuser DO)这个命令,它允许用户以管理员权限运行程序。然而,在Python脚本中直接调用`sudo`并不直接,需要借助一些技巧。本文将深入探讨如何在Python中通过调用子进程来执行Bash...
Linux下获取root权限的c程序 传递euid和egid给脚本,使脚本具有特殊用户的权限 使脚本实现类于设置了stick位的效果 shell, python, perl等脚本、程序不能取得suid,因为这些脚本程序需要解释器-/bin/bash, /usr/bin/...
Termux-Sudo脚本通过自动化这一过程,使得非技术用户也能轻松安装Sudo。 首先,按照描述中的步骤,你需要在Termux中安装Git,这是一个分布式版本控制系统,用于跟踪文件和目录的变化。执行`apt install git`命令...
gsudo 是一个基于 Shell 脚本的工具,它允许用户以 root 权限运行图形化用户界面(GUI)应用程序,而无需通过传统的 sudo 或 su 命令。这个工具对于那些希望在不破坏系统安全性的前提下,方便地运行需要管理员权限的...
在日常使用中,我们常常会遇到需要管理员权限才能执行的操作,而NSudo则可以灵活地帮助我们在不同权限级别之间切换,提高工作效率,同时减少不必要的权限风险。 **NSudo的工作原理** NSudo的核心在于利用Windows的...
在IT行业中,软件自动化安装脚本是提高效率和减少人为错误的重要工具,特别是在大规模系统部署时。本主题主要关注在Linux环境下使用Shell脚本来实现Java Development Kit (JDK) 和 PostgreSQL 数据库的自动化安装。 ...
"脚本应用.zip"这个文件可能包含一系列用于特定目的的脚本程序,可能是为了简化日常操作、提高效率或解决特定的技术问题。"AUTHORIZED_USER="root""这部分描述提示我们,这些脚本可能涉及到Linux或者Unix系统的权限...
在使用PyCharm进行Python编程时,有时会遇到需要以root权限运行脚本来完成特定任务的情况,比如访问某些受限资源或进行系统级别的操作等。然而,默认情况下,PyCharm和其他大多数IDE一样,并不会以root权限运行程序...
标题中的“通过SSHPASS执行命令及相关脚本”是指在Linux环境下使用`sshpass`工具进行非交互式SSH登录并执行远程命令的技术。`sshpass`是一个命令行实用程序,它允许用户在不手动输入密码的情况下,通过SSH连接执行...
Linux 中 root 与 sudo 的用法与区别 在 Linux 系统中,root 和 sudo 是两个非常...我们建议使用 sudo 而不是直接使用 root 账户,是因为 sudo 可以提供更加细粒度的权限控制和日志记录功能,从而提高系统的安全性。
**NSudo V8.2:Windows系统权限提升工具详解** 在Windows操作系统中,有时为了执行特定的任务或修复系统问题,我们需要提升当前用户的...正确理解和使用NSudo,能有效提高工作效率,同时降低因权限不足导致的问题。
在Linux环境中,管理和维护服务器时,了解系统的硬件配置至关重要。这篇文档将详细解析一个用于获取Linux服务器硬件配置信息的...在日常运维工作中,能够熟练掌握并运用这些命令和脚本技巧,可以显著提高工作效率。
Shell脚本是Linux系统中的一种批处理程序,它允许用户编写一系列命令并将其保存为一个文件,通过执行这个文件来完成自动化任务。编写Shell脚本通常涉及变量定义、条件判断、循环结构、函数定义等元素。在我们的场景...
本文将详细讲解如何在Linux环境下进行软件更新、程序终止以及使用脚本进行文件解压缩。这些技能对于任何Linux用户或系统管理员来说都是至关重要的。 首先,让我们来看看如何升级和更新Linux系统中的软件。Linux系统...
自动安装脚本的核心原理是通过执行一系列命令来下载OpenOffice的安装包,然后调用系统内置的安装程序或者使用特定工具进行部署。例如,在Windows上,这可能是一个批处理文件(.bat),而在Linux系统中,可能是Bash...
在Linux系统中,CentOS 7是一个广泛应用的服务器操作系统,对于系统管理员来说,配置开机自启动脚本是一项基本任务,可以确保系统启动时自动运行特定的服务或程序。这里我们将详细探讨如何在CentOS 7中设置开机自...
3. 执行脚本:使用命令行以root权限运行脚本,如`sudo bash script_name.sh`。 4. 监控安装:在安装过程中,脚本会提示输入必要的信息,如Oracle SID、全局数据库名、口令等。密切监控安装日志,以确保过程无误。 5....