分页: 1 / 1

chmod+s命令,设置后重启无效【求助】

发表于 : 2011-02-25 12:17
dlazycat
用俩系统,经常要在Ubuntu里挂在Win7的盘。繁琐,于是编写脚本
mount命令需要root权限,于是用chmod+s来设置。设置成功后,一般用户也可以使用此脚本,不许要root权限了。
但是最后一个问题始终没有解决:重启系统后设置的+s位消失了~~极其郁闷,各种搜索也找不到答案。

不知道各位大虾们怎嘛解决类似问题,就是让非root用户不用输入密码就获取root权限的?

编写的C+shell代码如下:

代码: 全选

# include <stdio.h>
# include <stdlib.h>
# include <string.h>

int main(int argv, char ** args){

	if (!strcmp(args[1], "-m"))
	{
		if(system("sudo mount /dev/sda1 /media") == 0)
			printf("mount \nsuccess\n");
	}
	else if(!strcmp(args[1], "-u"))
	{
		if(system("sudo umount /dev/sda1") == 0)
			printf("umount \nsuccess\n");
	}

}

Re: chmod+s命令,设置后重启无效【求助】

发表于 : 2011-02-26 0:29
millenniumdark
在 /etc/fstab 里设置挂载选项就可以

Re: chmod+s命令,设置后重启无效【求助】

发表于 : 2011-02-27 10:58
aerofox
支持楼上的做法。
即使用楼主的方法,既然设置 s 位,就没有必要再用 sudo 了。
楼主的程序放在什么分区?

Re: chmod+s命令,设置后重启无效【求助】

发表于 : 2011-02-27 16:53
cnkilior
他放在非linux分区了。

Re: chmod+s命令,设置后重启无效【求助】

发表于 : 2011-02-28 12:38
dlazycat
aerofox 写了:支持楼上的做法。
即使用楼主的方法,既然设置 s 位,就没有必要再用 sudo 了。
楼主的程序放在什么分区?
一楼的方法貌似不能动态加载~~~我是想用的时候加载~~~虽然只是图省事不想输入密码,但真的想不明白到底什么原因~~
尝试过不用sudo,也好使。与这个问题貌似没有什么关系。
放在~/目录下,确实是linux分区。

反正就是重启后s位小时,实在让我很郁闷~~~关于linux系统,是专门从硬盘划一块Ext分区给安的,没有通过Wubi~~

Re: chmod+s命令,设置后重启无效【求助】

发表于 : 2011-03-13 16:43
tusooa
udev rules.
https://wiki.archlinux.org/index.php/Ud ... 6%96%87%29

自动加载usb设备

代码: 全选

KERNEL=="sd[a-z]", NAME="%k", SYMLINK+="usb%m", GROUP="users", OPTIONS="last_rule"
ACTION=="add", KERNEL=="sd[a-z][0-9]", SYMLINK+="usb%n", GROUP="users", NAME="%k"
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mkdir -p /mnt/usb%n"
ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o rw,noauto,sync,dirsync,noexec,nodev,noatime,dmask=000,fmask=111 /dev/%k /mnt/usb%n", OPTIONS="last_rule"
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mount -t auto -o rw,noauto,sync,dirsync,noexec,nodev,noatime /dev/%k /mnt/usb%n", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/umount -l /mnt/usb%n"
ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/rmdir /mnt/usb%n", OPTIONS="last_rule"
把这些udev规则放到/etc/udev/rules.d/下任何一个文件名以.rules结尾的文件中,例如/etc/udev/rules.d/sda.rules。

如果想同时建立/media到/mnt符号连接,可以使用下面的版本:

代码: 全选

KERNEL=="sd[a-z]", NAME="%k", SYMLINK+="usbhd-%k", GROUP="users", OPTIONS="last_rule" 
ACTION=="add", KERNEL=="sd[a-z][0-9]", SYMLINK+="usbhd-%k", GROUP="users", NAME="%k" 
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mkdir -p /media/usbhd-%k" 
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/ln -s /media/usbhd-%k /mnt/usbhd-%k" 
ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o rw,noauto,sync,dirsync,noexec,nodev,noatime,dmask=000,fmask=111 /dev/%k /media/usbhd-%k", OPTIONS="last_rule" 
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mount -t auto -o rw,noauto,sync,dirsync,noexec,nodev,noatime /dev/%k /media/usbhd-%k", OPTIONS="last_rule" 
ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/rm -f /mnt/usbhd-%k" 
ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/umount -l /media/usbhd-%k" 
ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/rmdir /media/usbhd-%k", OPTIONS="last_rule"

注意!如果你是用的其它的固定设备(例如SATA的硬盘,您可以从/etc/fstab中查看)被识别为/dev/sdX,您必须从sd[a-z] 中去掉你的那个sdX。例如,如果您的SATA硬盘被是识别为/dev/sda,您就需要把所有的“sd[a-z]”替换成“sd[b-z]”。
在规则文件的文件名前加上数字(如:010.udev.rules)是个很好的主意,这样udev在读取标准规则前,将会读取这个规则文件。 这些规则设置后不需要修改/etc/fstab文件。请查看mount命令的参数来修改权限等特性(您可以从论坛搜索查看mount命令的参数,然后根据您的需要修改它们)。

Re: chmod+s命令,设置后重启无效【求助】

发表于 : 2011-03-14 12:32
lilydjwg
编辑 /etc/sudoers 可设置为 sudo 不需要密码;
写个 daemon 开机时以 root 权限运行接受挂载请求;
把 mount 程序 +s;
。。。

PS:竟然用 system 调用。。。