2012-01-09 37 views
18

Có thể thêm người dùng vào tệp sudoers thông qua tập lệnh trình bao không? Tôi đã nhìn xung quanh, vẫn không thể tìm thấy bất cứ điều gì.Thêm người dùng vào sudoers thông qua tập lệnh shell

+1

Tôi không chắc tôi hiểu kết nối, tại sao bạn cần phải thêm người dùng vào sudoers để có thể chạy Ruby? –

+0

Không có gì để làm với Ruby. Kịch bản tôi đang chạy bên trong ruby, yêu cầu ruby ​​để chạy với quyền sudo, do đó lý do của sudo. Đừng lo lắng về phần ruby, đây là về việc chỉnh sửa sudoers – nickw444

+0

Sẽ có ý nghĩa hơn khi thêm một mục nhập nhóm vào '/ etc/sudoers' và thêm người dùng vào nhóm đó thay vì liên tục cập nhật' sudoers 'tập tin? –

Trả lời

39

Bạn có thể chỉ đơn giản là echo (với quyền cao, tất nhiên) trực tiếp đến /etc/sudoers file:

sudo -i 
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers 
#    ^^ 
#    tab 

(lưu ý các ký tự tab giữa tên người dùng và ALL đầu tiên)

Hoặc, đối với một tập lệnh:

#!/bin/bash 
# Run me with superuser privileges 
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers 

Sau đó lưu vào somefile.sh, chmod a+rx và chạy sudo ./somefile.sh từ cửa sổ đầu cuối.

Để thêm nhiều người dùng, hãy thay đổi tập lệnh thành điều này;

#!/bin/bash 

while [[ -n $1 ]]; do 
    echo "$1 ALL=(ALL:ALL) ALL" >> /etc/sudoers; 
    shift # shift all parameters; 
done 

Sau đó, chạy các kịch bản như thế này (giả sử bạn đã lưu nó như addsudousers.sh):

sudo ./addsudousers.sh bob joe jeff 

có nghĩa là, không gian tách ra.

Để đọc tên từ một tập tin:

[email protected] ~ $ sudo ./addsudousers.sh `cat listofusers.txt` 

listofusers.txt cũng nên không gian tách ra.

Edit: Jappie Kirk rightly points out mà bạn có thể không trực tiếp gọi sudo echo ... >> /etc/sudoers vì chuyển hướng >> được xử lý bởi vỏ, trong đó có bởi thời điểm đó giảm các đặc quyền superuser. Tuy nhiên, nếu bạn chạy tập lệnh có chứa echo ... >> /etc/sudoers và bản thân tập lệnh có đặc quyền superuser, mọi thứ sẽ hoạt động tốt.

+0

Làm việc hoàn hảo. Cảm ơn rất nhiều – nickw444

+1

'sudo echo' không hoạt động, xem: https://blogs.oracle.com/joshis/entry/sudo_echo_does_not_work Cũng theo mặc định, tệp sudoers là chỉ đọc –

+0

@Jappie: OP cho biết" đã hoạt động hoàn hảo "vì vậy tôi 'không chắc chắn vấn đề là gì đối với bạn. Có lẽ hãy xem ["Làm cách nào để chỉnh sửa/etc/sudoers từ tập lệnh?"] (Http://stackoverflow.com/q/323957/732016)? – wchargin

4

Ngoài ra còn có các nhóm sudo, và bạn có thể thêm người dùng đến nó (cho các cấu hình chung của /etc/sudoers)

5

Không, một tiếng vang thẳng sẽ không làm việc, bạn phải chạy nó trong một subshell. Hãy thử thay vào đó:

sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"

+0

đó là nó, sự cho phép 0440 của tập tin sudoers ngăn chặn để làm điều đó – pylover

-1

Đăng nhập với tư cách gốc của máy. Người dùng root là người duy nhất có đặc quyền để thêm người dùng mới.

Khi bạn đăng nhập, bây giờ bạn có thể thử các lệnh sau đây:

  1. Tạo một người dùng mới.

    adduser [username]

  2. Thêm mật khẩu để sử dụng

    passwd [username]

  3. quyền root Grant để sử dụng Chỉnh sửa các tập tin visudo bằng cách đơn giản gõ

    enter code here

Tìm dòng mã sau đây: gốc ALL = (ALL) ALL

Sau đó thêm mã này dưới đây:

[username] ALL=(ALL) ALL 

Các bài gốc sẽ tìm vào liên kết này Centos 6 – Creating sudoers user

0

câu trả lời khác như như đẻ trứng một vỏ bọc con sẽ hoạt động, nhưng có thể không hoạt động nếu bạn muốn sử dụng các lọ môi trường. Một thay thế tôi thấy đã chơi thực sự độc đáo cho tôi:

echo "%<user>  ALL=(ALL) ALL" | sudo tee -a /etc/sudoers > /dev/null 

này đang được nói, nhận thức muộn màng là 20/20 ... Nếu sửa đổi sudoers qua một kịch bản và không qua visudo tôi nghiêm túc sẽ khuyên bạn nên tạo một bản sao lưu với các tập tin ngay quyền và nội dung đầu tiên kể từ khi bạn có thể mất quyền truy cập đến bất kỳ quyền sudo mà không pkexec, truy cập vật lý hoặc khởi động lại, vv

sudo cp /etc/sudoers /etc/sudoers.bak 
1

trên RedHat Dựa phân phối sử dụng:

su - root 

và nhập mật khẩu của bạn, sau đó:

echo 'YOURUSERNAME ALL=(ALL:ALL) ALL' >> /etc/sudoers 

để thêm người sử dụng trong sudoers file.

+0

https: //access.redhat. com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/ch02s03.html –

Các vấn đề liên quan