출처 : www.phpschool.com 에 Tip & Tech 에 있는 글을 참조했습니다.
linux 에서
계정을 추가하는 명령어는 useradd
계정을 삭제하는 명령어는 userdel
입니다. 그러나 위에 있는 명령어들은 모두 root 권한의 사용자가 실행을 할수
있지요.
그러나 apache는 일반적으로 nobody의 권한을 가지고 있습니다.
그래서 useradd,userdel,rm 을 원하는 디렉토리에 모아 놓습니다.
[root@linux program]# ls -al
total 116
drwxrwxrwx 2 smson smson 1024 Feb 6 11:15 ./
drwxr-xr-x 12 smson smson 2048 Feb 6 10:42 ../
-rwsr-sr-x 1 root root 20140 Feb 6 10:42 rm*
-rwsr-sr-x 1 root root 55016 Feb 6 11:15 useradd*
-rwsr-sr-x 1 root root 36500 Feb 6 10:42 userdel*
위를 자세히 보시면 이상한것을 볼수 있을것 같군요.
권한입니다.
% chmod 755 *
% chmod a+s *
이와 같이 해 주시면 될것 같군요.
chmod a+s 는 해당 프로그램을 실행시 권한을 해당 프로그램 주인의 권한으로 실행하라는
명령어입니다.
이와 같이 작성한후에
<?
/*
인수에다 $userid와 $cryptpwd 를 입력 php함수중에 crypt(); 함수가 있죠?
그걸 사용한다음 인수로 넘기면 됩니다.
*/
function adduser($userid,$cryptpwd)
{
global $P_DIR;
global $H_DIR;
$cmd=sprintf("%s/useradd %s -d %s/%s -p %s 2>&1",$P_DIR,$userid,$H_DIR,$userid,$cryptpwd);
echo "$cmd<br>";
exec($cmd,$arr,$returnvar);
echo "returnvar > $returnvar<br>";
echo "arr > $arr[0]<br>";
if($returnvar==9) return 0;
else return 1;
}
function deluser($userid)
{
global $P_DIR;
global $H_DIR;
$cmd=sprintf("%s/userdel %s 2>&1",$H_DIR,trim($userid));
exec($cmd,$arr,$returnvar);
/*
12번 삭제에러
6번 없는 유저
8번 로그인중입니다.
*/
switch($returnvar) {
case 8:
$return=0; break;
case 12:
$return=0; break;
case 6:
$return=0; break;
default:
$cmd1=sprintf("%s/rm -r %s 2>&1",$P_IDR,$H_DIR.trim($userid));
exec($cmd1,$arr1,$returnvar1);
$return=1;
break;
}
return $return;
}
$P_DIR = "/home/smson/program";
$H_DIR = "/home";
// test2 등록
adduser("test2",crypt("smson"));
?>
PHP 프로그램을 작성합니다.
그렇게 어렵지는 않지요.
exec는 외부 프로그램을 실행시키는 명령어입니다.
php
bibaram2007.11.23 · 4분 읽기 · 조회 5,164
PHP 로 linux 계정 추가하기
bibaram2007.11.23 · 4분 읽기 · 조회 5,164이어서 읽기
html↗
favicon.ico Status 404 해결방법
favicon.ico 파일이 있어서 경로를 직접 설정해주는 게 최선이지만favicon.ico가 없다면 아래와 같이 넣어준다. <html> <head> <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> </head…
2020.09.25·1분 읽기
php↗
Codeigniter api에서 어떤 곳에서 보낸 json
$aData = var_export(file_get_contents('php://input'),TRUE); $aArr = json_decode(str_replace("'", "", $aData), true); 버전에 따라 다를 수도 있음 $this->input->raw_input_stream 이렇게 해보면 됨
2020.09.11·1분 읽기
server↗
apache 이미지 로그 안쌓이게 하기
웹서버를 운영하다 보면 Apache log 가 엄청나게 많이 쌓인다. logrotate 가 실행되고 있다면 어느 정도 로그가 정리가 되겠지만 아니라면 로그가 쌓여서 서버가 엄청 느려지거나 서버가 다운될 수도 있다. ErrorLo…
2020.02.17·2분 읽기
댓글 0
아직 댓글이 없습니다.