
Có nhiều thứ đối với tài khoản người dùng hơn là tên người dùng. Tìm hiểu cách đặt và thay đổi tất cả siêu dữ liệu được liên kết với tài khoản người dùng Linux từ dòng lệnh.
Những gì trong một cái tên?
Nếu bạn sử dụng máy tính giống Linux hoặc Unix, bạn sẽ có một tài khoản người dùng. Tên được đặt cho tài khoản là tên tài khoản người dùng của bạn. Đây là tên bạn sử dụng để đăng nhập. Nó cũng (theo mặc định) là tên của nhóm đăng nhập của bạn và tên của thư mục chính của bạn. Tất cả chúng đều sử dụng cùng một mã định danh.
Có một tập hợp thông tin khác có thể được lưu trữ cho mỗi tài khoản người dùng. Ví dụ, dữ liệu trong thế giới thực như tên đầy đủ của người đó, số văn phòng và số điện thoại cơ quan của họ có thể được xác định và đính kèm. Thật vậy, các đoạn thông tin hoàn toàn tùy ý có thể được gắn thẻ vào tài khoản người dùng.
Về mặt thực tế, điều này sẽ hữu ích hơn cho các quản trị viên hệ thống đang chăm sóc các máy tính có nhiều tài khoản người dùng được cấu hình trên chúng. Nhưng ngay cả đối với máy tính Linux một người dùng, luôn thú vị khi biết những gì đang diễn ra bên dưới lớp vỏ bọc.
Trường GECOS
Có một thời, những người tiên phong của Unix không có máy in của riêng họ. Họ phải chuyển các lệnh in của mình sang một máy tính lớn General Electric đang chạy Hệ điều hành toàn diện General Electric (GECOS). Để đạt được điều đó, người dùng trên hệ thống Unix cần lưu trữ và sử dụng thông tin đăng nhập của tài khoản trên hệ thống GECOS.
Trường GECOS được tạo để lưu trữ các thông tin xác thực đó. Yêu cầu rất thích hợp đó đã đi vào lịch sử từ lâu và trường GECOS đã được tái sử dụng để lưu trữ dữ liệu khác liên quan đến chủ sở hữu tài khoản người dùng. Nó có thể có một công việc mới, nhưng nó vẫn giữ tên cũ. Nó vẫn được gọi là trường GECOS.
Trường được lưu trữ trong /etc/passwd
tệp, cùng với thông tin khác về tài khoản người dùng:
- Tên người dùng tài khoản.
- ID người dùng.
- ID nhóm.
- Đường dẫn đến thư mục chính cho tài khoản người dùng.
- Trình bao được khởi động khi người dùng đăng nhập.
Đây là nơi lệnh ngón tay và lệnh ngón út lấy thông tin mà chúng hiển thị.
LIÊN QUAN: Cách sử dụng lệnh ngón tay trên Linux
Lệnh chfn
Các chfn
(thay đổi thông tin ngón tay) cho phép bạn thiết lập và thay đổi thông tin được lưu trữ trong trường GECOS. Thông tin được lưu trữ dưới dạng danh sách được phân tách bằng dấu phẩy trong trường.
Các chfn
lệnh đã có mặt trên Ubuntu 18.04.1 và Manjaro 18.1.0. Nó phải được cài đặt trên Fedora 31. Sử dụng lệnh này để cài đặt nó:
sudo dnf install util-linux-user
Hãy xem những gì finger
có thể tìm hiểu về chủ sở hữu của tài khoản người dùng “dave”. Để có được thông tin tối đa, chúng tôi sẽ sử dụng -l
(định dạng dài) tùy chọn:
finger dave -l
Đây là những gì nó có thể tìm thấy:
Nó truy xuất tên người dùng tài khoản, thư mục chính và trình bao mặc định. Tất cả những thứ này đều liên quan đến người dùng tài khoản. Họ không đề cập đến người thực sử dụng tài khoản đó. Chúng ta có thể sử dụng chfn
lệnh để lưu trữ thông tin về người thực tế.
chfn dave
Sử dụng chfn
bằng cách này bắt đầu một quá trình tương tác ngắn. Bạn được nhắc nhập giá trị dữ liệu cho mỗi phần thông tin mà trường GECOS có thể giữ. Giá trị hiện tại cho mỗi giá trị dữ liệu được hiển thị trong dấu ngoặc []. Nếu bạn muốn giữ dữ liệu hiện tại, bạn có thể nhấn phím “Enter” và giá trị trong dấu ngoặc sẽ được giữ lại.
Thông tin chúng tôi đã nhập là:
- Số phòng: 512
- Điện thoại cơ quan: 555-4567
- Điện thoại nhà: 555-5432
Hãy kiểm tra điều đó finger
chọn thông tin mới đó:
finger dave -l
Có, nó có. Nhưng bạn có thể nhận thấy rằng nó không nhắc thay đổi tên đầy đủ. Nó sẽ chỉ làm điều đó nếu bạn sử dụng sudo
. Nhưng chúng ta không cần phải xem xét toàn bộ chfn
một lần nữa, chỉ vì chúng tôi quên sử dụng sudo
. Chúng tôi có thể thay đổi bất kỳ giá trị dữ liệu nào một cách riêng lẻ.
Thay đổi các giá trị dữ liệu riêng lẻ
Chúng tôi có thể đặt tên đầy đủ cho chủ sở hữu tài khoản người dùng bằng cách sử dụng -f
(tên đầy đủ), cùng với sudo
.
sudo chfn -f "Dave McKay" dave
Và nếu chúng ta kiểm tra lại một lần nữa với finger
:
Chúng ta có thể thấy rằng tên đầy đủ đã được thêm vào.
Có các tùy chọn khác để thay đổi số phòng, số điện thoại nhà riêng và số điện thoại cơ quan. Để thay đổi số phòng (văn phòng), hãy sử dụng -r
(số phòng) tùy chọn:
sudo chfn -r 633 dave
Lưu ý rằng trên một số bản phân phối, bạn có thể sử dụng -o
(số phòng văn phòng) thay vì tùy chọn -r
Lựa chọn. Thông tin thêm về điều này trong thời gian ngắn. Hiện tại, để xem các tùy chọn cho phiên bản của bạn chfn
, sử dụng:
man chfn
Để thay đổi số điện thoại văn phòng, hãy sử dụng -w
(điện thoại cơ quan) tùy chọn:
sudo chfn -w 555-1122 dave
Và cuối cùng, để thay đổi số điện thoại gia đình, hãy sử dụng -h
(số điện thoại nhà riêng) tùy chọn:
sudo chfn -h 555-6576 dave
Hãy sử dụng finger
một lần nữa để xem liệu tất cả những thay đổi đó đã được chấp nhận chưa:
finger dave -l
Sự thành công. Tất cả các lệnh đó đã hoạt động và các giá trị dữ liệu đã được cập nhật.
Sử dụng chfn trên các tài khoản người dùng khác
Quá nhiều cho việc thay đổi thông tin của chính chúng ta, còn việc thay đổi thông tin GECOS cho người dùng khác thì sao? Điều đó thật dễ dàng. Bạn phải dùng sudo
khi bạn làm, nhưng đó là sự khác biệt duy nhất. Hãy kiểm tra dữ liệu nào được đặt cho tài khoản người dùng mary:
finger mary -l
Thông tin mặc định thông thường được đặt cho tài khoản người dùng này. Hãy thêm vào thông tin:
sudo chfn mary
Chúng tôi sẽ chạy qua cùng một phiên như chúng tôi đã làm trước đây, được nhắc nhập giá trị dữ liệu cho mỗi phần thông tin có thể được lưu trữ. Và bởi vì chúng tôi đã sử dụng sudo
, chúng tôi được yêu cầu cung cấp giá trị dữ liệu tên đầy đủ.
Chờ một chút, mục cuối cùng, được gọi là “Khác?”
nó không được hỗ trợ bởi tất cả các phiên bản của chfn
và bạn chỉ nhìn thấy nó nếu bạn sử dụng sudo
, đó là lý do tại sao chúng tôi không thấy nó sớm hơn khi chúng tôi (cố tình) không sử dụng sudo
với:
chfn dave
Giá trị dữ liệu “Khác” có thể chứa bất kỳ thứ gì bạn thích. Nó không có bất kỳ quy định hoặc sử dụng dự kiến.
Các phiên bản của chfn
hỗ trợ trường “Khác” cũng cung cấp -o
(khác) tùy chọn để thay đổi giá trị này trực tiếp. Đó là do xung đột giữa -o
cho “số văn phòng” và -o
cho “khác” mà một số hệ thống sử dụng -r
cho “số phòng”.
Chúng tôi có thể thấy dữ liệu được lưu trữ cho tài khoản người dùng mary trong /etc/paswd
tập tin, bằng cách sử dụng less
:
less /etc/passwd
Trên các hệ thống hỗ trợ nó (kiểm tra man
trang cho phiên bản của bạn chfn
) bạn có thể đặt trường “khác” trực tiếp bằng cách sử dụng -o
(tùy chọn khác:
sudo chfn -o "HTG Freelancer" dave
Và chúng tôi có thể kiểm tra dữ liệu cho dave tài khoản người dùng bằng cách sử dụng less
chỉ huy:
less /etc/passwd
[asswdinaterminalwindow”width=”646″height=”382″/>[asswdinaterminalwindow”width=”646″height=”382″/>
Điều đó đặt ra một câu hỏi hiển nhiên. Nếu phiên bản của bạn chfn
không hỗ trợ trường “Khác”, làm cách nào để bạn thay đổi trường này? Chúng tôi có thể làm điều đó với usermod
chỉ huy.
Lệnh usermod
Các usermod
lệnh cho phép bạn sửa đổi các khía cạnh của tài khoản người dùng thông qua các hành động như thêm hoặc xóa tài khoản người dùng khỏi các nhóm và thay đổi trình bao mặc định của họ. Nó cũng có thể được sử dụng để thao tác trực tiếp trường GECOS.
Chúng ta hãy xem xét kỹ hơn dòng trong /etc/passwd
tệp cho tài khoản người dùng mary. Chúng tôi sẽ sử dụng grep để cô lập dòng đó cho chúng tôi. Điều này sẽ hoạt động vì tên người dùng phải là duy nhất. Chỉ có thể có một tài khoản người dùng được gọi là mary.
grep mary /etc/passwd
Các trường trong etc/passwd
tệp được hiển thị. Một dấu hai chấm “:
”Được sử dụng làm dấu phân tách trường. từ trái sang phải, các trường là:
- Tên người dùng tài khoản.
- Dấu “x” cho biết mật khẩu cho tài khoản người dùng này được giữ mã hóa trong
/etc/shadow
tập tin. - ID người dùng cho tài khoản người dùng mary.
- ID nhóm cho tài khoản người dùng mary.
- Trường GECOS.
- Đường dẫn đến thư mục chính cho tài khoản người dùng mary.
- Trình bao được khởi động khi chủ sở hữu tài khoản mary đăng nhập.
Dấu phẩy “,” được sử dụng làm dấu phân cách cho các giá trị dữ liệu trong trường GECOS. Các giá trị trong trường GECOS, từ trái sang phải:
- Họ và tên.
- Số phòng (hoặc văn phòng).
- Số điện thoại cơ quan.
- Số điện thoại nhà.
- Thông tin khác.
Lưu ý rằng usermod
lệnh đặt toàn bộ trường GECOS thành giá trị mới mà bạn cung cấp. Nếu tất cả những gì bạn cung cấp là tên đầy đủ của một người, thì thứ duy nhất trong trường GECOS sẽ là tên đầy đủ. Điều này có nghĩa là bạn phải cung cấp mọi giá trị dữ liệu hiện có mà bạn muốn giữ lại.
Đây là một ví dụ. Người dùng Mary đã được thăng cấp và cô ấy sẽ chuyển lên tầng thứ tư. Cô ấy đang nhận được số văn phòng mới, số điện thoại cơ quan mới và chúng tôi sẽ thêm tên đệm của cô ấy vào. Giá trị trường “Khác” của cô ấy cũng sẽ thay đổi. Mặc dù số điện thoại nhà riêng của cô ấy sẽ không thay đổi, nhưng chúng tôi phải cung cấp nó trong chuỗi để usermod
.
Chúng ta cần sử dụng -c
(comment) tùy chọn và chúng ta cần chạy lệnh với sudo
.
sudo usermod -c "Mary Carol Quinn,405,5559654,555-7704,Linux Advocate" mary
Sử dụng grep
để báo cáo về nội dung của /etc/passwd
tệp cho mary, cho chúng tôi thấy các giá trị mới đã được thêm vào.
grep mary /etc/passwd
LIÊN QUAN: Thêm người dùng vào một nhóm (hoặc nhóm thứ hai) trên Linux
Tất cả là Flux, không có gì tồn tại
Dữ liệu không chính xác là vô giá trị. Khi thông tin về mọi người thay đổi — chuyển văn phòng, thay đổi tên, chức danh — bạn có thể dễ dàng cập nhật siêu dữ liệu của họ để phản ánh vị trí hiện tại.