Tôi có thể sắp xếp các tập tin / etc / group và / etc / passwd không?


33

My /etc/groupđã phát triển bằng cách thêm người dùng mới cũng như cài đặt các chương trình đã thêm người dùng và / hoặc nhóm của riêng họ. Điều này cũng đúng với /etc/passwd. Chỉnh sửa bây giờ đã trở nên một chút rườm rà do thiếu cấu trúc.

Tôi có thể sắp xếp các tệp này (ví dụ: id số hoặc bảng chữ cái theo tên) mà không ảnh hưởng tiêu cực đến hệ thống và / hoặc trình quản lý gói không?

Tôi đoán điều đó không quan trọng nhưng chỉ để chắc chắn rằng tôi muốn có ý kiến ​​thứ 2. Có lẽ rootcần phải là dòng đầu tiên hoặc trong dòng 1k đầu tiên hoặc một cái gì đó?

Cũng vậy /etc/*shadow.


7
"Chỉnh sửa bây giờ đã trở nên hơi cồng kềnh do thiếu cấu trúc" Tại sao bạn chỉnh sửa các tệp đó bằng tay?
Kevin

Làm thế nào để sắp xếp các tập tin giúp chỉnh sửa? Có phải vì bạn muốn nhóm các tài khoản liên quan lại với nhau và sau đó thực hiện các thay đổi tương tự trong một phạm vi hàng? Nhưng tài khoản liên quan sẽ liền kề nếu bạn sắp xếp theo uid hoặc tên?
Barmar

@Barmar Nó đã giúp chủ yếu vì tài khoản người dùng được nhóm theo phạm vi và tách biệt với tài khoản hệ thống (khi sắp xếp theo UID). Do đó, dễ dàng hơn, ví dụ như phát hiện đúng dòng để kiểm tra hoặc thay đổi khi chỉnh sửa vi.
Ned64

Câu trả lời:


50

Bạn nên làm điều này : trên thực tế, theo bài viết và đọc tài liệu, bạn có thể sắp xếp /etc/passwd/etc/grouptheo UID / GID với pwck -sgrpck -s, tương ứng.


3
@Menasheh Màu sắc của trang web này không làm cho chúng nổi bật như trên các trang web khác, nhưng "OK làm điều này" trong câu trả lời này là một siêu liên kết.
hvd

2
OK, tốt thôi, nhưng ... Nói chung, có những lý do hợp lệ để chỉnh sửa thủ công / etc / passwd và các tệp tương tự không? Không phải nó được coi là tốt hơn để truy cập chúng thông qua các công cụ được thiết kế để tạo và sửa đổi chúng sao?
mickeyf_supports_Monica

@mickeyf Tôi đã thấy mọi người chỉnh sửa thủ công /etc/passwdkhi họ thực hiện thay đổi hàng loạt, như thay đổi trường GECOS cho tất cả người dùng do di chuyển / tái cấu trúc (phòng toàn cầu hoặc thay đổi số điện thoại, v.v.) Không còn phổ biến nữa, nhưng có cụ thể lý do mà tăng lên theo thời gian.
ErikF

44

Mặc dù ErikF đúng rằng điều này thường sẽ ổn, nhưng tôi muốn chỉ ra một vấn đề tiềm năng:

Bạn được phép ánh xạ tên người dùng khác nhau vào cùng một UID. Nếu bạn sử dụng điều này, các công cụ ánh xạ UID trở lại tên người dùng thường sẽ chọn tên người dùng đầu tiên họ tìm thấy cho UID đó /etc/passwd. Sắp xếp có thể khiến một tên người dùng khác xuất hiện đầu tiên. Đối với mục đích hiển thị (ví dụ: ls -lđầu ra), tên người dùng sẽ hoạt động, nhưng có thể bạn đã cấu hình một số chương trình để chấp nhận yêu cầu từ tên người dùng A, nơi nó sẽ từ chối các yêu cầu đó nếu thấy chúng đến từ tên người dùng B, ngay cả khi A và B là cùng một người dùng.


Cảm ơn, tôi biết bạn có thể, đã từng có một người dùng có tcsh và uid 0 trong Solaris vài thập kỷ trước. Tuy nhiên, một hệ thống Linux sẽ không tự tạo ra tình huống này - bạn sẽ cần phải tự tạo một người dùng như vậy để có vấn đề với tình huống đó.
Ned64

2

Có root ở dòng đầu tiên là một "tiêu chuẩn" thực tế từ lâu và rất thuận tiện nếu bạn phải sửa vỏ hoặc xóa mật khẩu, khi xử lý các sự cố hoặc khôi phục hệ thống.

Tương tự như vậy, tôi thích có người dùng daemon / utils ở giữa và người dùng chuẩn ở cuối cả hai passwdshadow.

hvd Câu trả lời cũng rất tốt về việc làm phiền đơn đặt hàng của người dùng, đặc biệt là trong các hệ thống có nhiều người dùng được bảo trì bằng tay.

Ví dụ, nếu bạn quản lý để sắp xếp các tệp, chỉ dành cho người dùng chuẩn, sẽ hợp lý hơn thay đổi thứ tự của tất cả người dùng, imo.


1
Nếu bạn sắp xếp số lượng theo UID, bạn sẽ nhận được thứ tự ưu tiên. Root luôn luôn 0và các trình tiện ích thông thường có UID dưới 100.
Barmar

@Barmar Nếu sắp xếp theo UID chứ không phải theo tên, thực sự, cảm ơn vì đã nhớ.
Rui F Ribeiro

0

Dưới đây là một chút mã bash có phần lông để sắp xếp tương tự các tệp bóng / gshadow một cách an toàn (sử dụng vipw -s/ vigr -s) và tại chỗ từ dòng lệnh:

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/passwd\" -c \"wq! \" >/dev/null 2>&1" vipw -s

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/group\" -c \"wq! \" >/dev/null 2>&1" vigr -s

CHÚ THÍCH:

  1. vi -cchuyển lệnh cho trình soạn thảo vim được gán làm trình soạn thảo cho vipw/ vigrbởi EDITORbiến
  2. Mã awk sắp xếp shadowtheo passwd(và gshadowbởi group)
  3. Dấu gạch chéo ngược chỉ là nhiều mức thoát cần thiết tương ứng với các mức báo giá.
  4. Lệnh thứ hai (-c \ "wq! \") Buộc ghi và đóng tệp đã sắp xếp. Lực là cần thiết vì bóng / gshadow thường là chế độ 000 (tức là không thể chấp nhận được). Lưu ý khoảng trắng giữa '!' và '\' là cần thiết để ngăn việc giải thích bằng shell là '! \' tham chiếu đến một sự kiện bash.
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.