[英]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.