當前位置:首頁 » 操作系統 » linuxsetuid

linuxsetuid

發布時間: 2023-07-05 20:13:04

linux 關於set位許可權

set位只對可執行文件起作用(主要是命令),你對文件的設置是無效的,雖然可以添加上,但不會生效的。

⑵ Linux許可權管理基本知識

Linux許可權管理基本知識大全

Linux系統有什麼基本許可權,許可權管理命令是什麼?下面跟我一起來看看吧!

一、基本許可權

linux許可權機制採用UGO模式。其中 u(user)表示所屬用戶、g(group)表示所屬組、o(other)表示除了所屬用戶、所屬組之外的情況。

u、g、o 都有讀(read)、寫(write)、執行(excute) 三個許可權,所以UGO模式是三類九種基本許可權。

用命令 ls -l 可列出文件的許可權,第一列輸出明確了後面的輸出(後面一列代表 ugo許可權)。第一個字母對應的關系:

“-” 普通文件

“d” 目錄

”l“ 符號鏈接

”c“ 字元設備

"b" 塊設備

"s" 套接字

"p" 管道

修改文件或目錄的所屬用戶: chown 文件名 | 目錄名 用戶

-R 該參數以遞歸的方式修改目錄下所有文件的所屬用戶,參數可以敲 chown --help 查看。

修改文件或目錄的所屬組: chgrp 文件名 | 目錄名 組名

-R 該參數以遞歸的方式修改目錄下的所有文件的'所屬組。

命令chmod 用來修改文件或目錄的許可權: chmod -參數 模式 文件 | 目錄

例子: 修改目錄 log下所有文件的許可權為700

chmod -R 700 log

註:700的來歷是 u g o

rwx rwx rwx

111 000 000

關於 chmod 命令的許可權模式除了數字表示,還可以是 u、g、o 、a 加 +、- 來表示。格式如下:u、g、o分別代表用戶、屬組和其他,a 就是

all ,可以代替ugo。 +、- 代表增加或刪除對應的許可權,r、w、x 代表三種許可權,分別是讀、寫、執行。

例子:對於目錄 log下的所有文件(已有許可權是700)增加所屬組(g)的讀(r)、執行(x)許可權。

chmod -R g+rx log

類似的命令可能還有很多,這里只是舉幾個最基本且常用的例子。很多命令用到時,再去查也可以。還可參考《鳥哥的Linux私房菜》。

二、特殊許可權

Linux的3個特殊的許可權,分別是setuid、setgid和stick bit。

setuid許可權(S):只有用戶可擁有,出現在執行許可權(x)的位置。

setuid許可權允許用戶以其擁有者的許可權來執行可執行文件,即使這個可執行文件是由其他用戶運行的。

setgid許可權(S):對應於用戶組,出現在執行許可權(x)的位置。

setgid許可權允許以同該目錄擁有者所在組相同的有效組許可權來允許可執行文件。但是這個組和實際發起命令的用戶組不一定相同。

stick bit (t /T):又名粘滯位,只有目錄才有的許可權,出現在其他用戶許可權(o)中的執行位置(x)。當一個目錄設置了粘滯位,只有創建了該目錄的用戶才能刪除目錄中的文件,但是其他用戶組和其他用戶也有寫許可權。使用 t 或 T來表示。若沒有設置執行許可權,但是設置了粘滯位,使用 t;若同時設置了執行許可權和粘滯位使用 T。典型的粘滯位使用是 /tmp 目錄,粘滯位屬於一種防寫。

設置特殊許可權:

setuid: chmod u+s filename

setgid: chmod g+s directoryname

stick bit: chmod o+t directoryname

用數字表示特殊許可權,是在基本許可權之上的。濁嘴笨腮說不清楚,看例子:

例子:將上面例子中的log日誌目錄(已有許可權 700)許可權設置為755。特殊許可權是類似 /tmp目錄的 stick bit有效。

特殊許可權 基本許可權

setuid setgid stick bit user group other

0 0 1 rwx rwx rwx

111 000 000

所以,設置特殊許可權(stick bit)的命令應該是:chmod 1755 log

設置特殊許可權後,ls -dl 查看該目錄:drwxr-xr-t 2 gg gg 4096 5月 11 19:05 log ( 注意 other 的 x 位是代表特殊許可權的字母 t )

取消該特殊許可權的命令:chmod 755 log 。如此 stick bit的許可權就沒有了。

再次 ls -dl 查看該目錄: drwxr-xr-x 2 gg gg 4096 5月 11 19:15 log ( 注意最後一位已經變為代表普通許可權的字母x )

需要注意的是,最前面一位 ”1“ 就是特殊許可權位。其他兩個特殊許可權的設置也類似。setuid使用不是無限制的。出於安全目的,只能應用在Linux ELF格式二進制文件上,而不能用於腳本文件。

三、高級許可權

ACL(Access Control List),訪問控制列表是Linux下的的高級許可權機制,可實現對文件、目錄的靈活許可權控制。ACL 允許針對不同用戶、

不同組對同一個目標文件、目錄進行許可權設置,而不受UGO限制。

在一個文件系統上使用ACL需要在掛載文件系統的時候打開ACL功能。而根分區(ROOT)默認掛載的時候支持ACL。

命令:mount -o acl /掛載路徑

例子:mount -o acl /dev/sdb1 /mnt

查看一個文件的ACL設置的命令: getfacl file

(針對一個用戶)為一個文件設置指定用戶的許可權的命令: setfacl -m u:username:rwx filename

(針對一個組)為一個文件設置指定組的許可權的命令: setfacl -m g:groupname:r-x filename

刪除一個ACL設置的命令: setfacl -x u:username filename

;

⑶ 如何讓Linux下非root用戶程序使用小於1024埠

在Linux下,默認埠1024下的程序是要在root下才能使用的,在其他用戶下,如果嘗試使用將會報錯。在有的時候,我們可能考慮程序運行在root帳戶下,可能會給Linux系統帶來安全風險。那如何能夠讓非root用戶運行的程序能夠對外啟用小於1024的埠呢?本文嘗試給出一些方法: x0dx0ax0dx0a第一種方消旅法:x0dx0aSetUIDx0dx0a為用戶的應用程序在執行位設置user ID能夠使程序可以有root許可權來運行,這個方法讓程序能夠像在root下運行有同樣的效果,不過需要非常小心,這種方法同樣會帶來安全風險,特別是當要執行的程序本身存在安全風險。使用的方法是:x0dx0achown root.root /path/to/application #使用SetUID chmod u+s /path/to/application x0dx0ax0dx0a我們可以看到在系統下,/usr/bin/passwd這種文件,就使用了SetUID,使得每個系統的用戶都能用passwd來修改密碼——這是要修改/etc/passwd的文件(而這個只有root有許可權)。x0dx0a既然要使用非root用戶運行程序,目的就是要降低程序本身給系統帶來的安全風險,因此,本方法使用的時候需要特別謹慎。 x0dx0a第二種方法:x0dx0aCAP_NET_BIND_SERVICEx0dx0a從2.1開始,Linux內核有了能力的概念,這使得普通用戶也能夠做只有超級用戶才能完成的工作,這包括使用埠1。x0dx0a獲取CAP_NET_BIND_SERVICE能力,即使服務程序運行在非root帳戶下,也能夠banding到低埠。使用的方法:x0dx0a#設置CAP_NET_BIND_SERVICE setcap cap_net_bind_service =+ep /path/to/application x0dx0ax0dx0aNote:x0dx0a1. 這個方法並不是所有Linux系統通適,內核在2.1之前的並沒有提供,因此你需要檢查要使用此方法所在系統是否支持(Linux must support capacity);x0dx0a2. 另外需要注意的是,如果要運行的程序文件是一個腳本,這個方法是沒有辦法正常工作的(Script won't work)。 x0dx0a第三種方法:x0dx0aPort Forwardingx0dx0a如果要運行的程序有許可權監聽其他埠,那麼這個方法是可以使用的,首先讓程序運行在非root帳戶下,並綁定高於1024的埠,在確保能正常工作的時候,將低埠通過埠轉發,將低埠轉到高埠,從而實現非root運行的程序綁定低埠。要使用此方法可以使用下面的方式:x0dx0a# Enable the IP FORWARD kernel parameter. sysctl -w net.ipv4.ip_forward=1 # Use iptables rules to redirect packets iptables -F -t nat iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to:8088 x0dx0ax0dx0a第一步使用sysctl確保啟用IP FORWARD功能(此功能在Red Hat/CentOS默認是扒橋悉被禁用的),注意,代碼中使用的sysctl設置是臨時性設置,重啟之後將會被重置,如果要長久保存,需要在/etc/sysctl.conf文件內修改:x0dx0a# Default value is 0, need change to 1. # net.ipv4.ip_forward = 0 net.ipv4.ip_forward = 1 x0dx0ax0dx0a然後從文件中載入新的配置x0dx0a# load new sysctl.conf sysctl -p /etc/sysctl.conf # or sysctl -p # default filename is /etc/sysctl.conf x0dx0ax0dx0a第二步就是使用iptables的規春乎則來實現埠轉發到程序所在的埠,示例中我們要將80埠轉發到8088。x0dx0a此種方法能夠比較好的達到我們的目的,我們的程序可以通過非root用戶來運行,並能夠對外提供低埠號的服務。 x0dx0a第四種方法:x0dx0aRINETD2x0dx0a這種方法使用的也是埠轉發,此工具可以將本地埠映射到遠程埠,但此功能對於我們當前的功能來說,有點雞肋,畢竟我們新增了一個額外的程序,這將可能會增加我們系統的風險性。在此不做推薦。

熱點內容
java輸出到文件 發布:2025-03-19 01:49:07 瀏覽:431
光遇國際服安卓和蘋果如何互通 發布:2025-03-19 01:43:03 瀏覽:318
如何加密應用 發布:2025-03-19 01:42:04 瀏覽:619
lol伺服器人數怎麼擠 發布:2025-03-19 01:29:19 瀏覽:840
兄弟連的php 發布:2025-03-19 01:24:25 瀏覽:812
自己做腳本可不可以 發布:2025-03-19 01:20:13 瀏覽:534
33的源碼值 發布:2025-03-19 01:13:25 瀏覽:814
虛榮安卓怎麼充值 發布:2025-03-19 01:12:27 瀏覽:892
如何更改報考密碼 發布:2025-03-19 01:08:12 瀏覽:416
python日期類型 發布:2025-03-19 01:02:28 瀏覽:416