我已经制作了一个使用apache2将用户添加到系统的perl程序。当我作为root运行但它在html的寄存器中使用它时它工作,因此该程序由该用户运行(我认为)并且它不起作用。 /var/log/apache2/error.log中的错误是:<ng-container [formGroup]="form">
<mat-checkbox *ngFor="let controlName of controlNames" [formControlName]="controlName">{{controlName}}</mat-checkbox>
</ng-container>
该行是以下
"AH1215: can't open_a /etc/passwd Permission denied at /usr/lib/cgi-bin/registro.cgi line 60"
一个解决方案必须是使用chmod + s向registro.cgi提供权限+ s,但不允许使用这种方式。
答案 0 :(得分:1)
您的问题的前提表明缺乏对系统安全性的适当关注,但如果确实希望将这种特权提供给Web应用程序,那么合理的方法就是单独{ {1}}以提升权限运行的程序,用于执行少数根级操作。
这些setuid
程序的功能有限,您可以进行额外的输入验证和验证,以确保它们不会被劫持做坏事。然后,Web脚本可以根据需要调用此setuid
程序。
我想强调一下我允许CGI脚本操纵setuid
的警告。对于Web应用程序来说,这是非常可疑的行为,在进行设计之前,您应该仔细考虑。