Linux學習筆記
一、建立使用者
用指令新增命令
useradd
passwd
系統新增使用者的標準步驟
編輯/etc/passwd與/etc/group
建立使用者主目錄
從/etc/skel複製檔案與目錄
讓新使用者獲得其主目錄與檔案的擁有許可權
給新使用者一個密碼
______Red Hat Linux預設將使用者密碼儲存在/etc/shadow檔案中。
• passwd檔案預設許可權為644,shadow檔案預設許可權為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/
三、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 的啟動方面 , 一般人最常把 LILO或Grub 放在 MBR 或 Superblock ,假如你把 LILO或Grub 放在 MBR , 那很明顯的,當讀取到 MBR 的時候 , LILO 或Grub就被執行 。 此時 , 你的螢幕上會出現啟動選項接著 , 就進行 Load Kernel的動作。在另一方面來說 ,,假如你把 LILO或Grub安裝在 Superblock , 通常你還會有一個管理開機的程式 , 也許是放在 MBR ( 像 OSBS ) 或者是放在一個單獨的 Partition ( 像 OS/2 的 Boot Manager ) 。 再由這個管理開機的程式去讀取 LILO或Grub , 進而做 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上,不要在grub裡mount
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 --> login --> shell --> 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux 學習筆記Linux筆記
- Linux 學習筆記--程式Linux筆記
- linux學習筆記一Linux筆記
- linux學習筆記二Linux筆記
- Linux學習筆記--viLinux筆記
- linux c 學習筆記Linux筆記
- Linux學習筆記1Linux筆記
- Linux基礎學習-Docker學習筆記LinuxDocker筆記
- Linux 學習筆記--程式管理Linux筆記
- 【Linux學習筆記】reboot命令Linux筆記boot
- Linux ACL學習筆記(zt)Linux筆記
- linux安全學習筆記(轉)Linux筆記
- linux學習筆記---一些命令學習Linux筆記
- Linux學習/TCP程式設計學習筆記LinuxTCP程式設計筆記
- linux學習筆記-day5Linux筆記
- Linux與DNS的學習筆記LinuxDNS筆記
- Linux學習筆記 Day 4~5Linux筆記
- Linux 核心學習筆記-磁碟篇Linux筆記
- 基礎 IO (Linux學習筆記)Linux筆記
- 01_Linux學習筆記(一)Linux筆記
- Linux學習筆記(2)——ls指令Linux筆記
- numpy的學習筆記\pandas學習筆記筆記
- Linux程式執行緒學習筆記Linux執行緒筆記
- opensuse linux操作維護學習筆記Linux筆記
- Linux學習筆記(一)--常用快捷鍵Linux筆記
- Linux 常用命令 學習筆記Linux筆記
- Linux Shell 程式設計學習筆記Linux程式設計筆記
- linux基礎知識學習筆記Linux筆記
- Linux 學習筆記 - 軟體安裝Linux筆記
- IT學習筆記筆記
- 學習筆記筆記
- Linux程式設計學習筆記 | Linux IO學習[2] – 標準IOLinux程式設計筆記
- 【學習筆記】數學筆記
- 《JAVA學習指南》學習筆記Java筆記
- Linux 學習筆記--任務計劃 crontabLinux筆記
- Linux常用命令cp學習筆記Linux筆記
- linux-鳥哥私房菜學習筆記Linux筆記
- Linux學習筆記-軟體安裝管理Linux筆記