Tuỳ chỉnh Linux user environments

Chia sẻ

Có được sự cân bằng hài hoà giữa năng suất và bảo mật là một công việc khó khăn
Bảo mật hệ thống là một mối quan tâm hàng đầu. Là một quản trị viên hệ thống như tôi đã bắt đầu trước đây thì nó còn là vấn đề chính cần phải quan tâm. Thêm một users mới vào hệ thống sẽ làm giảm tính bảo mật. Công việc của bạn là tạo ra một môi trường vừa tiện dụng vừa an toàn cho người dùng của bạn. Bạn cần bảo vệ tài sản của công ty, duy trì hoạt động của hệ thống và đáp ứng nhu cầu của người dùng. Ba lợi ích trên đều qua trọng và không tránh khỏi xung đột. Một cách để làm hài lòng cả ba bên là tuỳ biến môi trường người dùng theo các tiêu chuẩn của công ty. Đạt được sự cân bằng giữa sự tiện dụng cho người dùng và bảo mật cho hệ thống không phải là chuyện đơn giản. Tôi không thể viết một điều gì đó cụ thể cho từng nhu cầu của mỗi bạn, nhưng tôi có thể chỉ cho bạn những gì cần thiết mà bạn nên làm
Bài viết này nói về việc tuỳ chỉnh các files về môi trường người dùng nằm trong thư mục /etc/skel và /etc/profile.d. Với một hệ điều hành mới hoàn toàn bạn sẽ tìm thấy 3 files sau trong thư mục /etc/skel, đó là .bash_logout; .bash_profile và .bashrc. Khi bạn tạo một tài khoản người dùng mới thì ba files đó được copy vào thư mục home của user đó và được sở hữu bởi user đó. Những file này có dấu . đứng trước tên files và bị ẩn đi. Để xem chúng bạn cần thêm tham số -a vào câu lệnh ls

-rw-r--r--. 1 root root 18 Mar 31 21:17 .bash_logout
-rw-r--r--. 1 root root 193 Mar 31 21:17 .bash_profile
-rw-r--r--. 1 root root 231 Mar 31 21:17 .bashrc

Như chúng ta thấy các files trên được sở hữu bởi root và chỉ có thể dùng user root để chỉnh sửa

.bash_profile

File .bash_profile là file quan trọng nhất trong ba files kể trên. Nó quan trọng nhất vì nó là file duy nhất bắt buộc phải có trong danh sách trên. Nó được thực thi mỗi khi người dùng đăng nhập vào hệ thống, nó sẽ khởi chạy file .bashrc sau đó định nghĩa và xuất các biết PATH. Files này mặc định trông rất đơn giản

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH

File .bash_profile còn có thể sử dụng để định nghĩa một shell tuỳ chỉnh, xác định lựa chọn một editor hoặc bất kì điều gì bạn muốn thêm vào file này cho user đó

.bashrc

Nội dung mặc định của file .bashrc, mặc định chỉ là gọi tới file /etc/bashrc. File /etc/bashrc chứa các thiết lập có thể cấu hình cho tất cả người dùng

# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions

Bạn cũng có thể chỉnh sửa cấu hình để gọi một files cấu hình khác cho một user groups, ví dụ một user là thành viên của nhóm finance, bạn có thể gọi một file để thiết lập một danh sách những biết cụ thể cho tất cả người dùng trong nhóm finance

/etc/bashrc và /etc/profile

Sự liệt kê cho các file nằm trong /etc/bashrc thực sự là quá dài dòng để nói tới trong bài viết này, nhưng bạn có thể nhìn vào chúng và xem chúng đang làm những công việc gì. File /etc/bashrc liên quan tới file /etc/profile với nhiều cài đặt và biến môi trường hơn. Cả hai files đều đi kèm với cảnh báo sau

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

Vì vậy tuỳ chỉnh môi trường người dùng không phải chuyện đơn giản như bạn nghĩ

/etc/profile.d

Khi liệt kê các files trong /etc/profile.d. Bạn sẽ nhận được danh sách sau

-rw-r--r--. 1 root root 771 Mar 31 21:50 256term.csh
-rw-r--r--. 1 root root 841 Mar 31 21:50 256term.sh
-rw-r--r--. 1 root root 196 Mar 24 2017 colorgrep.csh
-rw-r--r--. 1 root root 201 Mar 24 2017 colorgrep.sh
-rw-r--r--. 1 root root 1741 Aug 6 2019 colorls.csh
-rw-r--r--. 1 root root 1606 Aug 6 2019 colorls.sh
-rw-r--r--. 1 root root 80 Mar 31 23:29 csh.local
-rw-r--r--. 1 root root 1706 Mar 31 21:50 lang.csh
-rw-r--r--. 1 root root 2703 Mar 31 21:50 lang.sh
-rw-r--r--. 1 root root 123 Jul 30 2015 less.csh
-rw-r--r--. 1 root root 121 Jul 30 2015 less.sh
-rw-r--r--. 1 root root 81 Mar 31 23:29 sh.local
-rw-r--r--. 1 root root 164 Jan 27 2014 which2.csh
-rw-r--r--. 1 root root 169 Jan 27 2014 which2.sh

Bạn có thể thấy rất nhiều files trong này được sử dụng trong C shell. Nhưng file quan trọng nhất mà bài này hướng tới là file sh.local. Nội dung của files này như sau

#Add any required envvar overrides to this file, it is sourced from /etc/profile

Như bạn đã thấy trong thông báo trên, nếu bạn muốn sửa bất kì tuỳ chọn nào bạn hãy ghi chú lại trên files này nhé

Caveats

Như người dùng đã học về môi trường của họ và tìm kiếm một số thứ trên Google, họ sẽ tự tuỳ biến cho môi trường riêng của họ, điều này thường gây hại cho hệ thống. Bạn cần phải cân bằng giữa một SysAdmin lười nhác và một SysAdmin nghiêm khắc. Bạn muốn users hoạt động năng suất hơn nhưng bạn cũng muốn có một số hạn chế trong việc điều chỉnh môi trường riêng của hoạ. Theo ý kiến của tôi để làm đẹp lòng đôi bên là đặt tất cả các tiêu chuẩn của doanh nghiệp về user environment parameters trong /etc/bashrc và trong /etc/profile.d/sh.local và chúng sẽ không bị sửa hoặc thay đổi
Hãy nhớ rằng các files như /home/user/.bash_profile.bashrc, và .bash_logoutlà những files đều cho phép user chỉnh sửa. Cách duy nhất để xử lí tình trang này là chỉnh quyền cho những files đó bằng một root user script sau khi bạn tạo ra tài khoản. Hay nói cách khác, chạy một script sau khi bạn tạo một user mới để thay đổi quyền trên /home/user/.bash* thành root: rw-r--r-- . Các user thông thường sau đó sẽ không thể chỉnh sửa được những file này
Nếu bạn muốn khoá chỉnh sửa những file .bash* cho quyền root, bạn có thể tạo ra một file trong /etc/skel như là file .user và user có thể chỉnh sửa nó sau đó include vào file .bash_profile

Chia sẻ