Linux學習筆記

mi_zy發表於2013-06-13

一、建立使用者

用指令新增命令

useradd

passwd

系統新增使用者的標準步驟

編輯/etc/passwd/etc/group

建立使用者主目錄

/etc/skel複製檔案與目錄

讓新使用者獲得其主目錄與檔案的擁有許可權

給新使用者一個密碼

______Red Hat Linux預設將使用者密碼儲存在/etc/shadow檔案中。

  passwd檔案預設許可權為644shadow檔案預設許可權為400

  shadow檔案支援密碼過期設定等功能

  shadow檔案中每一行表示一個系統使用者的密碼記錄,用 : 號分隔。

  使用者可以透過authconfig來設定是否使用shadow檔案及md5加密。

當用 useradd 命令來建立一個新使用者帳戶時,它將所有的檔案從 /etc/skel 複製到使用者的新的主目錄中(如果按預設應該在/home下)。這意味著您可以將有幫助的 .bash_profile .bashrc 檔案放在 /etc/skel 中,使新使用者有一個好的開始。

/usr/sbin/useradd使用了一系列預設設定,位於 /etc/default/useradd(如果這個檔案存在的話)。如果 這個檔案不存在,它會使用其內部預設設定,可以用/usr/sbin/useradd -D 來列處這些設定。

如果想對這個預設設定作一些變動,

就要建立一個 /etc/default/useradd(?/etc/login.defs 檔案,並使用和 /usr/sbin/useradd -D輸出一樣的內容。例如:

# /etc/default/useradd 開始
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=
SKEL=/etc/skel
# /etc/default/useradd
結束

所以你可以看到預設的HOME和預設的SKEL目錄。

比如,你希望新建使用者可以直接 startx 就啟動到 gnome 桌面環境,你可以在 skel 目錄下建立一個 .xinitrc 檔案,內容如下:

export LC_ALL="zh_CN.UTF-8"
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE="scim"
eval `dbus-launch --exit-with-session --sh-syntax`
exec gnome-session

因為 .xinitrc X 啟動需要讀取的使用者配置檔案,這樣每個使用者 startx 之後就直接裝載 gnome 了。

 

二、非root使用者startx

OS:redhat9
系統的時候只有X,沒有kde之類的視窗桌面。
root
登入後以非root使用者startx時報:
PAM authentication failed, cannot start X .
Perhaps you do not have console ownership?

解決方法:
touch /var/run/console/
比如 touch /var/run/console/oracle

 

三、Linux程式管理父程式和子程式

http://space.itpub.net/27788822/viewspace-763462

 

四、啟動

   在剛開機時 ,由於 80x86 的特性 CS ( Code Segment ) 這個暫存器中全部都放著 1 IP ( Instruction Pointer ) 這個暫存器 中全部都放著 0 換句話說 CS=FFFF IP=0000 此時 CPU 就依據CS IP 的值 FFFF0H 去執行那個地方所放的指令 。這時候 由於FFFF0H 已經到了高位址的頂端 所以 FFFF0H 這個地方 總是會放一個JMP 指令 ,跳到比較低的位址 接著 ROM BIOS 就會作一些檢查的動作像記憶體 鍵盤 ...... 並在我們俗稱的 UMB ( Upper Memory Block )之中掃描 ,看看是否有合法的 ROM 存在 ( 比如 SCSI 卡上的 ROM ) 。假如有就到裡面去執行一些東西 執行完之後再繼續剛才的行程 到了最後 讀取硬碟上的第一個 sector 在這裡 我假設各位由硬碟啟動。因此 就硬碟的構造而言 它的第一個 sector 稱為 MBR ( Master Boot Record ) 因為一個 sector 512 bytes MBR 512 bytes 可分為兩個部份 ,第一個部份為 Pre-Boot 佔了 446 bytes 第二部份是 Partition Table 佔了 66 bytes Pre-Boot 區的作用之一 ,就是去看看哪個 Partition 被標成 Active 然後去讀那個 Partition Boot

       Linux 的啟動方面 , 一般人最常把 LILOGrub 放在 MBR Superblock ,假如你把 LILOGrub 放在 MBR 那很明顯的,當讀取到 MBR 的時候 LILO Grub就被執行 此時 你的螢幕上會出現啟動選項接著 就進行 Load Kernel的動作。在另一方面來說 ,,假如你把 LILOGrub安裝在 Superblock , 通常你還會有一個管理開機的程式 也許是放在 MBR ( OSBS ) 或者是放在一個單獨的 Partition ( OS/2 Boot Manager ) 再由這個管理開機的程式去讀取 LILOGrub 進而做 Load Kernel 的動作 。到了目前為止 ,  Kernel load memory 中之後 ,接著進行一連串 probe 周邊的動作 ,像串列埠、並口 軟盤 音效卡 硬碟 光碟機 ...... 接著 mount root partition 在這之後 kernel 會起動 init 這個 process init 這個 process PID 1 ,它是所有 process 的祖先。

        第一階段即BIOS從啟動扇區中讀入IPL(初始化程式引導工具)這一過程。因為MBR的空間太小,所以啟動引導工具往往還需要從其他地方進一步讀入資料,即所謂第二階段。這通常是一個可以做選擇的互動介面。

        grub.conf的範例:

timeout=10                          #等待10秒自動進入預設作業系統

splashimage=(hd0,0)/grub/splash.xpm.gz    #grub啟動背景畫面

default=0                             #預設進入第一個標題

title Red Hat Linux (2.4.20-18)          #Red Hat Linux標題

     root (hd0,0)                          #根檔案系統位置

     kernel  /vmlinuz-2.4.20-18 ro root=LABEL=/ #核心位置與核心載入引數

     initrd  /initrd-2.4.20-18.img              #啟動initrd ram  

title windows                         #另一個作業系統的標題

     rootnoverify (hd0,1)              #作業系統存放在hd0,1上,不要在grubmount

     chainloader +1                      #hd0,1的第一個扇面啟動

        init是所有程式的父程式。在核心載入完成後總是先啟動。

        init 這個 process 會依據 /etc/inittab 中所記載的內容進入不同的 run-level 並啟動不同的 process 所以 inittab 的重要性可見一斑 那什麼叫 run-level ? 所謂 run-level 就是系統中定義了許多不同的 level(等級) ,而系統會隨著 level 的不同而去啟動不同的資源 。現在就讓我們來看一下 /etc/inittab 中的內容
      
/etc/inittab 這個檔案中,每一列是一個進入點 ,假如我們仔細觀察每一列的話, 那我們就會很容易的發現 /etc/inittab的每一列可以被 ” : “ 這個字元分成好幾個欄位 這幾個欄位的格式如下

          id : runlevels : action : process

          而它們代表的意義分別如下

          id : 由兩個獨特的字元所組成的辨示符號 在比較新的 UNIX 系統中 已不受只能有兩個字元的限制

          runlevels : 指出下面一個欄位中的 action 以及 下下個欄位中的 process會在那些 runlevel 中被執行 而在正常的啟動程式之後 Superuser 可以使用telinit 這個指令來改變系統的 runlevel 又因為在 LINUX 中, runlevel 的預設值是 3 ( 等一下就會看到 ) 所以 只有
那些每一列中 runlevel 那欄有 3 這個值的 後面的 process才會被啟動 所以 我們就可以想像的到,由於系統的runlevel 不同,所起動的 process 也不盡相同 ,所以系統起動的資源在每個不同的 runlevel 就會有差異存在。

          action : 這個欄位有一點複雜 在這個欄位中記錄著 init 在啟動相對應的process process 所採取的動作 , 而合法的動作有下面幾項:

          initdefault : 指出系統在啟動時,預設進入的 run-level ,比如說 ,我們可以在 /etc/inittab 中找到下面這一列 : id:3:initdefault: 很明顯的 ,系統將在啟動時,進入 runlevel 3 的模式 。當然 ,你可以把 3 改成 4 試試看 ,如果你改成了 4 ,那將會執行 /etc/rc.d/rc.4

          sysinit : 在系統起動時,這個 process 會被執行。而所有 process前的 action 中有 boot bootwait process 必須等到這些 action sysinit process 執行完之後它們才能夠執行。

          wait : 在起動一個 process 之後,若要再起動另一個 process 則必需等到這個 process 結束之後才能繼續。

          respawn : 代表這個 process 即使在結束之後,也會重新被啟動,最典型的例子就是 getty 看看下面的迴圈

          -- getty --&gt login --&gt shell --&gt logout -- 

               ^ |                                        | 

                 |

           即使在 getty 結束之後 , 它也會重新被啟動

           ctrlaltdel : 想必有人會以鍵盤上的 Ctrl Alt Del 這三個鍵來達到使系統 shutdown 的目的 , 現在我們果然在/etc/inittab 中看到了這一列

            ca::ctrlaltdel:/sbin/shutdown -t3 -rf now

            所以說 ,當我們按下這三個鍵的時候 init 會收到SIGINT 這個 signal 接著就執行 shutdown 的動作。不過,我們最好不要養成按 Ctrl-Alt-Del 來使系統shutdown 的習慣 尤其在單使用者多工的作業系統, OS/2 甚至 Windows 98 shutdown 幾乎都是標準的關機程式了, 更何況是多使用者多工的 LINUX 所以 shutdown 這個指令是一定要熟悉的。

           除了上面的幾個 action 之外 另外還有一些合法的 action 但這些 action 並不需要太注意 要用的時候再利用 man init 去查詢就可以了。

rc.local 會在各 run-level  script 執行完之後再執行。 您可以將自己想在開機時處理的動作加在這個 script 之中。

 

五、強制位

強制位與冒險位新增在執行許可權的位置上。如果該位置上原已有執行許可權。則強制位與冒險位以小寫字母的方式表示,否則,以大寫字母表示。

chmod 4511    -rwS--x—x      suid、檔案屬主具有讀、寫的許可權,所有其他使用者具有執行的許可權

上面的表中有具有這樣許可權的檔案:rwS --x -- x,其中S為大寫。它表示相應的執行許可權位並未被設定,這是一種沒有什麼用處的suid設定可以忽略它的存在。

suid 意味著如果某個使用者對屬於自己的程式設定了這種許可權,那麼其他使用者在執行這程式時也會具有其檔案擁有者相應許可權。於是,如果超級使用者( root )的某一程式設定了這樣的許可權,那麼其他普通使用者在執行它的期間也同樣具有超級使用者的許可權。同樣的原則也適用於sguid,執行相應程式的使用者將具有該檔案所屬使用者組的許可權。

為什麼要使用suid/guid

為什麼要使用這種型別的指令碼?這裡有一個很好的例子。你管理著幾個大型的資料庫系統,而對它們進行備份需要有系統管理許可權。你寫了幾個指令碼,並設定了它們的suid,這樣你指定的一些使用者只要執行這些指令碼就能夠完成相應的工作,而無須以資料庫管理員的身份登入,以免不小心破壞了資料庫伺服器。透過執行這些指令碼,他們可以完成資料庫備份及其他管理任務,而且在這些指令碼執行結束之後,他們就又回覆到他們作為普通使用者的許可權。另一個例子是/bin/passwd ,要讀寫/etc/passwd檔案需要超級使用者許可權,但一般使用者也需要隨時可以改變自己的密碼,所以/bin/passwd就設定了suid,當使用者該自己密碼的時侯就擁有了超級使用者許可權。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7970627/viewspace-763842/,如需轉載,請註明出處,否則將追究法律責任。

相關文章