linux下权限问题,如何让无root管理员权限的用户执行需root权限执行的脚本文件

author author     2023-05-13     394

关键词:

例如我有一个脚本文件,这个脚本文件里的命令能否执行成功取决于是否是具有root权限。
而现在我需要让这个sh脚本文件供普通用户执行(不是管理员用户),那么应当如何做?
当然其中不能让普通用户提权为root权限,什么使用sudo命令以及输入密码之类的。
希望有能者回答。
注意:不是如何提升普通用户的权限!而且是普通用户(不是可以网上的所谓的可以使用sudo的普通用户 似乎什么时候听说过chmod 4755可以使得任何人执行这个文件时有与文件所有者相当的权利。但是好像shell脚本文件行不通。但又有人说只要用c写一个封装程序,封装程序调用shell脚本。然后在设置这个封装程序为suid。那么什么是封装程序,怎么封装?如何调用shell脚本。
这样吧,以调用封装程序mount /dev/sda5 /media/d下为例帮帮我。详细地举举例子。(前一个不知怎么回事就被采纳了,可能点错了,觉得百度应当加上一个点击采纳还要在确定一下的功能)

看了前面几位回答者我觉得应当采取一种简单的方法。

看你的意图允许任何人挂载/dev/sda5并且访问它

那么可以如此,任何人都可以挂载硬盘而无需密码,包括其他的/dev/sda6之类的

首先新建一个组,然后让每一个人都在这个组里(添加组及设置组的成员有图形界面较简单,省略),假设为newnew

设置方法

sudo gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

里面会有(第一个代码块),如下内容加上第三行后如发炮制加上(第二个代码块)


[Mounting, checking, etc. of internal
drives]
Identity=unix-group:admin
Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*
ResultActive=yes
[Change CPU Frequency
scaling]
Identity=unix-group:admin
Action=org.gnome.cpufreqselector
ResultActive=yes
[Setting the
clock]
Identity=unix-group:admin
Action=org.gnome.clockapplet.mechanism.*
ResultActive=yes

;unix-group:newnew

由此任何人都可以挂载硬盘了。但问题还没解决

挂载后普通用户是没有读权限的。在此要设置/media/d(假设/dev/sda5挂载在这里)为任何人可读

sudo chmod 777 /media/d

如此任何人都可以相当于在这个文件夹下建立读取删除执行文件了,当然里面的子文件夹和子文件另有设置的除外。

当然,也有可能有些其它的”盘“(严格来讲linux中没有盘的概念)挂载之后就有可读可写可执行的权限,但你又不希望这个盘有这样的权限。则另外设置其为相应的权限。

具体见chmod命令

如此这个问题得一解决。虽说与问题中所说的suid,脚本文件中离得较远,但终归解决了问题。

程序之类的东西应当是本着解决问题的原则。然后才是怎样最优化解决问题。

参考技术A 一般来说rwx=4+2+1,即4代表读,2代表写,1代表执行权限,合起来就是7,也就是说7代表包含读写和执行3个权限

那么4755中的4代表SUID,是一个特殊的权限,科普(4为SUID,2为SGID,1为SBIT)
关于SUID举个简单的例子,首先大家都知道普通用户都可以利用/usr/bin/passwd修改密码,而密码储存的文件/etc/shadow,那么可以先看看这2个文档的权限设置
ll /usr/bin/passwd
-rwsr-xr-x 1 root root 27936 Aug 11 2010 /usr/bin/passwd
ll /etc/shadow
-r-------- 1 root root 911 Jul 10 19:20 /etc/shadow

可以看到/etc/shadow这个文档属主是root用户,其他用户是没有任何权限的,那么为什么其他用户还能修改密码呢,原因是/usr/bin/passwd这个文档中有个s的权限,这就是SUID的作用,
1、SUID仅对二进制程序有效
2、执行者需要对该程序具有x的权限
3、本权限仅在执行程序的过程中有效
4、执行者具有该程序拥有者(属主)的权限
很明显/usr/bin/passwd是一个二进制程序,还给了其他用户x权限,而且带上s权限,那么其他用户执行这个程序就能拥有属主root的权限了追问

关键是已经用root用户设置chmod 4755 a.sh了ll查看它如下
-rwsr-xr-x 1 liusm liusm 25 7月 11 09:51 a.sh*
然后普通用户执行却是
mount: 只有 root 才能进行此操作
看来之前所看到的suid对于脚本文件无效是正确的。
这下怎么办?

追答

是的,第一点已经说过了,SUID仅对二进制程序有效,脚本非二进制程序,所以无效。如果脚本想实现普通用户具有root的执行权限,只能通过sudo

参考技术B 在你要执行的命令前加上sudo,例如
sudo vi /etc/vimrc 可以对vim的配置进行修改
切换到shell文件的目录 可以使用
建立test.sh 文件 sudo vi test.sh
sudo chmod u+x test.sh
sudo ./test.sh

如果要学习的话,建议系统的看一下《鸟哥私房菜》(基础版),有助于学习和理解
参考技术C 这就是linux的可爱之处,要是没有如此严格的权限设置,就跟windows没什么区别了(何况win7以后,微软在这方面也有长足进步).
要自动运行,加到init.d里面去
参考技术D chmod 777 不行吗?追问

不行,试了,没用

追答

sodu chmod 777 abc.sh
不行?

sudo权限

sudo权限管理问题:请问Linux系统中默认情况下有几个超级管理员用户?一个管理员管理系统方便吗?答:默认只有root这一个管理员账号。一个账号管理系统很不方便。问题:如何在linux系统中指定多个管理员账号?答:方案一:... 查看详情

linux的根目录

...user2目录下的内容,而系统的信息,在某些情况下也需要管理员权限参考技术A/root目录是不会对root权限之外的任何用户开放的,之所以这么设计都是出于安全方面的考虑,而任何服务器都不会把root权限给予任何用户的。就debian... 查看详情

linux下的git用户管理权限,如何实现一个用户下多目录不同权限管理问题?

参考技术A要具体到每个目录啊?追答要具体到每个目录啊?我用的gitosis,做不到这么细致的权限控制。刚刚接触这些新系统可以看下《linux就该这么学అ8本回答被提问者采纳 查看详情

linux的权限问题

Linux权限Linux下用户权限权限提升问题su命令:Linux权限管理①文件访问者的分类②文件类型③权限属性文件权限值的表示方法文件权限的修改chmod关于目录权限对拥有者和所属组的修改默认权限值修改初始权限值:粘滞位L... 查看详情

ubuntu下创建目录没有权限如何解决

 就是这种情况,谢谢各位原因:没有开启root权限造成的。1、首先打开UBUNTU下界面,点击输入开启root权限命令:sudopasswordroot,回车确定。2、设置好root用户后输入命令:suroot,输入root用户密码;3、当输入框前面的“$”符号... 查看详情

centos如何给用户提权到root

...法获取root权限。扩展资料:root用户是系统中唯一的超级管理员,它具有等同于操作系统的权限。一些需要root权限的应用,譬如广告阻挡,是需要root权限的。可问题在于root比windows的系统管理员的能力更大,足以把整个系统的大... 查看详情

新装linux系统如何获得root权限

...root用户$su方法二:使用sudo命令,针对单个命令授予临时权限。sudo仅在需要时授予用户权限,减少了用户因为错误执行命令损坏系统的可能性。sudo也可以用来以其他用户身份执行命令。用法示例:以root用户的身份修改主机名为z... 查看详情

linux普通用户如何安装软件(无root权限,不知道root密码)?别回答切换到root或者给用户root权限之类的。

感谢啦,网上都是切换到root啊,给普通用户授权之类的,balalala....要有管理员授权才可安装应用软件。参考技术A没权限,就别想了。 查看详情

我是linux初学者,使用的版本是fedora,请问为啥我使用管理员账号登录依然显示无root权

我是linux初学者,使用的版本是fedora,请问为什么我使用管理员账号登录依然显示无root权限?,应该如何获取权限?管理员不是root要想获得root权限就需要以root账户登录或者用管理员登录后用su命令来变成root追问我是初学者,请... 查看详情

linux操作系统下怎么建立一个系统管理员

不用建了了。在安装的时候已经有了。可以以管理员身份运行:root,密码。或者,在你以普通用户登录时,想要切换到管理员权限,可以用su命令。还有一个sudo命令,需要将当前用户加入到sudoers里面,然后才可以用,有的系统可... 查看详情

如何在没有 root 权限的情况下安装 Perl 模块?

】如何在没有root权限的情况下安装Perl模块?【英文标题】:HowcanIinstallPerlmoduleswithoutrootprivileges?【发布时间】:2011-04-1317:52:51【问题描述】:我在一台没有root权限的Linux机器上。我想通过CPAN将一些包安装到我的主目录中,这样... 查看详情

为啥linux的mtr只能在root下运行

...行啊,只要root给普通用户分配权限,或者把普通用户加入到管理员组(有权执行的组).当然也可以使用sudo来执行.像vlc,有些游戏,为了安全问题,默认都只能在普通用户下执行,root用户不能执行.但是都可以通过修改来达到目的.linux是很... 查看详情

linux怎么进入root权限(代码片段)

...ndowsXP却是安装好系统好,就给你创建一个自动登录的管理员用户,不过Linux不一样的这一点也大大地增加了系统的安全性,但同时对我们的操作使用有了些特别的要求,下面我们就讲讲linux怎么进入root权限。推荐... 查看详情

linux怎么提升root权限啊?用su和sudo也不行啊?

...,输入的密码不会显示出来。参考技术A1、你是想把不同管理员,提权,提高到和root一样的权限么?2、不建议如此,也完全没必要如此3、这个也是不太容易实现的,在linux系统下,一些特殊权限给了root用户,而不是给了root用户... 查看详情

linux下如何让一个普通用户开机执行自己的一个脚本,不用root权限

我想过cron、at还有rc.d这些都是要root权限才能操作的,但是我现在没有root用户密码,我就是想在自己的小用户上开机之后就能自动运行一些脚本,如何能实现?脚本里写密码不安全,可以编辑/etc/sudoers,将用root免密码执行某命... 查看详情

linux运维用户管理并赋管理员权限(代码片段)

...前登录用户    who和users两种方式:whousers为用户赋管理员权限    “为用户赋管理员权限”是指普通用户可以使用sudoxx,使其具有临时使用root权限的权利,赋予这个权利需要下面的配置才行;没有配置权限之... 查看详情

linux系统下如何修改文件或目录的权限?

  文件权限的重要性想必人人都知道吧,在Linux系统中,每个文件都设定了针对不同用户的访问权限,那么,如何手动修改文件的访问权限呢?以下是详细的内容:  Linux系统中,文件的基本权限由9个字符组成,以rwxrw-r-x为例... 查看详情

红米怎么开启官方自带root权限

...,增加或者禁用硬件等等。root用户是系统中唯一的超级管理员,它具有等同于操作系统的权限。一些需要root权限的应用,譬如广告阻挡,是需要root权限的。可问题在于root比windows的系统管理员的能力更大,足以把整个系统的大... 查看详情