-bash : / dev / null : 권한이 거부되었습니다


30

Centos 6 시스템에서 새 사용자를 만들려고합니다.

먼저

useradd kevin

그런 다음 해당 사용자로 명령을 실행하려고했습니다.

su - kevin

그러나 다음과 같은 오류 메시지가 나타납니다.

-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
[kevin@gazelle ~]$

그리고 나는 그 사용자만큼 할 수 없습니다.

사용 권한 /dev/null은 다음과 같습니다.

-rwxr-xr-x  1 root root           9 Jul 25 17:07 null

내 Mac과 거의 동일합니다.

crw-rw-rw-   1 root   wheel         3,   2 Jul 25 14:08 null

그건 가능 내가 dev에 감동 것을,하지만 정말 가능성.

루트 사용자로서, 나는 추가하는 시도 kevin받는 root그룹 :

usermod -a -G root kevin

그러나 여전히 /dev/null권한 거부 오류가 발생합니다.

새로운 사용자는 왜 글을 쓸 수 /dev/null없습니까?
새로운 사용자는 어떤 그룹에 속해야합니까?
사용자를 올바르게 가장하지 않습니까?
Linux에서 사용자 / 권한을 설정하는 초보자 안내서가 있습니까?


1
/ dev / null이 9 바이트 길이의 일반 파일로 변경된 것 같습니다. 장치 파일이어야합니다 (파일 유형 / 권한 비트 필드의 시작 부분에 'c'). 이 경우 cat /dev/null, 뭔가 생겼 당신이 최근에 사용?
Mark Plotnick

아 그렇습니다. "* 마스터". 답변으로 추가하고 싶습니까? 표시하겠습니다.
케빈 버크

재부트하면 / dev / null이 다시 만들어 지지만 / dev / null을 파일로 변경 한 결과를 알고 있습니까? 다시 발생하면 고통 스러울 것입니다.
Mark Plotnick

1
내 생각 엔 "git branch"의 출력을 쓰지 않고 / dev / null로 옮겼거나 스크립트가 잘못되었거나
Kevin Burke

답변:


56

누군가 일반 파일을 / dev / null로 옮겼을 것입니다. 재부팅하면 다시 생성되거나

rm -f /dev/null; mknod -m 666 /dev/null c 1 3

@Flow가 주석에 언급 했듯이이 root작업을 수행해야합니다.


12
"누군가"가 "나"를 의미한다면, 예 :)
Kevin Burke

심지어 서버에서 같은 문제가 발생했습니다. 우분투 14.04 LTS. 그러나 권한을 변경하지 않았습니다. 어떤 프로세스가 권한을 변경했는지 추적 할 수있는 가능성이 있습니까?
마니

@Mani Linux는 기본적으로 이러한 작은 변경 사항을 기록하지 않지만 감사 기능을 켜서 지금부터 볼 수 있습니다. 파일에서 리눅스 chmod를 탐지하는 방법
Mark Plotnick

1
이 솔루션은 문제를 해결하지만 문제가 다시 발생합니다. 왜?
Abhishek Soni


13

루트로 문제를 해결해야합니다.

rm /dev/null
mknod /dev/null c 1 3
chmod 666 /dev/null

2
이것은 또한 맥 / BSD에서 작동
연상

3

Mark가 제안한 솔루션은 OpenBSD에서 작동하지 않았습니다. 하나

mknod -m 666 /dev/null -c 2 2

트릭을했다. OpenBSD 5.6에서 이것을 테스트했습니다. 허용 된 답변이 실행되면 / dev / null은 코드 읽기를 차단하고 망칠 것입니다.


OP는 OpenBSD 대신 CentOS를 사용하지 않았습니까?
ott--

3
불행히도, 운영 체제마다 다른 주 / 부 번호를 사용 /dev/null하며 표준은 없습니다. 영업 이익은 CentOS는 6 리눅스를 사용하고있다에 대한 질문 1,3에 대해는 / dev / null로 FreeBSD의에 적어도 2001 년으로 되돌아 가고, 내가 본 0,6, 15,0, 17,0,와 20,0. OpenBSD는을 사용합니다 2,2. OpenBSD에서는 실제로 숫자를 알 필요가 없습니다. 당신은 실행할 수 있습니다 # cd /dev; ./MAKEDEV std.
Mark Plotnick

운영 체제 간에는 주 번호와 부 번호를 이동할 수 없습니다. Linux에서 작동하는 것은 일반적으로 * BSD 또는 Mac OS X (또는 Solaris, AIX, HP-UX 등)에서 작동하지 않으며 그 반대도 마찬가지입니다. mknod매뉴얼을 조사 (운이 좋으면 정보가있는 경우)하거나 커널 헤더를 조사 하여 명령 에서 사용할 올바른 번호를 찾아야합니다 .
Jonathan Leffler

1

이것은 우분투 응용 프로그램의 창에서 나에게 작성된 스크립트를 실행하려고 시도하면서 발생했습니다 /dev/null. /dev및에 대한 권한이 모두 맞습니다 /dev/null.

문제는 스크립트 파일의 Windows 개행 문자였습니다. 달리기 :

dos2unix.exe c:\path\to\script.sh

나를 위해 문제를 해결했습니다.


0

후손을위한 Mac OS X 답변 게시 ...

sudo su \
&& rm -rf /dev/null \
&& mknod /dev/null c 3 2 \
&& chmod 666 /dev/null
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.