我想创建新用户并从我的java应用程序中提供passwd,这是在Linux OS中使用JAVA开发的。 也许java调用shell脚本?
答案 0 :(得分:4)
在linux中创建用户的Java代码
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder("sudo useradd username",
"sudo mkdir /home/username", "sudo passwd username",
"sudo chown username /home/username",
"sudo chgrp username /home/username",
"sudo adduser username", "sudo adduser username sudo");
pb.redirectErrorStream();
Process process = pb.start();
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(
inputStream));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
process.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
}
答案 1 :(得分:1)
添加用户帐户
sudo useradd username
将用户名替换为您选择的任何名称。
使用以下命令为此新用户创建主目录:
sudo mkdir / home / username
使用此命令为此用户分配现在的密码:
sudo passwd username
使用以下两个命令授予此用户所有权并访问其主目录:
sudo chown username / home / username
sudo chgrp username / home / username
您还可以使用以下命令创建新的用户帐户:
sudo adduser username
将root权限授予用户帐户(可选)
如果您想为用户帐户授予root权限,以便它可以执行" sudo"命令,运行此命令:
sudo adduser username sudo
使用java Process class
执行所有命令进程p = Runtime.getRuntime()。exec(" ////命令////");
答案 2 :(得分:0)
用于添加用户的示例shell脚本 基于以上讨论,这里是一个示例shell脚本
#!/bin/bash
# Script to add a user to Linux system
if [ $(id -u) -eq 0 ]; then
read -p "Enter username : " username
read -s -p "Enter password : " password
egrep "^$username" /etc/passwd >/dev/null
if [ $? -eq 0 ]; then
echo "$username exists!"
exit 1
else
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
useradd -m -p $pass $username
[ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
fi
else
echo "Only root may add a user to the system"
exit 2
fi
关闭并保存脚本: $ ./adduser.sh
只有root可以将用户添加到系统
以root身份运行:
./ adduser的
输出:
Enter username : manaf
Enter password : HIDDEN
User has been added to system!