Có cách nào để cho phép người dùng thực hiện các lệnh chỉ trong 2 ngày


13

Làm thế nào để cấp quyền sudo trong một thời gian cụ thể? Có cách nào để trao quyền thực hiện một lệnh cụ thể trong 2 ngày chỉ trong tệp sudoers không?

Câu trả lời:


18

Tệp sudoers không hỗ trợ hạn chế dựa trên thời gian nhưng có một phương pháp dễ dàng. Tạo một tệp với các thay đổi của bạn trong /etc/sudoers.d/(với sudo visudo -f /etc/sudoers.d/yourfile):

Thêm vào một tệp (ví dụ file.sh:) sau đây

mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile

Và điều này sẽ vô hiệu hóa các thay đổi của bạn:

 sudo at -f file.sh 2pm + 2 days

Thí dụ:

at -f file.sh 2pm + 2 days
warning: commands will be executed using /bin/sh
job 4 at Thu Oct 15 14:00:00 2015

Trong trường hợp này, nó sẽ di chuyển tệp vào lúc 2 giờ chiều 2 ngày sau khi bạn phát lệnh. Các at nhãn hiệu có một số tùy chọn (bạn có thể sử dụng một thời gian, ngày, tuần, tháng, năm, các từ khóa như sau hoặc thêm / periodes trừ). Có một số thử nghiệm với tùy chọn để đảm bảo bạn hiểu nó (Một điều cần xem xét: nó quan trọng nếu bạn bắt đầu attrước hoặc sau 2 giờ chiều trong ngày.)

atcũng sống sót khi khởi động lại vì vậy là một công cụ tốt để sử dụng cho những thứ này. Và bạn có thể chuyển đổi quyền truy cập ...

sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 2 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 4 days
sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 6 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 8 days

và làm cho người dùng đó thất bại (wtf bây giờ tôi có thể làm điều này).

README trong /etc/sudoers/:

# As of Debian version 1.7.2p1-1, the default /etc/sudoers file created on
# installation of the package now includes the directive:
# 
#   #includedir /etc/sudoers.d
# 
# This will cause sudo to read and parse any files in the /etc/sudoers.d 
# directory that do not end in '~' or contain a '.' character.
# 
# Note that there must be at least one file in the sudoers.d directory (this
# one will do), and all files in this directory should be mode 0440.
# 
# Note also, that because sudoers contents can vary widely, no attempt is 
# made to add this directive to existing sudoers files on upgrade.  Feel free
# to add the above directive to the end of your /etc/sudoers file to enable 
# this functionality for existing installations if you wish!
#
# Finally, please note that using the visudo command is the recommended way
# to update sudoers content, since it protects against many failure modes.
# See the man page for visudo for more information.

Nếu tôi đọc chính xác, nó sẽ không thực thi bất kỳ tệp nào có dấu "." bất cứ nơi nào trong tên. Vì vậy, mvlệnh 1 tôi đã đặt "." ở phía trước làm cho nó cũng vô hình. Nếu giả sử chính xác, bạn có thể đặt dấu "." bất cứ nơi nào Cẩn thận với "~", cái đó được sử dụng làm tính năng "sao lưu" bởi các biên tập viên như gEdit.


atkhông được cài đặt theo mặc định. Để cài đặt

sudo apt-get install at

Thanx, tôi đã nghĩ về nó nhưng tình hình là nhiều người dùng sử dụng tệp cho mục đích riêng của họ nên không thể sao lưu và khôi phục tệp sudoers mỗi khi bcoz người dùng khác cũng sửa đổi cùng một tệp sudoers để khi tôi khôi phục tệp cũ những thay đổi được thực hiện bởi người dùng ohter sẽ biến mất ...
Abbas Kapasi

2
Làm thế nào về điều này thưa ông? Ồ và tôi có thể đề nghị nhiều người dùng của bạn cũng nên sử dụng sudoers.d với tên tệp riêng của họ. Có vẻ tốt hơn nhiều so với chỉnh sửa sudoers.
Rinzwind

@AbbasKapasi tạo một tệp mới /etc/sudoers.dmà những người dùng khác của bạn sẽ không sử dụng.
muru

Tôi nghĩ rằng lệnh được sử dụng trong suốt câu trả lời nên có mv, không phải cp.
Cthulhu

3
bạn thấy cp ở đâu huýt sáo một cách ngây thơ
Rinzwind
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.