대화 형 셸을 사용하는 사용자를 찾기 위해`/ etc / passwd` 파일 구문 분석

키 쇼르 파와 르

/etc/passwd사용자가 대화 형 셸을 실행할 수 있는지 확인하기 위해 파일 을 구문 분석하고 싶습니다 .

/etc/passwd파일의 각 줄에있는 7 번째 필드 는 쉘의 경로를 알려줍니다. 그러나 정의 된 쉘이 상호 작용 적이라고 어떻게 말합니까?

이 파일을 파이썬으로 구문 분석하고 있으며 논리를 구현할 수 있습니다. 대화 형 셸을 식별하는 방법을 찾는 방법을 모르겠습니다.

추신. 파이썬을 사용하여 알아 내고 싶습니다.

Kos

나는 당신이 기본적인 오해를 가지고 있다고 생각합니다. 대화식으로 달릴 수는 없지만 비 대화식으로 달릴 수 있다고 말하는 것은 운전할 수 없지만 라디오를 듣는 데 사용할 수있는 자동차에 대한 이야기와 비슷합니다.

셸의 주요 목적은 대화 형으로 실행하는 것입니다. 비대화 형으로 실행할 수 있다는 사실은 선택 사항이며 그 반대는 아닙니다.

대화식으로 실행할 수 없지만 비 대화식으로 실행할 수있는 쉘의 개념에 더 가까워서 대화식으로 해석 할 수없는 해석 된 언어입니다 (현재 나에게 실제 예제가 나타나지 않지만 가장 일반적인 해석 언어는 모두 대화식 세션을 실행할 수 있습니다 : Perl, Python, PHP, ...)

사용자 가 셸을 통해 로그인 할 수 있는지 여부를 확인 하려면 다음 명령을 사용할 수 있습니다.

shell=$(getent passwd user | cut -d ':' -f 7); [ "$shell" = "/usr/sbin/nologin" -o "$shell" = "/bin/false" ] && printf 'User is not allowed to login\n' || printf '%s\n' "$shell"

(교체 user에서 getent passwd user사용자의 사용자 이름으로 명령)

Python에서는 다음을 수행 할 수 있습니다.

#!/usr/bin/python
user = "user"
with open("/etc/passwd") as file:
    for line in file:
        if line.split(":")[0] == user:
            if line.rstrip("\n").split(":")[6] in ["/usr/sbin/nologin", "/bin/false"]:
                print("User is not allowed to login")
            else:
                print(line.rstrip("\n").split(":")[6])

(교체 user에서 user = "user"사용자의 사용자 이름으로 문)

또는 muru가 제안한대로 pwd모듈을 사용하는 것이 좋습니다 .

#!/usr/bin/python
from pwd import getpwnam

user = "user"
shell = getpwnam(user)[6]
if shell in ["/usr/sbin/nologin", "/bin/false"]:
    print("User is not allowed to login")
else:
    print(shell)

(교체 user에서 user = "user"사용자의 사용자 이름으로 문)

위의 모든 예에서 사용자 /etc/passwd항목 의 일곱 번째 필드 가 둘 중 하나 /usr/sbin/nologin이거나 /usr/bin/false사용자가 로그인 할 수 없다는 메시지가 인쇄되면; 그렇지 않으면 사용자의 로그인 쉘이 인쇄됩니다.

그러나 셸을 통해 로그인 할 수 없다고해서 사용자가 전혀 로그인 할 수 없다는 의미는 아니며 사용자 로그인 을 금지하는 데 사용 /usr/sbin/nologin되거나 다른 가짜 셸이있을 수 있습니다/bin/false . 당신도 그것들을 조심해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

`/ etc / passwd`를 구문 분석하여 루트 사용자를 찾고 사용자가 대화 형 쉘을 실행할 수 있는지 여부

분류에서Dev

`/ etc / passwd`를 구문 분석하여 루트 사용자를 찾고 사용자가 대화 형 쉘을 실행할 수 있는지 여부

분류에서Dev

/ etc / passwd에없는 사용자를 위해 기본 셸을 bash로 설정합니다.

분류에서Dev

/ etc / passwd에없는 사용자를 위해 기본 셸을 bash로 설정합니다.

분류에서Dev

구문 분석을 위해 SQL Server에서 사용하는 기본 문화권

분류에서Dev

etc / passwd 파일에서 모든 중복 사용자 사이에서 사용 된 모든 셸을 찾습니다.

분류에서Dev

txt 형식의 html을 구문 분석하기 위해 python을 사용하는 방법?

분류에서Dev

형식화의 HashMap를 사용하여 문자열을 구문 분석

분류에서Dev

원하는 형식을 얻기 위해 C # 구문 분석 문자열

분류에서Dev

csv-conduit를 사용하여 CSV 파일을 사용자 정의 데이터 유형으로 구문 분석

분류에서Dev

grep을 사용하여 "문자열"을 포함하는 / etc / passwd의 행 분리

분류에서Dev

다른 용도로 특정 데이터 및 형식을 추출하기 위해 데이터 파일을 구문 분석하는 방법은 무엇입니까?

분류에서Dev

/ etc / sudoers vs /etc/sudoers.d/ 사용자에 대해 sudo를 활성화하기위한 파일

분류에서Dev

Actionscript 3-자산을로드하기 위해 XML 파일 구문 분석

분류에서Dev

Spark Scala를 사용하여 데이터를 날짜 형식으로 가져 오기 위해 문자열 열을 구문 분석합니다.

분류에서Dev

C ++ : 정확한 줄을 찾기 위해 파일 구문 분석

분류에서Dev

유닉스 쉘 스크립트 / Python을 사용하여 특정 값을 찾기 위해 json 종류의 파일을 구문 분석

분류에서Dev

날짜를 구문 분석하기 위해 csv 파일 읽기

분류에서Dev

Python을 사용하여 USPTO 대량 XML 파일 구문 분석

분류에서Dev

Jsoup을 사용하여 개별 요소에 대한 텍스트를 얻기 위해 HTML 구문 분석

분류에서Dev

기본값을 사용하여 Scala의 일반 유형 구문 분석

분류에서Dev

DOJO 사용자 정의 대화 상자-템플릿 파일을 구문 분석하지 않습니다.

분류에서Dev

파이썬을 사용하여 regex1과 regex2 사이의 텍스트 문서에서 단락을 찾은 다음 구문 분석하기 위해 정규식 형식을 올바르게 지정하지 못했습니다.

분류에서Dev

boost :: regex를 사용하여 열거 형을 포함하는 * .cpp 파일을 구문 분석합니다.

분류에서Dev

MacOSX 사전 데이터 파일을 구문 분석하기위한 터미널 명령 찾기

분류에서Dev

/ etc / sudoers vs /etc/sudoers.d/ 사용자를 위해 sudo를 활성화하기위한 파일

분류에서Dev

WebFlux를 사용하여 리소스에서 파일을 읽고 구문 분석하는 반응 형 방법?

분류에서Dev

유용한 로그 파일을 만들기 위해 텍스트 파일 구문 분석

분류에서Dev

자바 GSON를 사용에서 JSON 파일을 구문 분석

Related 관련 기사

  1. 1

    `/ etc / passwd`를 구문 분석하여 루트 사용자를 찾고 사용자가 대화 형 쉘을 실행할 수 있는지 여부

  2. 2

    `/ etc / passwd`를 구문 분석하여 루트 사용자를 찾고 사용자가 대화 형 쉘을 실행할 수 있는지 여부

  3. 3

    / etc / passwd에없는 사용자를 위해 기본 셸을 bash로 설정합니다.

  4. 4

    / etc / passwd에없는 사용자를 위해 기본 셸을 bash로 설정합니다.

  5. 5

    구문 분석을 위해 SQL Server에서 사용하는 기본 문화권

  6. 6

    etc / passwd 파일에서 모든 중복 사용자 사이에서 사용 된 모든 셸을 찾습니다.

  7. 7

    txt 형식의 html을 구문 분석하기 위해 python을 사용하는 방법?

  8. 8

    형식화의 HashMap를 사용하여 문자열을 구문 분석

  9. 9

    원하는 형식을 얻기 위해 C # 구문 분석 문자열

  10. 10

    csv-conduit를 사용하여 CSV 파일을 사용자 정의 데이터 유형으로 구문 분석

  11. 11

    grep을 사용하여 "문자열"을 포함하는 / etc / passwd의 행 분리

  12. 12

    다른 용도로 특정 데이터 및 형식을 추출하기 위해 데이터 파일을 구문 분석하는 방법은 무엇입니까?

  13. 13

    / etc / sudoers vs /etc/sudoers.d/ 사용자에 대해 sudo를 활성화하기위한 파일

  14. 14

    Actionscript 3-자산을로드하기 위해 XML 파일 구문 분석

  15. 15

    Spark Scala를 사용하여 데이터를 날짜 형식으로 가져 오기 위해 문자열 열을 구문 분석합니다.

  16. 16

    C ++ : 정확한 줄을 찾기 위해 파일 구문 분석

  17. 17

    유닉스 쉘 스크립트 / Python을 사용하여 특정 값을 찾기 위해 json 종류의 파일을 구문 분석

  18. 18

    날짜를 구문 분석하기 위해 csv 파일 읽기

  19. 19

    Python을 사용하여 USPTO 대량 XML 파일 구문 분석

  20. 20

    Jsoup을 사용하여 개별 요소에 대한 텍스트를 얻기 위해 HTML 구문 분석

  21. 21

    기본값을 사용하여 Scala의 일반 유형 구문 분석

  22. 22

    DOJO 사용자 정의 대화 상자-템플릿 파일을 구문 분석하지 않습니다.

  23. 23

    파이썬을 사용하여 regex1과 regex2 사이의 텍스트 문서에서 단락을 찾은 다음 구문 분석하기 위해 정규식 형식을 올바르게 지정하지 못했습니다.

  24. 24

    boost :: regex를 사용하여 열거 형을 포함하는 * .cpp 파일을 구문 분석합니다.

  25. 25

    MacOSX 사전 데이터 파일을 구문 분석하기위한 터미널 명령 찾기

  26. 26

    / etc / sudoers vs /etc/sudoers.d/ 사용자를 위해 sudo를 활성화하기위한 파일

  27. 27

    WebFlux를 사용하여 리소스에서 파일을 읽고 구문 분석하는 반응 형 방법?

  28. 28

    유용한 로그 파일을 만들기 위해 텍스트 파일 구문 분석

  29. 29

    자바 GSON를 사용에서 JSON 파일을 구문 분석

뜨겁다태그

보관