我正在编写一个脚本,该脚本将被调用来更改用户 shell。基本要求是,一旦用户获得身份验证(例如:通过某些 Web 应用程序),将调用脚本来设置默认 shell。他可以从一系列可用的炮弹中进行选择。有几个问题我不知道如何解决。第一个是 - 如何更改 shell? - 我知道,chsh
但运行命令要求用户提供密码,而我不希望这样。一旦用户通过身份验证,我想运行脚本,知道该用户是有效的。我应该使用 root 权限吗?如果是,这对安全有何影响?另外,在实现这样的脚本时我应该考虑哪些安全措施?我从下面的脚本开始,并希望对此进行扩展。评论/答案将不胜感激。
PS:这个问题已经发布了这里,然后意识到这个论坛可能是正确的地方。
1 #!/bin/bash
2
3 #### Constants ########
4 TOSHELL=
5 NUMARGS=$#
6 USER=$(whoami)
7 #### Functions ########
8
9 checkArgument(){
10
11 if [ "$NUMARGS" != "1" ]
12 then
13 return 1
14 else
15 TOSHELL=$1
16 return 0
17 fi
18
19 }
20
21
22 changeShell(){
23
24 `chsh -s $TOSHELL $USER`
25
26 }
27
28 main(){
29
30
31 if checkArgument
32 then
33 changeShell #Also check if changeShell was successful
34 return 0
35 else
36 return 1
37 fi
38
39 }
40 main