Trên CentOS 7, tôi đã cài đặt một số tệp thực thi /opt/app-version/bin/executable. Những thực thi đó có các quyền sau:
rwxrwxr-x. 500 500
Quyền sở hữu của mọi thư mục trong đường dẫn /opt/app-version/bin/là - 500 500ngoại trừ /opt, đó là root root.
Câu hỏi đầu tiên của tôi: 500 500kinh doanh này là gì? Cho rằng tôi đã cài đặt các tệp thực thi bằng cách sử dụng sudo, chủ sở hữu và nhóm không nên root?
Tôi đã chạy lệnh sau với quyền root để tạo các liên kết tượng trưng đến các tệp thực thi trong /usr/local/bin/:
ln /opt/app-version/bin/executable /usr/local/bin/executable --symbolic
Tôi có thể chạy executabletừ dòng lệnh như một người dùng thông thường, nhưng không phải là người dùng thông thường sử dụng sudo.
Chạy sudo executabletrở lại sh: executable: command not found.
Chạy sudo echo $PATHcho thấy đó /usr/local/bin/là trong $PATHmôi trường sudo. (Hoặc hiện nó? Tôi nhìn thấy các nội dung của $PATHcho môi trường sử dụng siêu hay $PATHcho môi trường của người sử dụng mà gọi sudo? Liệu CentOS tạo ra một môi trường mới cho các lệnh chạy với sudo, hay nó chỉ cần chạy lệnh trong môi trường của người gọi? )
Chạy sudo ls -la /usr/local/bin/executabletrả về một danh sách cho executableở /usr/local/bin/với quyền sở hữu lrwxrwxrwx. 1 root root. (Có ln --symbolicthực sự tạo các liên kết có thể chỉnh sửa trên toàn cầu theo mặc định không? Đó không phải là - một ý tưởng khủng khiếp?) Sự hiểu biết của tôi là chương trình này sudo sẽ có thể chạy executable.
Tôi đang thiếu gì?