[英]create user from JAVA application in LINUX OS
我想创建一个新用户,并从我的Java应用程序中提供passwd,该应用程序是使用Linux OS中的JAVA开发的。 也许java调用了shell脚本?
在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();
}
}
添加用户帐户
sudo useradd用户名
用您选择的任何名称替换用户名。
使用以下命令为此新用户创建主目录:
sudo mkdir / home /用户名
现在使用以下命令为此用户分配密码:
sudo passwd用户名
使用以下两个命令授予该用户所有权并访问其主目录:
sudo chown用户名/ home / username
sudo chgrp用户名/ home /用户名
您还可以使用以下命令创建新的用户帐户:
sudo adduser用户名
向用户帐户授予根特权(可选)
如果要授予用户帐户root特权,以便它可以执行“ sudo”命令,请运行以下命令:
sudo adduser用户名sudo
使用Java Process类执行所有命令
进程p = Runtime.getRuntime()。exec(“ ///// command /////”);
添加用户的示例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身份运行:
。/添加用户
输出:
Enter username : manaf
Enter password : HIDDEN
User has been added to system!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.