當前位置:ag真人国际官网-ag旗舰厅官方网站 » 操作系統 » linux用戶程序

linux用戶程序-ag真人国际官网

發布時間: 2024-06-25 07:36:53

linux root用戶怎麼以制定的用戶去執行某個程序。

1、輸入用戶名和密碼,登錄虛擬機。

② linux下的shell是什麼

什麼是shell
shell是用戶和linux
操作系統
之間的
介面
。linux中有多種shell,其中預設使用的是bash。本章講述了shell的工作原理,shell的種類,shell的一般操作及bash的
特性

什麼是shell
linux系統的shell作為操作系統的
外殼
,為用戶提供使用操作系統的介面。它是
命令語言
、命令
解釋程序

程序設計語言
的統稱。
shell是用戶和
linux內核
之間的介面
程序
,如果把linux內核想像成一個
球體
的中心,shell就是圍繞
內核
的外層。當從shell或其他程序向linux傳遞命令時,內核會做出相應的反應。
shell是一個命令語言
解釋器
,它擁有自己內建的shell命令集,shell也能被系統中其他
應用程序
所調用。用戶在提示符下輸入的命令都由shell先解釋然後傳給linux核心。
shell是一種具備
特殊功能
的程序,
它是介於使用者和
unix/linux
操作系統之核心
程序(kernel)間的一個介面。為什麼我們說
shell
是一種介於系統核心程序與使用者
間的中介者呢?讀過操作系統概論的讀者們都知道操作系統是一個
系統資源
的管理者與分
配者,當您有需求時,您得向系統提出;從操作系統的角度來看,它也必須防止使用者因
為錯誤的操作而造成系統的傷害?眾所周知,對
計算機
下命令得透過命令(command)

是程序(program);程序有編譯器(compiler)將程序轉為
二進制代碼
,可是命令呢?
其實shell
也是一支程序,它由
輸入設備
讀取命令,再將其轉為計算機可以了解的機械碼,
然後執行它。
各種操作系統都有它自己的
shell,以
dos
為例,它的
shell
就是
command.com文
件。如同
dos
下有
ndos,4dos,drdos
等不同的命令解譯程序可以取代標準的
command.com
,unix
下除了
bourne
shell(/bin/sh)
外還有
c
shell(/bin/csh)、
korn
shell(/bin/ksh)、bourne
again
shell(/bin/bash)、tenex
c
shell(tcsh)
等其它的
shell。unix/linux將
shell
獨立於核心程序之外,
使得它就如同一般的應用
程序,
可以在不影響操作系統本身的情況下進行修改、更新版本或是添加新的功能。
有一些命令,比如改變工作目錄命令cd,是包含在shell
內部
的。還有一些命令,例如
拷貝
命令cp和移動命令rm,是存在於
文件系統
中某個目錄下的單獨的程序。對用戶而言,不必關心一個命令是建立在shell內部還是一個單獨的程序。
shell首先檢查命令是否是
內部命令
,若不是再檢查是否是一個應用程序(這里的應用程序可以是linux本身的
實用程序
,如ls和rm,也可以是購買的商業程序,如xv,或者是
自由軟體
,如emacs)。然後shell在搜索
路徑
里尋找這些應用程序(搜索路徑就是一個能找到可執行程序的目錄列表)。如果鍵入的命令不是一個內部命令並且在路徑里沒有找到這個
可執行文件
,將會顯示一條錯誤信息。如果能夠成功找到命令,該內部命令或應用程序將被分解為
系統調用
並傳給linux內核。
shell的另一個重要特性是它自身就是一個解釋型的程序設計語言,shell程序設計語言支持絕大多數在
高級語言
中能見到的程序
元素
,如
函數

變數

數組
和程序控制結構。shell
編程語言
簡單易學,任何在提示符中能鍵入的命令都能放到一個可執行的shell程序中。
當普通用戶成功登錄,系統將執行一個稱為shell的程序。正是shell進程提供了命令行提示符。作為默認值(turbolinux系統默認的shell是bash),對普通用戶用「$」作提示符,對超級用戶(root)用「#」作提示符。
一旦出現了shell提示符,就可以鍵入
命令名稱
及命令所需要的
參數
。shell將執行這些命令。如果一條命令花費了很長的時間來運行,或者在屏幕上產生了大量的輸出,可以從
鍵盤
上按ctrl c發出中斷
信號
來中斷它(在正常結束之前,中止它的執行)。
當用戶准備結束登錄對話進程時,可以鍵入logout命令、exit命令或文件結束符(eof)(按ctrl d實現),結束登錄。

③ 在所用的linux系統上,根目錄下有哪些內容各自的功能是什麼

/root :root用戶的home目錄;/dev:設備文件;/media:媒體;/mnt:掛載;/usr:用戶程序;/bin:系統應用程序;/user/bin:用戶應用程序;/home:其他用戶的家目錄;/boot:啟動文件;/lib:庫文件。

linux系統有3種類型文件,分別是普通文件,目錄文件和設備文件。相同是它們都是文件,都有一個文件名和i節點號。

(3)linux用戶程序擴展閱讀:

linux系統具有一系列顯著特點,包括:與unix兼容;自由軟體,源碼公開;性能高,安全性強;便於定製和再開發;互操作性強;多用戶和多任務。

linux繼承了unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。linux有上百種不同的發行版,如基於社區開發的debian、archlinux,和基於商業開發的red hat enterprise linux、suse、oracle linux等。

④ 如何讓linux下非root用戶程序使用小於1024埠

在linux下,默認埠1024下的程序是要在root下才能使用的,在其他用戶下,如果嘗試使用將會報錯。在有的時候,我們可能考慮程序運行在root帳戶下,可能會給linux系統帶來安全風險。那如何能夠讓非root用戶運行的程序能夠對外啟用小於1024的埠呢?本文嘗試給出一些方法:

第一種方法:
setuid
為用戶的應用程序在執行位設置user id能夠使程序可以有root許可權來運行,這個方法讓程序能夠像在root下運行有同樣的效果,不過需要非常小心,這種方法同樣會帶來安全風險,特別是當要執行的程序本身存在安全風險。使用的方法是:
chown root.root /path/to/application #使用setuid chmod u s /path/to/application

我們可以看到在系統下,/usr/bin/passwd這種文件,就使用了setuid,使得每個系統的用戶都能用passwd來修改密碼——這是要修改/etc/passwd的文件(而這個只有root有許可權)。
既然要使用非root用戶運行程序,目的就是要降低程序本身給系統帶來的安全風險,因此,本方法使用的時候需要特別謹慎。
第二種方法:
cap_net_bind_service
從2.1開始,linux內核有了能力的概念,這使得普通用戶也能夠做只有超級用戶才能完成的工作,這包括使用埠1。
獲取cap_net_bind_service能力,即使服務程序運行在非root帳戶下,也能夠banding到低埠。使用的方法:
#設置cap_net_bind_service setcap cap_net_bind_service = ep /path/to/application

note:
1. 這個方法並不是所有linux系統通適,內核在2.1之前的並沒有提供,因此你需要檢查要使用此方法所在系統是否支持(linux must support capacity);
2. 另外需要注意的是,如果要運行的程序文件是一個腳本,這個方法是沒有辦法正常工作的(script won't work)。
第三種方法:
port forwarding
如果要運行的程序有許可權監聽其他埠,那麼這個方法是可以使用的,首先讓程序運行在非root帳戶下,並綁定高於1024的埠,在確保能正常工作的時候,將低埠通過埠轉發,將低埠轉到高埠,從而實現非root運行的程序綁定低埠。要使用此方法可以使用下面的方式:
# 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

第一步使用sysctl確保啟用ip forward功能(此功能在red hat/centos默認是被禁用的),注意,代碼中使用的sysctl設置是臨時性設置,重啟之後將會被重置,如果要長久保存,需要在/etc/sysctl.conf文件內修改:
# default value is 0, need change to 1. # net.ipv4.ip_forward = 0 net.ipv4.ip_forward = 1

然後從文件中載入新的配置
# load new sysctl.conf sysctl -p /etc/sysctl.conf # or sysctl -p # default filename is /etc/sysctl.conf

第二步就是使用iptables的規則來實現埠轉發到程序所在的埠,示例中我們要將80埠轉發到8088。
此種方法能夠比較好的達到我們的目的,我們的程序可以通過非root用戶來運行,並能夠對外提供低埠號的服務。
第四種方法:
rinetd2
這種方法使用的也是埠轉發,此工具可以將本地埠映射到遠程埠,但此功能對於我們當前的功能來說,有點雞肋,畢竟我們新增了一個額外的程序,這將可能會增加我們系統的風險性。在此不做推薦。

熱點內容
發布:2024-07-17 17:13:27 瀏覽:872
phpjava交互 發布:2024-07-17 16:58:57 瀏覽:356
resin下jsp不能正常編譯 發布:2024-07-17 16:34:44 瀏覽:229
sqlserver如何切換主備伺服器 發布:2024-07-17 16:23:02 瀏覽:299
mc18伺服器ip 發布:2024-07-17 16:23:02 瀏覽:379
仙境傳說手游腳本 發布:2024-07-17 16:09:24 瀏覽:691
matlab命令窗口和新建腳本 發布:2024-07-17 15:51:26 瀏覽:375
建ftp文件夾 發布:2024-07-17 15:51:26 瀏覽:955
魔獸撿物腳本 發布:2024-07-17 15:27:56 瀏覽:130
開發ip伺服器 發布:2024-07-17 15:24:42 瀏覽:388
网站地图