Tùy thuộc vào người dùng của bạn, đó có thể là một ý tưởng tốt hay xấu.
Người su
dùng thông thường có thể sử dụng lệnh này để đăng nhập vào bất kỳ tài khoản nào khác, không chỉ siêu nhân, miễn là họ biết mật khẩu của tài khoản.
Điều này rất hữu ích, ví dụ khi hai người dùng đang hợp tác trong một dự án, một trong số họ (userA) đã đăng nhập và họ cần đọc một tệp chỉ có thể truy cập đối với người dùng khác (userB). Đơn giản là chạy
su -c 'cat /home/userB/file' userB >file
có thể được sử dụng để sao chép tệp vào thư mục chính của người dùng đã đăng nhập, nhưng điều đó chỉ có thể nếu userA được phép chạy su
lệnh.
Trên các máy chủ cơ sở dữ liệu PostgreSQL, người quản trị cơ sở dữ liệu thường có thể chuyển sang postgres
người dùng để thực hiện một số tác vụ bảo trì không thể thực hiện được trong khi máy chủ cơ sở dữ liệu đang hoạt động; để làm việc này, họ cần có khả năng chạy su - postgres
.
Các cân nhắc tương tự áp dụng cho sudo
lệnh (khác biệt và phức tạp hơn so với su
- đó chỉ là cấu hình mặc định làm cho lệnh chủ yếu hữu ích cho sudoers
nhóm, vì nhóm đó được phép chạy bất kỳ lệnh nào root
. Tuy nhiên, nếu bạn thêm bất kỳ quy tắc tùy chỉnh nào, ví dụ: cho phép bất kỳ người dùng nào chạy updatedb
mà không có đối số, sau đó người dùng bên ngoài sudoers
nhóm cần có quyền thực thi sudo
.
Ngoài ra, không chỉ có su
đó là setuid - còn có
sg
(cho phép tạm thời tham gia nhóm nếu có mật khẩu nhóm)
passwd
(cho phép thay đổi mật khẩu)
chfn
(cho phép thay đổi thông tin người dùng)
chsh
(cho phép thay đổi shell mặc định)
và một số người khác. Các công cụ này chia sẻ rất nhiều mã với su
lệnh, vì vậy việc thay đổi chế độ /bin/su
một mình sẽ không mua cho bạn nhiều và việc thay đổi chế độ của tất cả chúng chắc chắn sẽ gây khó chịu cho người dùng của bạn, đặc biệt là trong trường hợp passwd
.