Làm cách nào để tạo người dùng không đăng nhập?


134

Tôi muốn tạo một người dùng và một nhóm cả hai được gọi subversiontrên hệ thống RHEL 5. Tôi nhìn vào trang người đàn ông useraddvà tôi đoán lệnh sẽ chỉ là ...

useradd subversion

Tuy nhiên, không chắc chắn làm thế nào để tránh tạo ra một dir nhà. Ngoài ra, tôi không muốn nó là người dùng có thể đăng nhập vào hệ thống.

Mục đích chính là để cung cấp cho chủ sở hữu một kho lưu trữ SVN.


Bạn đã thực sự xem trang man của useradd và không tìm thấy -M (không tạo thư mục HOME)?
inemanja

Câu trả lời:


76

Bạn có thể sử dụng công -Mtắc (đảm bảo đó là vốn) để đảm bảo không có thư mục chính nào được tạo:

useradd -M subversion

sau đó khóa tài khoản để ngăn đăng nhập:

usermod -L subversion

59
Đây không phải là một câu trả lời đặc biệt mạnh mẽ, người dùng được tạo bởi điều này có nghĩa là vẫn có vỏ. Và bạn thậm chí không cảnh báo OP rằng đây là trường hợp. Truy đó sẽ là usermod -s /bin/false subversion, hoặc với --shell /bin/falsetớiuseradd
Lee Hambley

7
@beak tài khoản bị khóa, có vỏ là một điểm cần thiết.
John T

15
@beak thực sự chỉ có người dùng root mới có thể su vào tài khoản bị khóa, nhưng tại sao phải bận tâm nếu người đó đã có quyền truy cập root? Và thiết lập shell không làm được gì nhiều khi người dùng có thể chạy su -s /bin/bash usernamevà bỏ qua điều đó.
John T

11
cảm ơn vì đã dành thời gian để thảo luận, bạn tất nhiên là đúng; nhưng tôi cảm thấy đau đớn khi thấy những người dùng không đăng nhập với trình bao được xác định, nó gây cho tôi sự lười biếng và khiến ai đó không quen với hệ thống, thật tuyệt khi họ không thể vô tình làm điều gì đó ngoài ý muốn; tin tặc là một giống khác nhau, nếu chúng đã có vỏ trên máy, tôi nghĩ rằng về cơ bản trò chơi đã kết thúc
Lee Hambley

11
Những bình luận này bao gồm chính xác những điều tôi hy vọng sẽ học được, cảm ơn @Beaks && John T
Rixius

220

useradd -r subversion

mỗi man useradd:

-r, --system create a system account

Cờ -r sẽ tạo một người dùng hệ thống - một người không có mật khẩu, thư mục nhà và không thể đăng nhập.


1
lệnh này thậm chí sẽ tạo một nhóm cho người dùng được gọi là giống nhau. Vì vậy, người dùng "lật đổ" sẽ nằm trong nhóm "lật đổ". Tuyệt vời khi bạn muốn thực hiện "sudo chown -R subversion: subversion / path / to /
library

49
với -r một mình chúng ta vẫn có thể đăng nhập. chúng ta cần -s / bin / false để vô hiệu hóa trình bao người dùng.
c4il

8
@ c4il Nhưng người duy nhất có thể đăng nhập vào chúng là root, phải không? Ý tôi là, họ không có mật khẩu, vì vậy tôi chỉ mong có thể root để có thể đăng nhập vào chúng.
Camilo Martin

Nhưng dù sao chúng tôi cũng có thể gán mật khẩu cho họ passwd subversion.
Shaya

@rynop Làm cách nào để kiểm tra xem người dùng trên máy của tôi có phải là người dùng hệ thống không? Không có cách nào khác ư? Tôi nghĩ rằng họ không thuộc nhóm sudo'ers cho người mới bắt đầu.
Shaya

22

Một giải pháp khác để tạo người dùng hệ thống, sử dụng adduser :

adduser --system --no-create-home --group yourusername

Bạn có thể xóa --groupnếu bạn không cần nhóm tên người dùng của mình và --no-create-homenếu bạn cần một ngôi nhà cho người dùng này.

Như được đề cập bởi py4on trong các bình luận, trên một số hệ thống, người ta có thể cần phải sử dụng --disabled-logintùy chọn này để, vô hiệu hóa, đăng nhập cho người dùng này. Dường như đó là hành vi mặc định trong Debian.

Coi chừng ID số của người dùng sẽ thuộc tài khoản hệ thống. Bạn có thể sửa uid bằng cách sử dụng --uidtùy chọn.

Cuối cùng, lưu ý rằng trên một số hệ thống (ví dụ Fedora) adduserlà một liên kết tượng trưng useradd, trong trường hợp này, câu trả lời này không hợp lệ.


3
Để giải quyết "Tôi không muốn nó là người dùng có thể đăng nhập", hãy thêm cờ --disabled-login(trước yourusername)
toxefa

@ py4on: Mặc dù tùy chọn này được ghi lại trong trang, nhưng ít nhất nó có vẻ là mặc định trong Debian.
Skippy le Grand Gourou

15

Câu trả lời rõ ràng nhất cho câu hỏi ban đầu là chạy lệnh:

adduser subversion --shell=/bin/false

Và nếu bạn không muốn thư mục chính:

adduser subversion --shell=/bin/false --no-create-home

hoặc, nếu bạn muốn một người dùng hệ thống bị khóa nhiều hơn (Thông thường, điều này sẽ không tạo thư mục chính - nó đã được báo cáo rằng nó sẽ vẫn tạo một thư mục chính trong linux mint theo bình luận bên dưới)

adduser subversion --system --group

Tất cả các lệnh này sẽ tạo một nhóm có cùng tên với người dùng


Trên Mint, lệnh cuối cùng chắc chắn tạo ra một thư mục nhà:Creating home directory '/home/nodejs' ...
jcollum

11

Hình thức an toàn nhất để làm điều này là sử dụng addusernhư vậy:

$ adduser -r -s /bin/nologin subversion

LƯU Ý: Đảm bảo bao gồm -s /sbin/nologinđể vô hiệu hóa bất kỳ vỏ đăng nhập nào được cung cấp cho tài khoản.

Xác nhận thiết lập

$ grep subversion /etc/passwd /etc/shadow
/etc/passwd:subversion:x:496:496::/home/subversion:/bin/nologin
/etc/shadow:subversion:!!:17232::::::

Tuy nhiên không có thư mục:

$ ll /home | grep subversion
$

Xác nhận rằng tài khoản có thể sử dụng được:

$ sudo -u subversion whoami
subversion

$ sudo -u subversion date
Tue Mar  7 08:58:57 EST 2017

Gỡ bỏ

Nếu bạn cần xóa tài khoản này:

$ userdel subversion -r
userdel: subversion mail spool (/var/spool/mail/subversion) not found
userdel: subversion home directory (/home/subversion) not found
$

Và xác nhận:

$ grep rtim-hc-user /etc/passwd /etc/shadow
$

1
người dùng không nhận ra tùy chọn -r. Tôi nghĩ bạn có nghĩa là người dùng.
felwithe

@felwithe không, mỗi câu trả lời tôi viết lên tôi luôn kiểm tra trước khi đăng. Tôi đã kiểm tra và công tắc đó hiển thị trên hệ thống CentOS 6.x.
slm

Đây là một pastebin của kết quả . Tôi đang dùng Ubuntu 16 LTS. Tôi không biết phiên bản adduser nào được cài đặt nhưng tôi không bao giờ tưởng tượng nó sẽ thay đổi nhiều theo thời gian hoặc hệ thống thành hệ thống. Sau đó, tôi đã thử nó với một cờ - hệ thống thay vào đó, nó đã tạo ra một homedir cho người dùng (tôi không muốn một cái). Cuối cùng tôi chỉ làm điều đó với useradd thay vì adduser và nó hoạt động như kế hoạch. Vì vậy, tôi chỉ cho rằng bạn đã nhầm nó là người nghiện khi được cho là người dùng.
felwithe

@felwithe yeah Tôi không nghi ngờ gì về bạn, chỉ cho bạn biết rằng tôi đã thử nó 8-). Tôi là một mod trên trang web Unix và Linux và các cmd này nổi tiếng là các bản phát hành b / w khác nhau. OP đề cập đến RHEL trong câu hỏi do đó tại sao tôi trả lời như vậy, nhưng họ không gắn thẻ nó là mũ đỏ cụ thể, đó là một phần của sự nhầm lẫn trong IMO Q & A này.
slm

1

Trên máy CentOS 7

  • nếu người dùng không tồn tại:
    useradd testuser --shell=/sbin/nologin

  • nếu bạn muốn sửa đổi người dùng hiện có:
    usermod testuser --shell=/sbin/nologin


0

Bắt đầu bằng cách tạo mật khẩu được mã hóa cho người dùng với độ dài tối đa 8 ký tự bằng cách thực hiện:

openssl passwd -crypt new_password_less_than_eight_chars_long

Sau đó, bạn làm:

useradd -m -g groupname -G otherGroupsSeperatedByComma -p encryptedPassword username

0

Trong Debian, bạn có thể tạo người dùng hệ thống (không có thư mục chính) và shell đăng nhập:

useradd --system --shell=/usr/sbin/nologin <username>

Nếu nologinchương trình của bạn là trong /sbin/nologin, xin vui lòng thay đổi cho phù hợp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.