Applescript Gọi người dùng và mật khẩu cụ thể


2

Tôi có một do shell scriptcái mà tôi cần để chạy trong Applescript, nhưng nó cần chạy như một người dùng khác. Nó sẽ được triển khai vào ổ đĩa mạng của sinh viên dưới dạng một ứng dụng độc lập mà sinh viên có thể chạy khi được yêu cầu.

Mã ví dụ dưới đây chỉ để minh họa. Mã này hoạt động khi tôi đăng nhập, vì nó chọn tên người dùng của tôi (tài khoản quản trị viên cục bộ) trên máy tính và sử dụng mật khẩu được cung cấp (không bao gồm mật khẩu thực tế).

do shell script "rm -rf /$HOME/Downloads/*" password "Password01" with administrator privileges

Tôi đã cố gắng chỉ định tên người dùng với user "sdadmin"mã và nó sẽ không hoạt động, nó sẽ báo lỗi.

Có cách nào để yêu cầu AppleScript chạy một lệnh với một người dùng và mật khẩu cụ thể được cung cấp trong mã như trên không?


Vui lòng đảm bảo rằng bạn đã đọc bản cập nhật thứ hai trong câu trả lời của tôi
markhunte

Câu trả lời:


4

Cập nhật câu trả lời:

Có một tài liệu của Apple chỉ ra cách làm đúng. Bạn đã gần gũi.

(Tôi chưa thử nó)

thực hiện tập lệnh shell "rm -rf / $ HOME / Tải xuống / *" tên người dùng "USERNAME" mật khẩu "THEPASSWORD" với đặc quyền của quản trị viên

Từ tài liệu :

Làm cách nào để tôi có được quyền quản trị viên cho một lệnh?

Sử dụng các đặc quyền quản trị viên, tên người dùng và thông số mật khẩu như thế này:

làm shell script "lệnh" tên người dùng "tôi" mật khẩu "mypassword" với tên người dùng và mật khẩu đặc quyền của quản trị viên là tùy chọn; nếu bạn bỏ qua tên người dùng, hãy thực hiện shell script giả sử nó là người dùng hiện tại; nếu bạn bỏ qua mật khẩu, nó sẽ hỏi mật khẩu khi nó chạy. Khi tập lệnh được xác thực chính xác, nó sẽ không yêu cầu xác thực lại trong năm phút. Kể từ Mac OS X 10.4, thời gian gia hạn này không mở rộng cho bất kỳ tập lệnh nào khác hoặc phần còn lại của hệ thống; tự gọi sudo -k là không cần thiết.

Vì lý do bảo mật, bạn không được yêu cầu ứng dụng khác thực hiện shell script với đặc quyền của quản trị viên. Đặt lệnh bên ngoài bất kỳ khối Tell nào, hoặc đặt nó bên trong một khối Tell me.

Hãy nhớ rằng các đặc quyền của quản trị viên cho phép bạn thay đổi bất kỳ tệp nào ở bất kỳ đâu trong hệ thống. Bạn có thể khiến hệ thống của mình không thể khởi động hoặc thậm chí xóa toàn bộ đĩa bằng một vài lệnh được đặt tốt, vì vậy hãy thận trọng. Tốt hơn hết, đừng sử dụng đặc quyền của quản trị viên trừ khi bạn thực sự phải làm. Trừ khi bạn đang thực hiện phát triển cấp hệ thống, bạn sẽ không bao giờ cần thay đổi bất cứ điều gì trong / Hệ thống - thay đổi / Thư viện là đủ.

Lưu ý: Sử dụng sudo (8) với các đặc quyền của quản trị viên thường không cần thiết và tạo ra các lỗ hổng bảo mật; chỉ cần loại bỏ "sudo".


CẬP NHẬT QUAN TRỌNG 2

* Bạn có thể lưu ứng dụng dưới dạng "chỉ chạy" (Trước tiên hãy lưu bản sao có thể chỉnh sửa)

(Nếu bạn chỉ lưu nó dưới dạng Run Only, thậm chí bạn sẽ không thể mở nó và chỉnh sửa nó sau khi bạn đã đóng cửa sổ script.)

Sau đó sử dụng menu Tệp-> Xuất sẽ cung cấp cho bạn tùy chọn trong hộp thoại lưu để lưu dưới dạng "Chỉ chạy"

nhập mô tả hình ảnh ở đây

Cố gắng mở tệp main.scpt trong gói ứng dụng:

nhập mô tả hình ảnh ở đây

Chỉ chạy sẽ ngăn ai đó mở tập lệnh được nhúng trong Ứng dụng bằng cách nhấp đúp vào tập lệnh để mở tập lệnh trong Trình chỉnh sửa tập lệnh và khám phá mật khẩu của bạn. Nhưng có một cách tìm tên người dùng và mật khẩu từ Run Only và không khó để tìm ra ngay cả đối với một người dùng thông thường.

TÔI MUỐN NGHE HAI LẦN VỀ ĐƯA TÊN TÊN NGƯỜI DÙNG VÀ MẬT KHẨU CỦA BẠN TRONG ỨNG DỤNG.


CẬP NHẬT 3

Một ý tưởng nhỏ để giúp đỡ nếu bạn phải làm điều này là chia nhỏ văn bản mật khẩu bằng cách tạo tên biến vô nghĩa để giữ nó và làm lộn xộn chúng.

Khi mã chạy, nó sẽ lắp lại chúng theo đúng thứ tự.

Ví dụ.

nếu mật khẩu là 88> 0TpFpax

Tôi sẽ sử dụng:

    set T to "Tp"
    set Po to "88"
    set TC to "Fpax"
    set TEH to ">0"
do shell script "say blahbla" user name "markhunte" password (Po & TEH & T & TC as string) with administrator privileges

Lưu ý rằng không chỉ biến không có nghĩa gì hoặc hiển thị bất kỳ ý nghĩa nào về trật tự mà các bit của mật khẩu cũng bị xáo trộn trong chúng.

Tất cả cho đến khi mã chạy.

Vì vậy, ngay cả khi họ vấp ngã về cách thực hiện những gì tôi đang nói về mật khẩu sẽ không được lắp ráp theo bất kỳ thứ tự nào mà nó có thể được sử dụng.


Những gì tôi đang thể hiện trong ví dụ này hoàn toàn không liên quan đến câu hỏi ban đầu của tôi. Tôi đang yêu cầu các sinh viên chạy một loạt các lệnh phức tạp và không ai trong số họ có quyền truy cập quản trị viên (thiết lập khác với những gì tôi có ở trên). Đây là cơ sở thử nghiệm của tôi mà tôi đã sử dụng khi thực hiện kịch bản này.
Danijel-James W

Đồng ý. Tôi đã làm rõ hơn một chút để bạn không có nhiều người đọc nó như tôi đã làm.
markhunte

1
@DanijelJ Tôi đã cập nhật câu trả lời của mình
markhunte

Xuất sắc! Đây là chính xác những gì tôi đã cố gắng. Tôi đã thử tìm kiếm tất cả các tài liệu và không thể tìm thấy câu trả lời thỏa đáng và đã thử vô số bài kiểm tra để làm cho nó hoạt động. Cảm ơn bạn! Và vâng, tôi biết sử dụng tên người dùng / pass trong một ứng dụng, nhưng nếu những sinh viên này có thể đảo ngược một ứng dụng để lấy nó ra - chúng tôi sẽ thuê họ tại chỗ để làm việc cho nhóm các nhà phát triển của chúng tôi tại khuôn viên chính.
Danijel-James W

Vui mừng câu trả lời đã được giúp đỡ nhưng đừng bị lừa khi nghĩ rằng sẽ mất một số nỗ lực để phá vỡ nó. Nó đòi hỏi tư duy bên hơn là kỹ thuật đảo ngược.
markhunte
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.