Làm thế nào để bạn tạo một người dùng không có mật khẩu?


22

Trong os X, có thể có người dùng không có mật khẩu. Nếu bạn kiểm tra chúng với dsclmật khẩu của họ hiển thị như *. Điều này được sử dụng cho người dùng hệ thống như người dùng cho cơ sở dữ liệu như mysql, pgsqlv.v ... Điều tuyệt vời ở đây là những người dùng này không hiển thị ở màn hình đăng nhập và bạn không thể đăng nhập như họ mà không có, sudov.v.

Sau khi xóa một người dùng như vậy đang thử một số thứ tôi muốn tạo lại nó, nhưng không thể. Tôi có thể quản lý để có được một người dùng có mật khẩu trống và tôi có thể đặt mật khẩu *. Nhưng không có hiệu ứng nào giống như trên, vì người dùng xuất hiện trên màn hình đăng nhập của tôi.

Làm thế nào để bạn tạo ra một người dùng như vậy?


Trên Linux, bạn chuyển cờ --disables-password cho adduser. Có lẽ OS X có một cái gì đó tương tự trong tiết mục dòng lệnh của nó?
BR

Ý bạn là; Người dùng có thể đăng nhập mà không cần mật khẩu hoặc không thể đăng nhập vì không có mật khẩu nào được đặt?
Chris Huang-Leaver

1
Tôi nhận thấy rằng bạn đã không chấp nhận câu trả lời ... một yêu cầu để đứng ngoài danh sách xdm khác nhau là có lượng người dùng thấp đáng kể. trên nhiều hệ thống useraddbắt đầu thêm id ở mức 1000 và trình quản lý đăng nhập sẽ không hiển thị id người dùng bên dưới, nhưng mọi thứ ở trên. Vì vậy, mặc dù nó không phải là một câu trả lời cho câu hỏi này, nó có thể là giải pháp cho vấn đề. xin lưu ý rằng 1000 là tùy ý và có thể thấp hơn hoặc cao hơn trên bản phân phối của bạn. Để khắc phục, chỉ cần sửa đổi mục nhập của người dùng /etc/passwdđể có uid thấp hơn. Bây giờ cho tôi đi hỏi câu hỏi tương tự.
xenoterracide

@xenoterracide: Khi tôi tạo lại người dùng, tôi đã cung cấp cho nó ID cũ, đó là người dùng pssql tôi đã xóa có id cao hơn một mys mys, vì vậy tôi chắc chắn rằng nó không có bất kỳ tác động nào trong trường hợp này , nhưng cảm ơn cho dù sao thông tin.
googletorp

Câu trả lời:


6

Bạn có thể chạy passwd --delete <username>sau khi tạo người dùng với adduser. Sau này, bạn sẽ có thể đăng nhập mà không cần nhập mật khẩu.


4
Tôi nghĩ đó là điều hoàn toàn trái ngược với những gì đang được yêu cầu ở đây.
Shadur

Lúc đầu, tôi nghĩ đây là câu trả lời đúng (hoặc tốt nhất), cho đến khi tôi đọc lại câu hỏi của OP, trong đó đề cập đến "người dùng hệ thống" và không hiển thị trên "màn hình đăng nhập". Phương pháp này sẽ hiển thị trên màn hình đăng nhập và bạn có thể 'sudo' bằng phương pháp này.
HidekiAI

3

Một người dùng trong / etc / passwd với thư mục chính của / dev / null và shell của / sbin / nologin, có thể được sử dụng cho các lệnh sudo ing, nhưng thực tế không thể đăng nhập vào;

từ / etc / passwd của tôi

tcpdump:x:104:441:added by portage for tcpdump:/dev/null:/sbin/nologin

Tôi nhớ một nửa điều này sẽ làm cho nó biến mất khỏi màn hình đăng nhập XDM, nhưng tôi không sử dụng XDM nữa, vì vậy đó là một phỏng đoán :-)


Đây là câu trả lời đúng vì OP đã yêu cầu tài khoản mà bạn không thể 'sudo' hoặc hiển thị trên "màn hình đăng nhập", bằng cách đặt thành '/ sbin / nologin' cho shell. Một điều cần lưu ý là vì OP đã yêu cầu "người dùng hệ thống", cũng nên đề cập rằng 'useradd --system' nên được sử dụng để tạo UID với số lượng thấp (như portage / ebuild)
HidekiAI

3

Bạn có thể sử dụng usermod, nó sẽ vô hiệu hóa mật khẩu bằng cách sử dụng !chứ không phải là *.

usermod -L <username>

Từ trang người đàn ông trên usermod:

-L, --lock Lock a user's password. This puts a '!' in front of the encrypted password, effectively disabling the password.

2

Sử dụng dsclsẽ cho

dscl . -passwd /Users/myuser ""

Điều này, không giống như hầu hết các câu trả lời ở trên ... thực sự hiệu quả với tôi.
GroovyCakes

1

Tôi không thể chắc chắn về OSX, nhưng trên FreeBSD bạn có thể sử dụng:

pw add user mymuser -g mygroup -s /nonexistent -h -

giá trị -được chuyển cho -htùy chọn yêu pwcầu đặt trường mật khẩu trong master.passwd thành *, do đó tạo tài khoản không đăng nhập. Việc đặt shell không thực sự cần thiết, nhưng tránh kiểm tra shell từ /etc/pw.conf.


1

Để trống trường mật khẩu cho người dùng trong passwdtệp sẽ hoạt động.



-1

Trên Linux tôi sử dụng:

sudo useradd -r -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

Thay thế tiếp theo phải là nhiều nền tảng chéo hơn (nếu -rtùy chọn không có sẵn):

sudo useradd -K UID_MIN=100 -K UID_MAX=499 -K GID_MIN=100 -K GID_MAX=499 -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

Đây:

  • mật khẩu trong / etc / bóng sẽ được xử lý *. Không có -p \*nó sẽ là!

  • shell sẽ là /sbin/nologin(Bạn cũng có thể sử dụng /bin/false, nhưng tôi nghĩ /bincó thể được gắn quá muộn trên một số hệ thống). Vì vậy, người dùng không thể đăng nhập

  • -d đặt homedir của người dùng

LƯU Ý QUAN TRỌNG

Ở đây -rtạo ra một người dùng hệ thống:

Cờ này được sử dụng để tạo một tài khoản hệ thống. Đó là, một người dùng có UIDgiá trị thấp hơn giá trị UID_MINđược xác định trong /etc/login.defs và mật khẩu không hết hạn. Lưu ý rằng useradd sẽ không tạo thư mục chính cho người dùng như vậy, bất kể cài đặt mặc định trong /etc/login.defs . Bạn phải chỉ định -mtùy chọn nếu bạn muốn tạo một thư mục chính cho tài khoản hệ thống. Đây là một tùy chọn được thêm bởi Red Hat .

Tùy chọn -rcó thể không có mặt trên hệ thống của bạn. Vì vậy, để tạo một người dùng hệ thống, không được hiển thị trên màn hình đăng nhập của bạn, tôi nghĩ, bạn có thể sử dụng -Ktùy chọn. Một cái gì đó như : -K UID_MIN=100 -K UID_MAX=499. Bạn có thể thử tùy chọn như:

-K UID_MAX=$(cat /etc/login.defs | grep ^UID_MIN | awk '{print $2}')

để tự động xác định bạn UID_MAX, nhưng tôi đã không được thử nghiệm trên OS X. Bạn sẽ cần sử dụng SYS_UID_MAXcho UID_MINnếu nó không chú thích trong /etc/login.defs

Điều tương tự là cho GID_MAXGID_MINcho id nhóm hệ thống. (Xem GID_MINvà nếu không ghi chú SYS_GID_MAXtrong /etc/login.defs để sử dụng như GID_MAX)

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.