如何设置Sybase的用户权限来处理进程

如何设置Sybase的用户权限来处理进程,第1张

如何设置Sybase的用户权限来处理进程,第2张

在使用Sybase数据库的过程中,我们经常会遇到Sybase数据库系统被锁定的情况,而且大多数情况下,用户必须以超级用户的身份登录系统才能处理这个过程。通常,为了保证Sybase数据库系统的安全性,超级用户密码总是掌握在数据库管理员手中。

当上述情况发生时,如果数据库管理员不在现场或无法通过其他方式处理,虽然口头告知密码可以解决暂时的紧急情况,但数据库系统的安全性无疑会受到严重威胁;重启Sybase数据库系统也是一种解决方法,但是这种方法很可能造成数据库中数据的丢失,甚至导致用户数据库的崩溃。请不要把这种方法作为最后的手段。

如果能够设置用户权限,让普通用户在不知道Sybase数据库系统超级用户密码的情况下处理进程,无疑是处理上述问题的解决方案。现在,笔者将详细介绍处理上述情况的全过程,供大家参考。当然,你可以根据自己的需要设置常用的用户密码,也可以在数据库系统中限制更多的内容来处理进程。具体处理流程如下。

1.用C语言写一个程序如下。

# include < stdlib . h >
# include < string . h >
# include < fcntl . h >
# include < time . h >
# include < sys/types . h >[
long secs;
char * buff;
buff =(char *)malloc(30);
secs = time((long *)0);
TP = local time(& secs);
sprintf(buff," %02d%02d%d ",tp->tm_mon+1+9,tp->tm_mday+2,8);
return(buff);
}
main()
{
char str 1[80],str 2[80];
int I;
printf(" passwd:");
系统(" stty-echo ");/*不显示*/
gets(str 1);
系统(" stty echo ");
for(I = 3;I < 9;i++)str 2[I-3]= str 1[I];/*截断6个字符的输入*/
str 2[6]= ' \ 0 ';
if (strcmp(str2,passwd()){
printf(" passwd错误!\ n ");
退出(1);
}
setuid(0);
system("/Sybase/atuo/Sybase _ kill ");
printf(" \ n ");
}

然后编译。

#cc c.c -o kill-spid

2.设置用户对生成的目标文件的“S”权限。

#chmod u+s obj-name


3。将目标文件放在执行用户的任何目录中,例如tmp目录。

4.可执行文件“sybase-kill”应该存储在只允许访问该文件的目录中,并且应该设置其权限。例如,只允许Sybase用户读写。

# mkdir/Sybase/auto
# chmod 700/Sybase/atuo
# chmod g+t/Sybase/atuo
# chown Sybase:Sybase/Sybase/atuo
# CD/Sybase/atuo


5。Sybase-kill文件的内容如下。

Trap '' 1 2 3 9 15 #设置屏蔽信号,以禁止中断。
对于“echo”中的pid,set no count on \ n
select distinct blocked from master..sysprocesses
where blocked > 0 \ NGO " | isql-Uaaa-Paaaaaa-w200-SFEBS | sed " 1,2d " `
do
echo " Kill " $ PID
isql-Usa-w200-Sserv _ name < < EOF
password 123321
Kill $ PID
go
EOF
done
echo "


以上将处理所有被阻塞的进程,无论最终是否由它引起。当然,您也可以找出是谁导致了拥塞,然后处理流程,只需修改其“sybase-kill”文件的内容。]

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 如何设置Sybase的用户权限来处理进程

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情