linux的多使用者

2021-09-21 04:18:27 字數 2037 閱讀 9349

linux繼承了unix的很大一部分東西,自設計開始就是多使用者的,那麼這個多使用者到底體現在什麼地方呢?多使用者和linux作業系統的設計又有何關聯呢?

首先看看原始的多使用者,所謂多使用者就是有很多人公用一台機器,這在計算機開始的年代是很必要的,那個時候機器資源緊缺。於是一種對於計算機的新的使用方式開始流行,在那以前,機器的運作和操作員的使用是一體的,也就是說像織布機一樣,乙個工人操作一台織布機,當計算真的變成一種資源以後,共享的概念就出來了,大家不再像使用織布機那樣使用計算機,而是把計算機當成一種共享的資源來使用,於是,機器的運作和操作員的操作分離開來,於是終端出現了,終端代表的是操作員,它其實和操作員互動,每個操作員擁有乙個終端,不再擁有整個機器,操作員只需要和終端互動,然後終端**操作員和計算機互動,計算機分離成了主機加終端的形式,每個終端上的操作員都會認為自己擁有整個機器,此時還有乙個創舉就是多道程式設計,這裡先不談。多使用者作業系統的歷史開始了。使用者一開始就和終端有著血肉關聯,於是直到現在的類unix作業系統比如linux上的多使用者也和終端相關。

有人會有疑問,當時因為計算機稀缺才引入多使用者,現在幾乎是人手一台,還有必要多使用者嗎?事實上如果就pc而言是有點沒有必要,正因如此,windows的多使用者就沒有linux的多使用者來的更純粹;但是在大型伺服器上多使用者還是必要的,既然是伺服器,那麼它執行的任務就是多樣的,複雜的,執行很多服務是很正常的,乙個使用者從配置到管理所有服務是不現實的,對於資料庫伺服器而言更是如此,需要不同的使用者來管理和配置不同的功能,這樣的話,多使用者是必須的;對於安全來說多使用者也是必要的,將整台機器的所有許可權隨意交給乙個人是危險的,更多的使用者使用機器僅僅需要一部分子功能而不需要整個許可權,這時更需要多使用者。前面說過使用者和終端是血肉關聯的,現在老式的終端已經很少了,顯示器和鍵盤取代了它們,對於顯示器而言,現代的linux和unix提供了虛擬終端,alt+fn切換的就是虛擬終端,可能這裡的術語不太準確,總之alt+fn切換的控制台的功能就是原來終端的功能。

以上就是unix以及類unix作業系統多使用者的表象,那麼其作業系統架構是怎麼對其進行支援的呢?linux作業系統將使用者id(uid)作為乙個屬性賦予程序,記住,程序在unix中十分重要,在計算機的原始階段,程序就代表乙個使用者任務,而計算機的功能就是完成使用者任務,在多道程式設計的年代,程序更昇華成作業系統下的乙個同等重要的概念。在linux中程序幾乎就是一切,程序擁有了uid,作業系統的多使用者就是必然結果了,參見我前面的文章《linux的自動登入--理解linux的方式》和《linux守護程序--依然是程序》可以看出linux開始就以/sbin/init程序執行,使用者是root使用者,那麼init程序的uid肯定就是root使用者的uid了,接下來由init程序啟動的程序都是root的,除非呼叫了setuid改變之,而改變uid的行為就在非root的普通使用者登入時。繼承傳統unix終端的思想,shell就是終端上執行的代表程序,既然shell某種意義上代表了終端,那麼乙個shell啟動的所有程式就代表了乙個會話,這就是會話期的由來,一般意義上,乙個shell啟動的所有程序共享乙個會話,實際上也正是這樣,這樣不同的shell區分了不同的使用者或者同一使用者的不同會話。記住linux上的使用者的實質就是會話,其實也就是乙個終端shell,還記得前面文章談守護程序時說的嗎,守護程序不屬於任何使用者,那麼它就要單獨占用乙個會話。

linux的程序架構使得上述的多使用者得以簡單的實現,理解了linux的程序架構就等於理解了linux的多使用者,linux的多使用者是基於程序的,我們說不同的程序可能屬於不同的使用者,那個使用者的shell執行的程序就屬於哪個使用者,因為執行程序是靠fork/exec完成的,在fork時會繼承呼叫者的uid,就是這麼簡單。會話是終端的,因為不同的終端可能由同乙個使用者登入,但是卻是不同的會話,因此在linux上,根本不存在windows上的一些問題,比如經常有人問在xp下如何多個使用者同時登入或者相同的使用者同時登入,然後回答就是很繁瑣的修改登錄檔之類的,其實windows也是多使用者的,但是其實現卻沒有linux的這麼直接和簡單,windows的多使用者是基於角色的,而不是基於程序的,在windows server 2003上,看起來幾乎和linux一樣實現了真正的多使用者多會話管理機制,但是其實現卻是堆積而成的,不像linux繼承於unix,而後者在設計的時候就設計成支援多個終端,多終端最終和由此而成的fork/exec以及uid/gid/sid的程序架構成就了真正的多使用者作業系統。

linux的多使用者

linux繼承了unix的很大一部分東西,自設計開始就是多使用者的,那麼這個多使用者到底體現在什麼地方呢?多使用者和linux作業系統的設計又有何關聯呢?首先看看原始的多使用者,所謂多使用者就是有很多人公用一台機器,這在計算機開始的年代是很必要的,那個時候機器資源緊缺。於是一種對於計算機的新的使用方...

Linux 多使用者系統

linux os是基於unix系統開發而來,我們知道計算機是昂貴與稀缺的資源,所以一台計算機就要滿足多個使用者同時使用,即多使用者的系統的思想。實現方式 通過分時共享的策略。即讓多個使用者可以同時使用一台計算機。該分時共享策略,使得機器即使只有乙個使用者,也可以同時執行多個任務,響應多個程序。lin...

Hadoop多使用者配置

0.hadoop多使用者配置的背景。hadoop多使用者配置的目的就是多個hadoop使用者可以共同使用hdfs,但是只能操作屬於自己的空間,不能跨使用者空間操作 當然 tmp是屬於大家的,任何使用者都會對這個資料夾有寫操作 hadoop多使用者配置,相當於給每個使用者乙個hadoop客戶端,每個使...