쉘 스크립트 권한 문제에 대한 PHP 분석

小云云
풀어 주다: 2023-03-20 15:28:02
원래의
1555명이 탐색했습니다.

1. sudo 소개

sudo는 루트가 일반 사용자에게 없는 일부 권한을 할당할 수 있도록 하여 일반 사용자도 루트 사용자와 관련된 권한을 가질 수 있도록 합니다. (예를 들어 sudo는 특정 사용자에게 특정 명령 실행 권한을 할당할 수 있습니다. ).
sudo에 대한 중요한 파일 중 하나는 /etc/sudoers입니다. 어떤 사용자가 어떤 종류의 명령을 실행할 수 있는지는 주로 이 파일에 할당된 사용자만 sudo를 사용할 수 있습니다.

sudo -l 列出该用户能执行的命令  
sudo -u user 以指定用户来执行命令  
sudo -k 清楚入场券上的时间,下次使用sudo还要输入密码  
sudo -b 在后台执行命令
로그인 후 복사
로그인 후 복사

/etc/sudoers 파일을 열려면 터미널에 vim을 입력하세요.
사진에 표시된 곳을 찾으세요:
쉘 스크립트 권한 문제에 대한 PHP 분석

사진의 빨간색 상자에 있는 내용은 나중에 직접 추가한 것입니다. www는 php를 실행하는 사용자입니다. 기본 이름은 환경에 따라 다를 수 있습니다. www에 대한 센토스.

PHP의 동작을 볼 수 있는 사용자는 다음 PHP 웹페이지를 통해 얻을 수 있습니다.

<?php    
    echo shell_exec("id -a");  
?>
로그인 후 복사
로그인 후 복사

그림을 보세요. 각 줄에는 세 개의 ALL이 있습니다. 두 번째 괄호의 ALL은 대상 사용자를 나타내며 마지막 ALL은 사용자를 나타냅니다. 실행할 명령의 이름입니다(이 사용자가 실행할 수 있는 명령을 지정할 수 있습니다).

NOPASSWD는 비밀번호가 필요하지 않음을 의미합니다. (그렇지 않으면 편의상 브라우저를 통해 프로그램에 접속하면 비밀번호를 입력하고 피드백을 기다리는 추가 단계가 발생합니다. 정말 번거롭습니다. 이렇게 하면 많은 수고가 줄어들 것입니다)

Ubuntu라면 , 페도라 등이라면 수정할 필요가 없습니다.

Defaults env_reset(즉, 앞에 있는 # 기호를 제거하세요)을 켜세요. php.ini 구성 파일에 안전 모드가 켜져 있는지 여부

  1. safe_mode =  off 这样就可以了
    로그인 후 복사
    로그인 후 복사

    Linux 스크립트를 실행하려면 PHP에서 몇 개의 함수가 필요합니까? shell_exec(), system() 등 세 가지가 있습니다. 자세한 내용은 다루지 않겠습니다. 여기서는 system() 함수를 사용합니다.

    route.php
  2. <?php   $ip=(string)$_POST["ip"];  
    system("su ./route.sh $ip",$status);  
    if($status == &#39;true&#39;)  
    {  
        echo "设置成功";  
    }  
    else  {  
        echo "设置失败";  
    }  
    ?>
    로그인 후 복사
    로그인 후 복사
이전 설정을 올바르게 설정한 후 실행하면 브라우저에 설정이 성공으로 표시되어 스크립트가 성공적으로 실행되었음을 나타냅니다.


1.php 실행 쉘은 실제로 Apache나 Nginx 사용자에 의해 실행되며, php 자체에서는 사용자를 생성하지 않습니다.

2. Reprinted by

예전에는 ECS에서 매번 루트 사용자로 로그인해서 작업을 했기 때문에 sudo는 기본적으로 사용하지 않았으나 최근 프로젝트에서는 브라우저를 통해 php 웹페이지에 접속해야 하는데, php 웹 페이지는 Linux에서 스크립트를 호출하고 실행합니다. 원래는 이게 굉장히 간단한 일인데, 실제로 실행해 보니 브라우저를 통해 접속할 때마다 스크립트가 실행되지 않고, 터미널에서 명령줄을 통해 php 웹페이지를 실행해도 아무런 문제가 없는 것을 발견했습니다. 많이 다르다고 생각하고 곰곰이 생각해보니 브라우저를 통해 접속하는 것과 단말에서 직접 이니시에이터를 실행하는 것이 다르다는 걸 발견하고, 사용자 권한에 문제가 있지 않을까 해서 온라인으로 확인해 보았는데요. 결과는 sudo였습니다.

1. sudo 소개

sudo는 루트가 일반 사용자에게 없는 일부 권한을 할당할 수 있도록 하여 일반 사용자도 루트 사용자와 관련된 권한을 가질 수 있도록 합니다. (예를 들어 sudo는 특정 사용자에게 특정 명령 실행 권한을 할당할 수 있습니다.) .

sudo에 대한 중요한 파일 중 하나는 /etc/sudoers입니다. 어떤 사용자가 어떤 종류의 명령을 실행할 수 있는지는 주로 이 파일에 할당된 사용자만 sudo를 사용할 수 있습니다.

sudo -l 列出该用户能执行的命令  
sudo -u user 以指定用户来执行命令  
sudo -k 清楚入场券上的时间,下次使用sudo还要输入密码  
sudo -b 在后台执行命令
로그인 후 복사
로그인 후 복사
/etc/sudoers 파일을 열려면 터미널에 vim을 입력하세요.

사진에 표시된 곳을 찾으세요:


사진의 빨간색 상자에 있는 내용은 나중에 직접 추가한 것입니다. www는 php를 실행하는 사용자입니다. 기본 이름은 환경에 따라 다를 수 있습니다. www에 대한 센토스.
쉘 스크립트 권한 문제에 대한 PHP 분석PHP의 동작을 볼 수 있는 사용자는 다음 PHP 웹페이지를 통해 얻을 수 있습니다.

<?php    
    echo shell_exec("id -a");  
?>
로그인 후 복사
로그인 후 복사

그림을 보세요. 각 줄에는 세 개의 ALL이 있습니다. 두 번째 괄호의 ALL은 대상 사용자를 나타내며 마지막 ALL은 사용자를 나타냅니다. 실행할 명령의 이름입니다(이 사용자가 실행할 수 있는 명령을 지정할 수 있습니다).

NOPASSWD는 비밀번호를 입력할 필요가 없다는 의미입니다. (그렇지 않으면 편의상 브라우저를 통해 프로그램에 접속하면 비밀번호를 입력하고 피드백을 기다리는 추가 단계가 발생합니다. 정말 번거롭습니다. 이렇게 하면 많은 수고가 줄어들 것입니다)

우분투라면 , Fedora 등인 경우에는 여전히 필요합니다.

Defaults env_reset을 켜십시오(즉, 앞의 # 기호 제거). php.ini 구성 파일에 안전 모드가 켜져 있는지 여부

safe_mode =  off 这样就可以了
로그인 후 복사
로그인 후 복사

Linux 스크립트를 실행하려면 PHP에서 몇 개의 함수가 필요합니까? shell_exec(), system() 등 세 가지가 있습니다. 자세한 내용은 다루지 않겠습니다. 여기서는 system() 함수를 사용합니다.

route.php
    <?php   $ip=(string)$_POST["ip"];  
    system("su ./route.sh $ip",$status);  
    if($status == &#39;true&#39;)  
    {  
        echo "设置成功";  
    }  
    else  {  
        echo "设置失败";  
    }  
    ?>
    로그인 후 복사
    로그인 후 복사
  1. 이전 설정을 올바르게 설정한 후 실행하면 브라우저에 설정이 성공으로 표시되어 스크립트가 성공적으로 실행되었음을 나타냅니다.

PHP 실행 셸은 실제로 Apache 또는 Nginx 사용자에 의해 실행됩니다. PHP 자체는 사용자를 생성하지 않습니다.


관련 추천:

PHP가 코어 파일을 생성하지 않고 쉘 스크립트 실행 문제를 해결하는 방법

쉘 스크립트에 의한 php7 원클릭 설치 예

쉘 스크립트 명령 예

위 내용은 쉘 스크립트 권한 문제에 대한 PHP 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!