Sự khác biệt giữa các chmod + x và và chmod 755 là gì?


61

Khi nói đến việc thực hiện một tập tin thực thi sự chênh lệch giữa là những gì chmod 755chmod +xvà khi tôi sẽ sử dụng mà? Cho đến nay tôi chỉ sử dụng chmod +xvà tôi chỉ đọc một cái gì đó và nó được sử dụng chmod 755và tôi không thể biết liệu nó tốt hơn để sử dụng chmod 755hay không chmod +x.


9
chmod +xđặt tất cả các cờ thực thi mà không thay đổi các quyền khác. chmod 755đặt rwxr-xr-x
ravery


5
@ravery: Chào bạn! Bạn đã tìm thấy phần bình luận, đó là một khu vực dành riêng cho việc phê bình và yêu cầu làm rõ. Để cung cấp câu trả lời / giải pháp, bạn nên sử dụng phần "trả lời" bên dưới (tìm nút "Đăng câu trả lời" màu đỏ lớn). Mong rằng sẽ giúp!
Cuộc đua nhẹ nhàng với Monica

Câu trả lời:


144

Phiên bản ngắn:

Để có thể so sánh chúng, chúng ta nên nhìn chúng từ cùng một quan điểm, vì vậy:

  • chmod +xbằng chmod ugo+x(Dựa trên umaskgiá trị)
  • chmod 755 bằng chmod u=rwx,go=rx

Giải trình:

Trước tiên, bạn nên biết rằng:

  1. + có nghĩa là thêm quyền này vào các quyền khác mà tệp đã có.
  2. = có nghĩa là bỏ qua tất cả các quyền, đặt chúng chính xác như tôi cung cấp.

    • Vì vậy, tất cả "đọc, viết, thực thi, dính bit, suid và hướng dẫn" sẽ bị bỏ qua và chỉ những cái được cung cấp sẽ được thiết lập.
  3. đọc = 4, viết = 2, thực hiện = 1

    • Đây là logic nhị phân đằng sau nó (nếu bạn quan tâm):

      Symbolic:  r-- -w- --x  |  421
      Binary:    100 010 001  |  -------
      Decimal:    4   2   1   |  000 = 0
                              |  001 = 1
      Symbolic:  rwx r-x r-x  |  010 = 2
      Binary:    111 101 101  |  011 = 3
      Decimal:    7   5   5   |  100 = 4
                 /   /   /    |  101 = 5
      Owner  ---/   /   /     |  110 = 6
      Group  ------/   /      |  111 = 7
      Others ---------/       |  Binary to Octal chart
      

Sử dụng +xbạn đang nói để thêm ( +) bit thực thi ( x) cho chủ sở hữu, nhóm và những người khác.

  • nó bằng ugo+xhoặcu+x,g+x,o+x
  • Khi bạn không chỉ định chủ sở hữu, nhóm hoặc người nào khác là mục tiêu của mình, trong trường hợp xđó, họ sẽ xem xét tất cả. Và như @Rinzwind đã chỉ ra, nó dựa trên umaskgiá trị, nó thêm bit vào những thứ umaskcho phép. hãy nhớ nếu bạn chỉ định mục tiêu như thế o+rthì umasksẽ không còn tác dụng nữa.
  • Nó không chạm vào các mod khác (quyền).
  • Bạn cũng có thể sử dụng u+xđể chỉ thêm bit thực thi cho chủ sở hữu.

Sử dụng 755bạn đang chỉ định:

  • 7 -> u=rwx(4 + 2 + 1 cho chủ sở hữu)
  • 5 -> g=rx(4 + 1 cho nhóm)
  • 5 -> o=rx(4 + 1 cho người khác)

Như vậy chmod 755là: chmod u=rwx,g=rx,o=rxhay chmod u=rwx,go=rx.

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


15
một bổ sung rất quan trọng: khi sử dụng, chmod 755bạn thiết lập các bit đó VÀ bạn cũng xóa tất cả các bit suid / sgid / stick (có thể đã có ở đó) (ví dụ: KHÔNG BAO GIỜ chmod 755 /tmp). 755 phải luôn luôn được coi là 0755, tức là tập hợp bát phân đầu tiên cũng được đặt thành 0.
Olivier Dulac

1
gần như hoàn hảo nên +1 sớm (yay bạn đã nhận được huy hiệu đó từ tôi :)): Bạn đã quên về umask;)
Rinzwind

@OlivierDulac Cảm ơn, tôi không muốn biết quá nhiều chi tiết nhưng tôi sẽ cập nhật câu trả lời ...
Ravexina

1
Tôi nghĩ rằng tôi đã hiểu cách thức hoạt động của quyền, cảm ơn!
Fabich


37

chmod +x thêm quyền thực thi cho tất cả người dùng vào các quyền hiện có.

chmod 755đặt 755quyền cho một tập tin.

755 có nghĩa là toàn quyền cho chủ sở hữu và đọc và thực thi quyền cho người khác.


7

Một cách khác để xem xét nó (mà tôi thấy dễ hiểu hơn) chmod +xlà thiết lập các quyền tương đối , trong khi đó chmod 755là thiết lập chúng hoàn toàn .

Sau khi chmod 755được chạy trên một tệp, quyền của nó sẽ là 755 hoặc rwxr-xr-x.

chmod +xsẽ chỉ lấy các quyền hiện có và thêm quyền thực thi vào tệp.


6

Tôi khuyên bạn nên xem lại trang chmod man để biết chi tiết đầy đủ. Bạn chỉ thấy hai chế độ hoạt động khác nhau có sẵn với lệnh chmod để thực hiện cùng một nhiệm vụ thay đổi quyền.

Chế độ Octal đang sử dụng số và đặt toàn bộ quyền của tệp. Chế độ ký tự đang sử dụng các chữ cái và thường được sử dụng để chỉ sửa đổi các quyền hiện có.

chmod 755thiết lập rwxr-xr-xtrong khi chmod +xđiều chỉnh các quyền để chủ sở hữu, nhóm và thế giới đều có các quyền thực thi được thêm vào. Giả sử quyền truy cập tệp mặc định của rwxr--r--nó sẽ điều chỉnh nó thành các quyền tương tự như 755 của rwxr-xr-x.


5

Sự khác biệt là những quyền nào được đặt và chế độ nào bạn sử dụng để đặt chúng.

Với chmod +xbạn đặt bit thực thi cho tất cả - chủ sở hữu, nhóm chủ sở hữu và những người dùng khác. Điều này được gọi là chế độ tượng trưng. Để trích dẫn man chmod:

Toán tử + làm cho các bit chế độ tệp đã chọn được thêm vào các bit chế độ tệp hiện có của mỗi tệp; - khiến chúng bị loại bỏ; và = làm cho chúng được thêm vào và khiến các bit không được đề cập bị loại bỏ ngoại trừ việc các bit ID người dùng và nhóm ID chưa được đề cập của thư mục không bị ảnh hưởng.

Với việc chmod 755bạn đang sử dụng các số bát phân, biểu diễn nhị phân được sử dụng để đặt các bit quyền cụ thể. 3 bit đầu tiên (trái) tương ứng với quyền của chủ sở hữu, giữa 3 với quyền của nhóm và cuối cùng (ngoài cùng bên phải) tương ứng với quyền của tất cả người dùng khác. Thứ tự của các bit luôn giống nhau, read,write,executehoặc do rwxđó, chính xác bởi vì thứ tự là như nhau, số riêng lẻ khi được chuyển đổi thành biểu diễn nhị phân, sẽ đặt các bit cho phép mà bit vị trí tương ứng trong số đó là 1 và bỏ đặt số đó là 0 . Đặc biệt:

  • Số bát phân 7là 111 ở dạng nhị phân, vì vậy bạn đang thiết lập tất cả các bit đọc, ghi và thực thi cho chủ sở hữu; rwxđược đặt.
  • Số bát phân 5là 101 ở dạng nhị phân, vì vậy bạn đang cài đặt đọc và thực thi nhưng vô hiệu hóa các bit ghi và vì nó là 5 cho nhóm và những người dùng khác, hai danh mục đó sẽ có cùng quyền. Như vậy r-xlà thiết lập.

Đây là bản demo nhỏ:

    bash-4.3$ touch file1 file2
    bash-4.3$ chmod +x file1
    bash-4.3$ chmod 755 file2
    bash-4.3$ ls -l file1 file2
    -rwxrwxr-x 1 xieerqi xieerqi 0 7月   6 13:54 file1
    -rwxr-xr-x 1 xieerqi xieerqi 0 7月   6 13:54 file2

3

Một sự khác biệt quan trọng là chmod + chịu các hạn chế về ô, còn chmod <octal> thì không.

Hãy xem xét ví dụ sau:

$ ls -l foo bar
---------- 1 gowenfawr users 0 Jul  7 16:40 bar
---------- 1 gowenfawr users 0 Jul  7 16:39 foo
$ umask
0022
$ chmod +w bar
$ umask 0002
$ chmod +w foo
$ ls -l foo bar
--w------- 1 gowenfawr users 0 Jul  7 16:40 bar
--w--w---- 1 gowenfawr users 0 Jul  7 16:39 foo
$

Vì vậy, nếu bạn muốn thực hiện thay đổi delta thành quyền theo cách phù hợp với cài đặt umask của bạn, hãy sử dụng cú pháp '+'. Nhưng nếu bạn muốn đặt nó hoàn toàn mà không cần quan tâm đến umask, hãy sử dụng định dạng <bát phân> và nhận ra rằng bạn phải chỉ định tất cả các bit chứ không chỉ là một delta.


1

Ngoài những câu trả lời hay này tôi muốn đề cập đến một sự khác biệt nhỏ nhưng có lẽ quan trọng. Lệnh chmod 755 filetương đương với chmod 0755 file. Nếu chúng ta chạy lệnh này trên một tệp có tập hợp bit SETUID-bit hoặc SETGID-bit, nó sẽ xóa tập tin SETUID / SETGID-bit. chmod +x filesẽ không để lại SETUID / SETGID-bit. Chúng ta có thể thấy điều này trong ví dụ sau:

~ $ kiểm tra cảm ứng
~ $ chmod u + s kiểm tra
~ $ sẽ kiểm tra
-rwSrw-r-- 1 mook mook 0 tháng 9 14 00:49 kiểm tra
~ $ chmod + x kiểm tra
~ $ sẽ kiểm tra
-rwsrwxr-x 1 mook mook 0 ngày 14 tháng 9 00:49 kiểm tra
Thử nghiệm ~ $ chmod 755
~ $ sẽ kiểm tra
-rwxr-xr-x 1 mook mook 0 ngày 14 tháng 9 00:49 kiểm tra
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.