導航:首頁 > 源碼編譯 > selinux源碼

selinux源碼

發布時間:2022-04-29 19:39:50

A. linux系統中opt 、selinux 、srv、 media這些文件夾是做什麼用的

otp 是第三方軟體的存放目錄
selinux 是linux 下強制存取控制的實現 一般用來保護apache
srv 是存放系統提供服務站點的數據
media 是存放即插即用 設備的 掛載點。 比如USB 設備 自動在這個目錄下創建一個目錄

因為你沒有對 文件所對應的內容進行操作 所以他是空的 希望樓主滿意 !

B. linux下的root,bin, cdrom,etc,initrd,lib分別主要放哪些文件的啊

總體的,不好歸類的

/media 用來掛載usb存儲設備,DVD, CD-ROM等
/mnt 用來臨時掛載文件系統,可插拔的設備應該掛載到/media上去
/home 除root之外的用戶目錄的默認所在地
/root root用戶目錄
/bin 最常用的命令
/sbin 系統管理員使用的命令(sbin=system bin)
/usr/local 使用源碼安裝的話,一般把prefix目錄指定到這里,如/usr/local/ruby
/usr/share/applications desktop文件是桌面的菜單項
~/.gnome*,~/.gconf* gnome面板的個人配置信息,當gnome面板亂了,可以嘗試刪除這些文件來恢復默認面板

/boot目錄,kernel相關部分

/boot/symvers-%{KRELEASE}.gz 保存著內核中所有符號的crc值
/boot/System.map-%{KRELEASE} 給kernel使用的符號表(symbol table)
/boot/vmlinuz-%{KRELEASE} 可引導的、壓縮的內核
/boot/initrd-%{KRELEASE}.img 包含了支持 Linux 系統兩階段引導過程所需要的必要可執行程序和系統文件
/boot/config-%{KRELEASE} 包括kernel的make config
/boot/message cpio格式的打包文件,存放Grub的配置信息,裡麵包括了圖片,文字說明等內容
/boot目錄,grub配置

/boot/grub/menu.lst 一個鏈接文件,真實文件是grub.conf
/boot/grub/grub.conf grub的配置文件
/boot/grub/device.map 設備的映射文件
/boot/grub/splash.xpm.gz grub開機畫面的gzip壓縮包
/boot/grub/stageN 一般有stage1和stage2,是grub的核心,受限於mbr512位元組的大小限制,所以切開成幾個,stage1是用來載入stage2的
/boot/grub/XXX_stage1_5 stage2文件較大,一般存放於文件系統中,需要XXX_stage1_5來識別各種各樣的文件系統
/etc目錄,系統用戶/用戶組

/etc/passwd 存放所有系統用戶及相關信息
/etc/shadow 存放所有系統用戶的密碼信息
/etc/group 存放所有系統用戶組及相關信息
/etc/gshadow 存放所有系統用戶組的密碼信息
/etc目錄,系統啟動流程相關

/etc/issue 發行版信息
/etc/redhat-release redhat版本信息

/etc/inittab 系統初始化配置
/etc/init.d 存放服務腳本的地方
/etc/rc[0-6S].d 每個運行級別對應的服務,里邊的腳本都是鏈接到/etc/init.d目錄
/etc/rc rc啟動腳本
/etc/rc.local 在所有init腳本結束後調用
/etc/rc.sysinit 在系統啟動時運行一次
/etc/profile 環境變數配置
/etc/profile.d 保存一些腳本,可在/etc/profile中調用
~/.bash_profile 針對某個用戶的配置,會調用.bash_rc
~/.bashrc 針對某個用戶的配置,會調用/etc/bashrc
/etc/bashrc 使用bash時,可設置全局環境配置
~/.bash_history 命令的歷史記錄
~/.bash_logout 用戶退出時執行
/etc/xinetd.conf xinetd的配置文件
/etc/xinetd.d 存放xinetd服務的地方
/etc目錄,基本應用配置相關

/etc/skel 存放用戶文件的「骨架」,當一個用戶創建的時候,里邊的文件就會拷貝到相應的home目錄
/etc/X11 存放X Window的系統配置文件,例如xorg.conf
/etc/DIR_COLORS ls的時候,文件/文件夾顯示的顏色
/etc/mtab 記錄目前掛載的文件系統信息
/etc/fastboot 由shutdown -f 所產生的 ,在重啟之後, 系統會去檢查這個文件是否存在以決定是否要執行fsck
/etc/nologin 系統關閉的時候自動產生,里邊放著shutdown message。在這個時候如果有用戶企圖登錄,就會列印出這個文件存放的message,然後阻止你登錄
/etc/fstab 默認的文件系統掛載情況
/etc/virc vi的配置

/etc/vimrc vim的配置

/etc/wgetrc wget的配置
/etc/yum.conf yum的配置

/etc/yum.repos.d yum源的存放位置
/etc/kmp.conf kmp內核的配置文件

/etc/my.cnf mysql的配置文件

/etc/ssh ssh的配置文件目錄,重要的有sshd_config

/etc/syslog.conf syslog的配置文件

/etc/updatedb.conf updatedb的配置文件

/etc/mtools.conf mtools配置,用於在*UNIX系統中直接訪問dos/win文件系統
/etc/sysctl.conf sysctl預載入的配置文件
/etc/moprobe.conf modprobe的配置文件
/etc/ld.so.conf 載入動態鏈接庫的配置文件,默認會載入ld.so.conf.d里邊的配置
/etc/ld.so.conf.d 存放動態鏈接庫的配置文件
/etc/ld.so.cache 動態鏈接庫的緩存,二進制文件,可以通過ldconfig --print-cache查看
/etc/services 網路服務列表(服務名,埠,協議等)
/etc目錄,域名解析,主機訪問控制

/etc/host.conf 定義DNS客戶端主機發出域名解析的處理順序,默認是先查看/etc/hosts文件,再發送遠程請求
/etc/hosts 自定義ip-域名解析
/etc/resolv.conf DNS伺服器地址
/etc/hosts.allow 和hosts.deny一起用來作為tcpd伺服器的配置文件,tcpd伺服器可以控制外部IP對本機服務的訪問。hosts.allow控制可以訪問本機的IP地址
/etc/hosts.deny 控制禁止訪問本機的IP。如果和hosts.allow的配置有沖突,以hosts.deny為准
/etc目錄,定時任務控制

/etc/crontab cron任務的配置文件,一般在里邊配置有cron.hourly,cron.daily,cron.weekly和cron.monthly
/etc/cron.d 如果你要在特殊的時間使用crontab,可以把配置放到文件夾里邊,配置的格式和/etc/crontab一樣
/etc /cron.daily 每天定時任務
/etc/cron.hourly 每小時定時任務
/etc/cron.monthly 每月定時任務
/etc/cron.weekly 每星期定時任務
/etc/cron.allow 指定那些用戶可以使用crontab
/etc/cron.deny 指定哪些用戶禁止使用crontab,如果文件存在且為空,所有人都可以使用,如果文件不存在,那麼只有root可以使用
/etc/at.allow 指定那些用戶可以使用at
/etc/at.deny 指定哪些用戶禁止使用at,如果文件存在且為空,所有人都可以使用,如果文件不存在,那麼只有root可以使用
/dev目錄 硬體設備信息
/dev/hd[a-z] 第幾個IDE硬碟
/dev/tty[0-9] 第幾個虛擬控制台
/dev/sd[a-z] 第幾個SCSI或SATA硬碟
/dev/zero 一個無窮盡地提 供0(NULL)的設備,可以用來初始化文件
/dev/null 一個空設備,可以向它輸出任何數據,而任何寫入它的輸出都會被拋棄。如果不想讓消息以標准輸出顯示或寫入文件,那麼可以將消息重定向到位桶
/dev/stderr 鏈接文件,指向/proc/self/fd/2(標准錯誤)
/dev/stdin 鏈接文件,指向/proc/self/fd/0(標准輸入)
/dev/stdout 鏈接文件,指向/proc/self/fd/1(標准輸出)
/dev/console 系統控制台,也就是直接和系統連接的監視器。如果你用cat查看該設備,並敲入一些內容,可以看到在屏幕上回顯
/dev/fd[0-9] 第幾個軟碟機設備
/dev/st SCSI磁帶驅動器
/dev/pty 提供遠程登陸偽終端支持。在進行Telnet登錄時就要用到該設備
/dev/ttys 計算機串列介面,對於DOS來說就是com1口

/dev/cua 計算機串列介面,與數據機一起使用的設備
/proc目錄 虛擬文件系統

/proc/apm Advanced Power Management(APM)系統信息,與apm命令相關
/proc/buddyinfo 每個內存區中的每個order有多少塊可用,和內存碎片問題有關
/proc/cmdline 啟動時傳遞給kernel的參數信息
/proc/cpuinfo cpu的信息
/proc/crypto 內核使用的所有已安裝的加密密碼及細節
/proc/devices 已經載入的設備並分類
/proc/dma 已注冊使用的ISA DMA頻道列表
/proc/execdomains Linux內核當前支持的execution domains
/proc/fb 幀緩沖設備列表,包括數量和控制它的驅動
/proc/filesystems 內核當前支持的文件系統類型
/proc/interrupts x86架構中的每個IRQ中斷數
/proc/iomem 每個物理設備當前在系統內存中的映射
/proc/ioports 一個設備的輸入輸出所使用的注冊埠范圍
/proc/kcore 代表系統的物理內存,存儲為核心文件格式,里邊顯示的是位元組數,等於RAM大小加上4kb
/proc/kmsg 記錄內核生成的信息,可以通過/sbin/klogd或/bin/dmesg來處理
/proc/loadavg 根據過去一段時間內CPU和IO的狀態得出的負載狀態,與uptime命令有關
/proc/locks 內核鎖住的文件列表
/proc/mdstat 多硬碟,RAID配置信息(md=multiple disks)
/proc/meminfo RAM使用的相關信息
/proc/misc 其他的主要設備(設備號為10)上注冊的驅動
/proc/moles 所有載入到內核的模塊列表
/proc/mounts 系統中使用的所有掛載
/proc/mtrr 系統使用的Memory Type Range Registers (MTRRs)
/proc/partitions 分區中的塊分配信息
/proc/pci 系統中的PCI設備列表
/proc/slabinfo 系統中所有活動的 slab 緩存信息
/proc/stat 所有的CPU活動信息
/proc/sysrq-trigger 使用echo命令來寫這個文件的時候,遠程root用戶可以執行大多數的系統請求關鍵命令,就好像在本地終端執行一樣。要寫入這個文件,需要把/proc/sys/kernel/sysrq不能設置為0。這個文件對root也是不可讀的
/proc/uptime 系統已經運行了多久
/proc/swaps 交換空間的使用情況
/proc/version Linux內核版本和gcc版本
/proc/bus 系統匯流排(Bus)信息,例如pci/usb等

/proc/driver 驅動信息
/proc/fs 文件系統信息
/proc/ide ide設備信息
/proc/irq 中斷請求設備信息
/proc/net 網卡設備信息
/proc/scsi scsi設備信息
/proc/tty tty設備信息
/proc/net/dev 顯示網路適配器及統計信息
/proc/vmstat 虛擬內存統計信息
/proc/vmcore 內核panic時的內存映像
/proc/diskstats 取得磁碟信息
/proc/schedstat kernel調度器的統計信息

/proc/zoneinfo 顯示內存空間的統計信息,對分析虛擬內存行為很有用

/proc目錄, 進程N的信息

/proc/N pid為N的進程信息
/proc/N/cmdline 進程啟動命令
/proc/N/cwd 鏈接到進程當前工作目錄
/proc/N/environ 進程環境變數列表
/proc/N/exe 鏈接到進程的執行命令文件
/proc/N/fd 包含進程相關的所有的文件描述符
/proc/N/maps 與進程相關的內存映射信息
/proc/N/mem 指代進程持有的內存,不可讀
/proc/N/root 鏈接到進程的根目錄
/proc/N/stat 進程的狀態
/proc/N/statm 進程使用的內存的狀態
/proc/N/status 進程狀態信息,比stat/statm更具可讀性
/proc/self 鏈接到當前正在運行的進程
/var目錄 存放經常變化數據的地方

/var/lib/rpm 存放大多數rpm相關的文件
/var/cache/yum yum升級時下載的rpm文件的臨時存放地,還包括系統中rpm包的頭信息
/var/spool/cron/$username 每個用戶自定義的cron任務,可以使用crontab或vi來操作
/var/lock 一般用來存放文件鎖

/var/log 一般用來存放日誌文件
/var/run 一般用來存放pid文件
/var/crash 一般是存放系統崩潰時產生的信息

/var/cache 一般用來存放緩存信息,例如yum package的緩存

/etc/sysconfig目錄 系統基本配置

/etc/sysconfig/amd 為amd提供操作參數,用來自動mount/unmount文件系統
/etc/sysconfig/apmd 由apmd使用來配置電源設置

/etc/sysconfig/arpwatch 在啟動的時候傳遞給arpwatch守護進程的參數
/etc/sysconfig/authconfig 設置主機使用的驗證方式
/etc/sysconfig/autofs 自動掛載設備的自定義選項
/etc/sysconfig/clock 系統硬體時鍾的設置
/etc/sysconfig/desktop 設置新用戶的桌面和進入運行級別5所使用的顯示管理器
/etc/sysconfig/dhcpd 在啟動的時候傳遞給dhcpd守護進程的參數
/etc/sysconfig/gpm 在啟動的時候傳遞給gpm守護進程的參數
/etc/sysconfig/hwconf 列出kudzu檢測到的所有硬體
/etc/sysconfig/i18n 默認系統語言,系統支持的所有語言,默認系統字體
/etc/sysconfig/init 系統啟動時的顯示方式
/etc/sysconfig/ip6tables-config 在系統啟動或者ip6tables服務啟動時,內核用來設置IPv6包過濾

/etc/sysconfig/iptables-config 在系統啟動或者iptables服務啟動時,內核用來設置包過濾
/etc/sysconfig/keyboard 控制鍵盤的行為
/etc/sysconfig/kudzu 在啟動的時候通過kudzu觸發一次安全的系統硬體探查
/etc/sysconfig/named 在啟動的時候傳遞給named守護進程的參數
/etc/sysconfig/netmp netmp服務的配置文件
/etc/sysconfig/network 網路的配置信息
/etc/sysconfig/ntpd 在啟動的時候傳遞給ntpd守護進程的參數
/etc/sysconfig/radvd 在啟動的時候傳遞給radvd守護進程的參數
/etc/sysconfig/samba 在啟動的時候傳遞給smbd/nmbd守護進程的參數
/etc/sysconfig/selinux selinux的基本控制選項
/etc/sysconfig/spamassassin 在啟動的時候傳遞給spamd守護進程的參數
/etc/sysconfig/squid 在啟動的時候傳遞給squid守護進程的參數
/etc/sysconfig/vncservers 配置vnc服務啟動的方式
/etc/sysconfig/xinetd 在啟動的時候傳遞給xinetd守護進程的參數
/proc/sys目錄 系統重要配置參數,涉及眾多內核參數
/proc/sys/fs/file-max 可以分配的文件句柄的最大數目
/proc/sys/fs/file-nr 已分配文件句柄的數目、已使用文件句柄的數目、文件句柄的最大數目
/proc/sys/fs/inode-* 任何以名稱「inode」開頭的文件所執行的操作與上面那些以名稱「file」開頭的文件所執行的操作一樣,但所執行的操作與索引節點有關,而與文件句柄無關
/proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid 這兩個文件分別保存那些支持 16 位用戶標識和組標識的任何文件系統的用戶標識(UID)和組標識(GID)
/proc/sys/fs/super-max 該文件指定超級塊處理程序的最大數目。掛裝的任何文件系統需要使用超級塊,所以如果掛裝了大量文件系統,則可能會用盡超級塊處理程序
/proc/sys/fs/super-nr 顯示當前已分配超級塊的數目
/proc/sys/kernel/acct 該文件有三個可配置值,根據包含日誌的文件系統上可用空間的數量(以百分比表示),這些值控制何時開始進行進程記帳:如果可用空間低於這個百分比值,則停止進程記帳/如果可用空間高於這個百分比值,則開始進程記帳/檢查上面兩個值的頻率(以秒為單位)
/proc/sys/kernel/ctrl-alt-del 該值控制系統在接收到 ctrl+alt+delete 按鍵組合時如何反應
/proc/sys/kernel/domainname 配置網路域名
/proc/sys/kernel/hostname 主機名
/proc/sys/kernel/msgmax 指定了從一個進程發送到另一個進程的消息的最大長度
/proc/sys/kernel/msgmnb 指定在一個消息隊列中最大的位元組數
/proc/sys/kernel/msgmni 指定消息隊列標識的最大數目
/proc/sys/kernel/panic 如果發生「內核嚴重錯誤(kernel panic)」,內核在重新引導之前等待的時間
/proc/sys/kernel/printk 該文件有四個數字值,它們根據日誌記錄消息的重要性,定義將其發送到何處
/proc/sys/kernel/shmall 在任何給定時刻系統上可以使用的共享內存的總量(以位元組為單位)
/proc/sys/kernel/shmax 內核所允許的最大共享內存段的大小(以位元組為單位)
/proc/sys/kernel/shmmni 用於整個系統共享內存段的最大數目
/proc/sys/kernel/sysrq 如果該文件指定的值為非零,則激活 System Request Key
/proc/sys/kernel/threads-max 內核所能使用的線程的最大數目
/proc/sys/net/core/message_burst 寫新的警告消息所需的時間(以 1/10 秒為單位);在這個時間內所接收到的其它警告消息會被丟棄。這用於防止某些企圖用消息「淹沒」您系統的人所使用的拒絕服務攻擊
/proc/sys/net/core/message_cost 存有與每個警告消息相關的成本值。該值越大,越有可能忽略警告消息
/proc/sys/net/core/netdev_max_backlog 在介面接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目
/proc/sys/net/core/optmem_max 每個套接字所允許的最大緩沖區的大小
/proc/sys/net/core/rmem_default 接收套接字緩沖區大小的預設值(以位元組為單位)
/proc/sys/net/core/rmem_max 接收套接字緩沖區大小的最大值(以位元組為單位)。

/proc/sys/net/core/wmem_default 發送套接字緩沖區大小的預設值(以位元組為單位)。

/proc/sys/net/core/wmem_max 發送套接字緩沖區大小的最大值(以位元組為單位)

/proc/sys/net/ipv4/ip_forward ip轉發是否生效
/proc/sys/net/ipv4/tcp_retrans_collapse 控制TCP雙方窗口協商出現錯誤的時候的一些重傳的行為。但是在老的2.6的核 (<2.6.18)里頭,這個重傳會導致kernel oops,kernel panic,所以如果出現有 tcp_retrans_*樣子的kernel panic,可以把這個參數給設置成0

/proc/sys/vm/buffermem 控制用於緩沖區內存的整個系統內存的數量(以百分比表示)。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值。用於緩沖區的內存的最低百分比/如果發生所剩系統內存不多,而且系統內存正在減少這種情況,系統將試圖維護緩沖區內存的數量/用於緩沖區的內存的最高百分比
/proc/sys/vm/freepages 控制系統如何應對各種級別的可用內存。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值。如果系統中可用頁面的數目達到了最低限制,則只允許內核分配一些內存/如果系統中可用頁面的數目低於這一限制,則內核將以較積極的方式啟動交換,以釋放內存,從而維持系統性能/內核將試圖保持這個數量的系統內存可用。低於這個值將啟動內核交換
/proc/sys/vm/kswapd 控制允許內核如何交換內存。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值:內核試圖一次釋放的最大頁面數目。如果想增加內存交換過程中的帶寬,則需要增加該值/內核在每次交換中試圖釋放頁面的最少次數/內核在一次交換中所寫頁面的數目。這對系統性能影響最大。這個值越大,交換的數據越多,花在磁碟尋道上的時間越少。然而,這個值太大會因「淹沒」請求隊列而反過來影響系統性能

/proc/sys/vm/pagecache 該文件與/proc/sys/vm/buffermem 的工作內容一樣,但它是針對文件的內存映射和一般高速緩存

/proc/sys/vm/dirty_background_ratio 記錄當所有被更改頁面總大小占工作內存超過某個限制時,pdflush 會開始寫回工作,默認是10%
/proc/sys/vm/dirty_ratio 控制文件系統的文件系統寫緩沖區的大小,單位是百分比,表示系統內存的百分比,表示當寫緩沖使用到系統內存多少的時候,開始向磁碟寫出數據。默認是40%
/proc/sys/vm/dirty_writeback_centisecs 記錄pdflush進程把page cache里邊的內容寫入磁碟的時間周期,默認是5秒
/proc/sys/vm/dirty_expire_centisecs 控制一個更改過的頁面經過多長時間後被認為是過期的、必須被寫回的頁面,默認是30秒
/proc/sys/vm/laptop_mode 是否使用筆記本模式,在kernel2.6之後支持

C. linux內核態,在LSM框架中的文件操作hook介面中如何獲取一個正在被操作的文件的內容(linux4.4版本)

LSM是Linux Secrity Mole的簡稱,即linux安全模塊。其是一種輕量級通用訪
問控制框架,適合於多種訪問控制模型在它上面以內核可載入模塊的形實現。用
戶可以根據自己的需求選擇合適的安全模塊載入到內核上實現。

LSM設計思想:
LSM的設計思想:在最少改變內核代碼的情況下,提供一個能夠成功實現強制訪
問控制模塊需要的結構或者介面。LSM避免了利用如在systrace系統調用中的出
現過的系統調用干預,因為它不能擴展到多處理器內核,並且它受制於參數替換
攻擊。還有LSM在設計時做了兩點考慮:對不使用的人來說盡量少引入麻煩,對
使用的人來說要帶來效率。以Linus Torvalds為代表的內核開發人員對Linux安

全模塊(LSM)提出了三點要求:
1、真正的通用,當使用一個不同的安全模型的時候,只需要載入一個不同的內
核模塊。
2、概念上簡單,對Linux內核影響最小,高效,並且。
3、能夠支持現存的POSIX.1e capabilities邏輯,作為一個可選的安全模塊。
還有,針對linux上提出的各種不同的Linux安全增強系統對Linux安全模塊(LSM
)提出的要求是:能夠允許他們以可載入內核模塊的形式重新實現其安全功能,

並且不會在安全性方面帶來明顯的損失,也不會帶來額外的系統開銷。
LSM框架結構:
LSM框架主要由五部分構成:
1、在特定的內核數據結構中加入安全域。
2、在內核源代碼中不同的關鍵點插入對安全鉤子函數的調用。
3、加入一個通用的安全系統調用。
4、提供了函數允許內核模塊注冊為安全模塊或者注銷。
5、5、將capabilities邏輯的大部分移植為一個可選的安全模塊。
安全域是一個void*類型的指針,它使得安全模塊把安全信息和內核內部對象聯
系起來。下面列出被修改加入了安全域的內核數據結構,以及各自所代表的內核

內部對象:
task_struct結構:代表任務(進程)
linux_binprm結構:代表程序
super_block結構:代表文件系統
inode結構:代表管道,文件,或者Socket套接字
file結構:代表打開的文件
sk_buff結構:代表網路緩沖區(包)
net_device結構:代表網路設備
kern_ipc_perm結構:代表Semaphore信號,共享內存段,或者消息隊列
msg_msg:代表單個的消息

Linux安全模塊(LSM)提供了兩類對安全鉤子函數的調用:一類管理內核對象的
安全域,另一類仲裁對這些內核對象的訪問。對安全鉤子函數的調用通過鉤子來
實現,鉤子是全局表security_ops中的函數指針,這個全局表的類型是
security_operations結構,這個結構定義在include/linux/security.h這個頭
文件中。
LSM介面的核心是security_ops,當系統啟動時,他們被初始化為傳統的DAC策略
。傳統DAC訪問控制是指控制系統中的主體(如進程)對系統中的客體(如文件
目錄、文件)的訪問(讀、寫和執行等)。自主訪問控制DAC 是指主體(進程,
用戶)對客體(文件、目錄、特殊設備文件、IPC等)的訪問許可權是由客體的屬
主或超級用戶決定的,而且此許可權一旦確定,將作為以後判斷主體對客體是否有

訪問許可權的依據。
在載入安全模塊時,我們必需先對模塊進行注冊,我們可以使用
register_security()函數向LSM注冊一個安全模塊。在我們的模塊被載入成
功後,就可以進行訪問控制操作。如果此時還有一個安全模塊要使用
register_security()函數進行載入,則會出現錯誤,直到使用
unregister_security()函數向框架注銷後,下一個模塊才可以載入。當然LS
M還提供了mod_reg_security()函數和mod_unreg_security()函數,可以連續注
冊多個安全模塊。如果有其他後來的模塊需要載入,可以通過mod_reg_security
()向第一個模塊注冊,形成支持不同策略的模塊棧。
註:以上出現的函數均基於2.6.22以前的版本,對於後續的版本,出現了
register_security()函數未被導出或者取消掉了unregister_security()函數。
LSM執行過程:
根據下圖的執行步驟:用戶在執行系統調用時,先通過原有的內核介面依次執行
功能性的錯誤檢查,接著進行傳統的DAC檢查,並在即將訪問內核的內部對象之
前,通過LSM鉤子函數調用LSM。LSM再調用具體的訪問控制策略來決定訪問的合
法性。圖三顯示了LSM鉤子的調用:

圖三:基於LSM的內核對象訪問過程

Lilinux安全模塊(LSM)主要支持"限制型"的訪問控制決策:當Linux內核授予
文件或目錄訪問許可權時,Linux安全模塊(LSM)可能會拒絕,而當 Linux內核拒
絕訪問時,可以跳過LSM。

========

使用LSM實現自己的訪問控制

首先對LSM 進行簡單介紹。雖然linux下的各位基本都知道一些,但是還要羅嗦
一下。
LSM中文全稱是linux安全模塊。英文全稱:linux security mole.
LSM是一種輕量級、通用的訪問控制框架,適合多種訪問控制模型以內核模塊的
形式實現。其特點是通用、簡單、高效、支持POSIX。1e能力機制。
LSM的架構圖如下:

通過系統調用進入內核之後,系統首先進行傳統的許可權檢查(傳統許可權檢查主要
是基於用戶的,用戶通過驗證之後就可以訪問資源),通過之後才會進行強制訪
問控制。(強制訪問控制是不允許主體干涉的一種訪問控制,其採用安全標識、
信息分級等信息敏感性進行訪問控制。並且通過比較主體的級別和資源的敏感性
來確定是否允許訪問。比如說系統設置A用戶不允許訪問文件B,即便A是文件B的
所有者,訪問也是受限制的。)從圖上看來,LSM實現訪問控制主要通過安全模
塊的鉤子函數實現。

LSM框架主要由五部分組成:這個網上資料很多。
在關鍵的特定內核數據結構中加入了安全域;
在內核源碼中不同的關鍵點處插入對安全鉤子函數的調用;
提供了一個通用的安全系統調用;
提供了注冊和注銷函數,使得訪問控制策略可以以內核模塊方式實現;
將capabilities邏輯的大部分功能移植為一個可選的安全模塊。

我們這里重點結合源碼對LSM框架進行解釋。我使用的源碼是3.5.4
首先介紹安全域欄位,它是一個空類型的指針,在內核中的很多內核結構中都存
在,比如inode、superblock、dentry、file等等。類型欄位為void *
security;
那麼安全域怎麼和安全模塊中的信息關聯起來?
當安全模塊載入之後,安全域中的指針便指向安全模塊中的安全信息。這里以
selinux為例進行介紹。
內核裡面security/selinux/include/objsec.h中定義了不同對象的安全信息,
格式為XXX_security_strut.

上面的文件的安全信息裡麵包含打開文件描述符時的安全ID、文件所有者的安全
ID等等。
要聯系安全模塊中安全信息和安全域需要幾個控制鉤子函數。這些鉤子函數實現
了對內核關鍵信息的設置和管理。這里主要介紹alloc_security、
free_security。
selinux裡面通過實現安全信息空間分配實現關聯。比如以文件安全信息為例
這里分配空間成功之後,通過file->f_security = fsec實現了關聯。
撤銷關聯是在安全模塊卸載之後調用file_free_security.

這里具體通過設置file->f_secrity為NULL,然後釋放安全信息結構實現。
現在來看看內核如何實現selinux的訪問控制。這里主要就是實現LSM裡面的鉤子
函數了。LSM裡面給出了結構體security_operations,裡面給出了很多鉤子函數
,實現了相關鉤子函數就可以實現訪問控制了。

上面的函數就實現了file_permission鉤子函數。可以看下inode結構體的獲得,
感受內核是通過文件->目錄項->inode。該函數主要實現自己的訪問控制策略就
OK 了。
哪selinux來說,在獲得文件安全ID之後,主要對掩碼和文件打開時相關的安全
信息進行檢測,符合就通過訪問控制。
selinux基本實現了LSM裡面的所有鉤子函數,待鉤子函數實現後,對LSM裡面鉤
子域進行填充就OK了。

做完以上這些還需要注冊安全模塊到LSM,這里注冊和注銷使用了
register_security和unregister_security。
比如selinux在注冊時使用語句register_security(&selinux_ops)實現。

接下來通過上面的分析我們可以實現簡單的基於LSM的訪問控制。
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/mole.h>
#include <linux/fs.h>
#include <linux/security.h>
#include <linux/types.h>
#include <asm/uaccess.h>
#include <linux/fcntl.h>
#include <linux/uaccess.h>
#include <linux/file.h>
#include <linux/namei.h>

static int lsm_test_file_permission(struct file *file,int mask)
{
int path=0;
struct file *filp;
struct nameidata nd;

path = path_lookup(FILENAME,LOOKUP_FOLLOW,&nd);

if(!mask)
return 0;

if(path)
{
printk("lookup file failed!\n");
return -1;
}

filp = filp_open("/home/yuyunchao/code/sb.c",O_RDONLY,0);
{
printk("open failed!\n");
}
return 0;
}

static struct security_operations lsm_test_security_ops = {
.file_permission = lsm_test_file_permission,
};

static int __init lsm_file_init(void)
{
if(register_security(&lsm_test_security_ops)){
printk("register error ..........\n");
return -1;
}

printk("lsm_file init..\n ");
return 0;
}

static void __exit lsm_file_exit(void)
{
if(unregister_security(&lsm_test_security_ops)){
printk("unregister error................\n");
return ;
}

printk("mole exit.......\n");
}

MODULE_LICENSE("GPL");
mole_init(lsm_file_init);
mole_exit(lsm_file_exit);
========

LSM(Linux Security Mole)應用方法(簡單例子)

LSM在內核中很多地方已經插入了hook函數,並且在security.c函數中聲明了
security_ops結構,要實現你自己的安全模塊,只需要定義你自己的struct
security_operations,並且用register_security注冊即可,下面舉個簡單例子

test.c代碼如下:
/*
* Test Linux Security Mole
*
* Author: penghuan <[email protected]>
*
* Copyright (C) 2010 UbuntuKylin, Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2, as
* published by the Free Software Foundation.
*
*/

#include <linux/security.h>
#include <linux/sysctl.h>
#include <linux/ptrace.h>
#include <linux/prctl.h>
#include <linux/ratelimit.h>
#include <linux/workqueue.h>
#include <linux/file.h>
#include <linux/fs.h>
#include <linux/dcache.h>
#include <linux/path.h>

int test_file_permission(struct file *file, int mask)
{
char *name = file->f_path.dentry->d_name.name;
if(!strcmp(name, "test.txt"))
{
file->f_flags |= O_RDONLY;
printk("you can have your control code here!\n");
}
return 0;
}

static struct security_operations test_security_ops = {
.name = "test",

.file_permission = test_file_permission,
};

static __init int test_init(void)
{
printk("enter test init!\n");

printk(KERN_INFO "Test: becoming......\n")

if (register_security(&test_security_ops))
panic("Test: kernel registration failed.\n");

return 0;
}

security_initcall(test_init);

將該文件以模塊的形式放到security/下編譯進內核,啟用新的內核後,當你操
作文件test.txt時,通過dmesg命令就能再終端看到」you can have your
control code here!「輸出
所以一般的做法是:定義你自己的struct security_operations,實現你自己的
hook函數,具體有哪些hook函數可以查詢include/linux/security.h文件,然後
調用register_security來用你的test_security_ops初始化全局的security_ops
指針

樓主,我剛開始研究LSM,但網上資料太少,您這個代碼,我編譯成ko文件老是
有警告,並且insmod時,說Unknown symbol register_security。我最近看了看
內核模塊變成,沒有對內核進行太深入的了解。不知能否把LSM的實驗步驟給出
的再詳細點,謝謝。

你需要把代碼編進內核

是需要把那段源碼拷到內核目錄下,然後重新編譯內核?。。沒有不編譯內核的
方法嗎?。。直接按照模塊進行編譯。另外那個test.txt放在哪個文件夾里?。

是需要把那段源碼拷到內核目錄下,然後重新編譯內核?。。沒有不編譯內核的
方法嗎?。。直接按照模塊進行 ...

是的,你去網上找下怎麼把模塊編進內核,lsm模塊不能以模塊方式載入,涉及
安全;test.txt是測試文件,當你把代碼編進內核後,用新內核啟動,然後操作
test.txt文件,就會有輸出,test.txt隨便放哪裡

樓主,您好,我剛開始學習lsm模塊,把您的模塊編譯進內核,新的內核載入後
,register_security總是失敗,請問下可能是什麼原因導致的。我的內核版本
是3.13.11。

register_security的返回值是-11

========

LSM在Linux中的實現方式
LSM(Linux Secure Model)一種輕量級訪問控制機制.
其實現方式有如在系統調用中加入一個後門....
方式如下:
static struct file *__dentry_open(struct dentry *dentry, struct

vfsmount *mnt,
struct file *f,
int (*open)(struct inode *, struct file *),
const struct cred *cred)
{
struct inode *inode;
int error;
...............................................................
error = security_dentry_open(f, cred); //LSM機制實現方式,在此加入了

一個LSM函數.

//security_dentry_open的實現如下,相當於一個介面,對一個函數指針再

//封裝一下.

//只返回是與否,這樣的控制信息.
if (error)
goto cleanup_all;
................................................................
return f;
cleanup_all:
.................................................................
return ERR_PTR(error);
}
//========簡單封裝一個指針結構體===========================
int security_dentry_open(struct file *file, const struct cred *cred)
{
int ret;
ret = security_ops->dentry_open(file, cred);
if (ret)
return ret;
return fsnotify_perm(file, MAY_OPEN);
}

========

利用LSM實現更安全的linux

LSM的全稱是Linux Security Moles,它是linux內核中用來支持更靈活的

安全策略的一個底層框架,雖然聽起來比較復雜,但是可以就把它理解成一組安

插在linux內核的鉤子函數和一些預留的被稱為安全域的數據結構,下面先說說

這個框架的由來吧。

linux本身的機制就保證了linux擁有更好的安全機制,但是在這個機制下面

,還是隱藏了許多的問題:

1、許可權粒度太大。用過linux的人應該對0644這樣的訪問許可權設置不陌生,

它對能夠操作這個文件的用戶做了限制,但是這個只是限制到了組,而沒有更進

一步的細分,當然,如果LSM只是用來限制這個的話,那麼也就太沒意思了,因

為實現文件更細的控制粒度,ACL就能夠很出色的完成,順便提一下,ACL有一個

分配的限制,如果哪位朋友需要用ACL進行粒度更細的訪問許可權控制的話,可能

需要注意一下這方面的東西。

2、root用戶的許可權太大。在linux中,root用戶就是至高無上的,他擁有對

機器的完全控制許可權,可以做他想做的一切事情。但是很多時候,我們可能並不

希望有root有這么大的許可權,比如在現在比較流行的雲存儲中,用戶肯定不希望

服務提供商能夠隨意訪問我們的文件,那麼這個時候,就需要對root用戶進行一

定的設置了。

由於這些問題的存在,所以出現了像SE Linux(Securiy Enhanced Linux )

這樣的增強補丁。但是每個系統對於具體安全細節的控制不盡相同, 所以Linus

Tovalds 提出應該要有一個 Linux 內核所能接受的安全框架來支持這些安全策

略,這個安全框架應該提供包含內核數據結構中的透明安全域以及用來控制、維

護安全域操作的安全鉤子,於是就有了LSM。

LSM在內核中的位置,可以用下圖來表示:

當用戶態程序調用某些操作系統提供的函數的時候,比如read()函數,其會

對應於內核中的一個系統調用,然後該首先會進行一些常規的錯誤檢測,接著進

行DAC(Discretionary Access Control)檢測,再接著它會進行LSM檢測。從上

圖中能夠看出來,LSM其實是一個非常底層的安全策略框架,利用LSM,可以接管

所有的系統調用,這樣,我們就能對包括root在內的所有用戶的許可權進行控制,

並且實現粒度更細的訪問許可權控制。

當系統初始化的時候,LSM就是一個空的框架,它不提供任何的檢測,其所

做的全部工作幾乎就是返回0,當然,有些不帶返回值的函數除外。而我們則可

以針對自己特定的需求來編寫LSM,然後將我們編寫的LSM鉤子函數,通過其數據

結構struct security_operations注冊到系統中去,這樣,我們的LSM檢測就開

始起作用了。
更多信息可參考《Linux就該這么學》

D. (追加100分!)誰能幫我找到linux/unix系統下創建文件夾的C語言源碼

去下載busybox的源碼,在busybox-XXXX/coreutils/mkdir.c

/* vi: set sw=4 ts=4: */
/*
* Mini mkdir implementation for busybox
*
* Copyright (C) 2001 Matt Kraai <[email protected]>
*
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/

/* BB_AUDIT SUSv3 compliant */
/* http://www.opengroup.org/onlinepubs/007904975/utilities/mkdir.html */

/* Mar 16, 2003 Manuel Novoa III ([email protected])
*
* Fixed broken permission setting when -p was used; especially in
* conjunction with -m.
*/

/* Nov 28, 2006 Yoshinori Sato <[email protected]>: Add SELinux Support.
*/

#include "libbb.h"

/* This is a NOFORK applet. Be very careful! */

#if ENABLE_FEATURE_MKDIR_LONG_OPTIONS
static const char mkdir_longopts[] ALIGN1 =
"mode\0" Required_argument "m"
"parents\0" No_argument "p"
#if ENABLE_SELINUX
"context\0" Required_argument "Z"
#endif
;
#endif

int mkdir_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int mkdir_main(int argc, char **argv)
{
mode_t mode = (mode_t)(-1);
int status = EXIT_SUCCESS;
int flags = 0;
unsigned opt;
char *smode;
#if ENABLE_SELINUX
security_context_t scontext;
#endif

#if ENABLE_FEATURE_MKDIR_LONG_OPTIONS
applet_long_options = mkdir_longopts;
#endif
opt = getopt32(argv, "m:p" USE_SELINUX("Z:"), &smode USE_SELINUX(,&scontext));
if (opt & 1) {
mode = 0777;
if (!bb_parse_mode(smode, &mode)) {
bb_error_msg_and_die("invalid mode '%s'", smode);
}
}
if (opt & 2)
flags |= FILEUTILS_RECUR;
#if ENABLE_SELINUX
if (opt & 4) {
selinux_or_die();
setfscreatecon_or_die(scontext);
}
#endif

if (optind == argc) {
bb_show_usage();
}

argv += optind;

do {
if (bb_make_directory(*argv, mode, flags)) {
status = EXIT_FAILURE;
}
} while (*++argv);

return status;
}

E. make allnoconfig編譯linux內核出錯,求指點

正確的步驟是;
yum -y install make automake gcc g++ ncurses ncurses-dev ncurses-devel fakeroot wget bzip2 make patch ftp
cp /boot/config-2.6.18-92.el5 .config
關閉Selinux

vi /etc/sysconfig/selinux
SELINUX=disabled

打IMQ補丁:
$patch -p1 < ../linux-2.6.25-imq5.diff
$make menuconfig

驅動模塊
IMQ (intermediate queueing device) support (IMQ)
Location:
-> Device Drivers
-> Networking support
-> Network device support (NETDEVICES)
-> IMQ (intermediate queueing device) support (IMQ)

2.2編譯並安裝新內核
make menuconfig

make
make moles
make moles_install
make install

mkinitrd /boot/initrd_2.6.30.img 2.6.30 根據內核版本和指定參數生成映像文件
cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.30
cp /usr/src/linux-2.6.30/System.map /boot/System.map-2.6.30

F. Linux文件系統的核心結構

Linux下的文件系統為樹形結構,入口為/ 樹形結構下的文件目錄: 無論哪個版本的Linux系統,都有這些目錄,這些目錄應該是標準的。各個Linux發行版本會存在一些小小的差異,但總體來說,還是大體差不多。

1. / 文件系統的入口,最高一級目錄;
2. /bin 基礎系統所需要的命令位於此目錄,是最小系統所需要的命令,如:ls, cp, mkdir等。
這個目錄中的文件都是可執行的,一般的用戶都可以使用。
3. /boot 包含Linux內核及系統引導程序所需要的文件,比如 vmlinuz initrd.img 文件都位於這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄;
4. /dev 設備文件存儲目錄,比如音效卡、磁碟... ... 這是一個非常有趣的目錄,是Linux文件系統的一個閃亮的特性 - 所有對象都是文件或目錄。仔細觀察這個目錄你會發現hda1, hda2等, 它們代表系統主硬碟的不同分區。
/dev/cdrom和/dev/fd0代表你的CDROM驅動器和floppy驅動器。看上去可能有些奇怪,但比較文件和硬體的特性這卻是十分合理的。它們都可以讀出和寫入。例如/dev/dsp,這個文件代表你的揚聲器。那麼寫入這個文件的數據都回傳送到喇叭。試一試 'cat /etc/lilo.conf > /dev/dsp' 你會聽到一些聲音。這是你的 lilo.conf 文件的聲音!同樣,向 /dev/ttyS0 ( COM 1 ) 讀出或寫入數據你可以和接到上面的設備進行通訊。
5. /etc 存放系統程序或者一般工具的配置文件。
如安裝了apache2之後,配置文件在/etc/apache2/目錄下。
/etc/init.d 這個目錄是用來存放系統或伺服器以System V模式啟動的腳本,這在以System V模式啟動或初始化的系統中常見。
如apache2的/etc/init.d apache2 start|stop|restart MySQL為/etc/init.d mysql start|stop|restart
6. /home 普通用戶默認存放目錄 Linux 是多用戶環境,所以每一個用戶都有一個只有自己可以訪問的目錄(當然管理員也可以訪問)。它們以 /home/username 的方式存在。這個目錄也保存一些應用對於這個用戶的配置,比如 IRC, X 等。
7. /lib 庫文件存放目錄這里包含了系統程序所需要的所有共享庫文件,類似於 Windows 的共享庫 DLL 文件。
8. /lost+found 在ext2或ext3文件系統中,當系統意外崩潰或機器意外關機,而產生一些文件碎片放在這里。當系統啟動的過程中fsck工具會檢查這里,並修復已經損壞的文件系統。 有時系統發生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修復,或移到文件到原來的位置上。
Linux 應該正確的關機。但有時你的系統也可能崩潰掉或突然斷電使系統意外關機。那麼啟動的時候 fsck 將會進行長時間的文件系統檢查。Fsck 會檢測並試圖恢復所發現的不正確的文件。被恢復的文件會放置在這個目錄中。所恢復的文件也許並不完整或並不合理,但畢竟提供了一些恢復數據的機會。

9. /media 即插即用型存儲設備的掛載點自動在這個目錄下創建,比如USB盤系統自動掛載後,會在這個目錄下產生一個目錄 ;CDROM/DVD自動掛載後,也會在這個目錄中創建一個目錄,類似cdrom 的目錄。這個只有在最新的發行套件上才有.
10. /mnt /mnt 這個目錄一般是用於存放掛載儲存設備的掛載目錄的,比如有cdrom 等目錄。有時我們可以把讓系統開機自動掛載文件系統,把掛載點放在這里也是可以的。比如光碟機可以掛載到/mnt/cdrom 。
這是一個普通的載入目錄,在這里你可以載入你的文件系統或設備。
載入是使一個文件系統對於系統可用的過程。
在載入後你的文件可以在載入目錄下訪問。
這個目錄通常包含載入目錄或用於載入軟碟機和光碟機的子目錄。
如果需要,你也可以在這里建立其它的載入目錄。
對於載入目錄的位置並沒有強制性的要求,你可以在系統的任意位置建立載入目錄。
建立 /mnt 只是為了使系統更工整的慣例。
11. /opt 表示的是可選擇的意思,有些軟體包也會被安裝在這里,也就是自定義軟體包,比如在Fedora Core 5.0中,OpenOffice就是安裝在這里。有些我們自己編譯的軟體包,就可以安裝在這個目錄中;通過源碼包安裝的軟體,可以通過 ./configure --prefix=/opt/,將軟體安裝到opt目錄。
這個目錄包含所有默認系統安裝之外的軟體和添加的包。
12. /proc 操作系統運行時,進程(正在運行中的程序)信息及內核信息(比如cpu、硬碟分區、內存信息等)存放在這里。/proc目錄是偽裝的文件系統proc的掛載目錄,proc並不是真正的文件系統。
這是系統中極為特殊的一個目錄,實際上任何分區上都不存在這個目錄。它實際是個實時的、駐留在內存中的文件系統。
13. /root Linux超級許可權用戶root的家目錄;
14. /sbin 大多是涉及系統管理的命令的存放,是超級許可權用戶root的可執行命令存放地,普通用戶無許可權執行這個目錄下的命令;
這個目錄和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin 目錄是相似的; 我們記住就行了,凡是目錄sbin中包含的都是root許可權才能執行的。
15. /tmp 臨時文件目錄,有時用戶運行程序的時候,會產生臨時文件。 /tmp就用來存放臨時文件的。/var/tmp目錄和這個目錄相似。
許多程序在這里建立lock文件和存儲臨時數據。有些系統會在啟動或關機時清空此目錄。
16. /usr 這個是系統存放程序的目錄,比如命令、幫助文件等。這個目錄下有很多的文件和目錄。
當我們安裝一個Linux發行版官方提供的軟體包時,大多安裝在這里。
如果有涉及伺服器配置文件的,會把配置文件安裝在/etc目錄中。
/usr目錄下包括:
涉及字體目錄/usr/share/fonts ,
幫助目錄 /usr/share/man或/usr/share/doc,
普通用戶可執行文件目錄/usr/bin 或/usr/local/bin 或/usr/X11R6/bin ,
超級許可權用戶root的可執行命令存放目錄,比如 /usr/sbin 或/usr/X11R6/sbin 或/usr/local/sbin 等;
還有程序的頭文件存放目錄/usr/include。
/usr/bin 這個目錄是可執行程序的目錄,普通用戶就有許可權執行; 當我們從系統自帶的軟體包安裝一個程序時,他的可執行文件大多會放在這個目錄。
/usr/sbin 這個目錄也是可執行程序的目錄,但大多存放涉及系統管理的命令。只有root許可權才能執行;相似目錄是/sbin 或/usr/local/sbin或/usr/X11R6/sbin等;
/usr/local 這個目錄一般是用來存放用戶自編譯安裝軟體的存放目錄;一般是通過源碼包安裝的軟體,如果沒有特別指定安裝目錄的話,一般是安裝在這個目錄中。這個目錄下面有子目錄。
/usr/lib 和/lib 目錄相似,是庫文件的存儲目錄;
/usr/share 系統共用的東西存放地,比如 /usr/share/fonts 是字體目錄,是用戶都共用的吧。
/usr/share/doc和/usr/share/man幫助文件,也是共用的吧;
/usr/src 是內核源碼存放的目錄,比如下面有內核源碼目錄,比如 linux 、linux-2.xxx.xx 目錄等。有的系統也會把源碼軟體包安裝在這里。比如Fedora/Redhat,當我們安裝file.src.rpm的時候,這些軟體包會安裝在 /usr/src/redhat相應的目錄中。請參考: 《file.src.rpm 使用方法的簡單介紹》 。另外Fedhat 4.0 5.0,他的內核源碼包的目錄位於/usr/src/kernels目錄下的某個目錄中(只有安裝後才會生成相應目錄);
17. /var 這個目錄的內容是經常變動的,看名字就知道,我們可以理解為vary的縮寫,/var下有/var/log 這是用來存放系統日誌的目錄。
/var/www目錄是定義Apache伺服器站點存放目錄;/var/lib 用來存放一些庫文件,比如MySQL的,以及MySQL資料庫的的存放地;
/var/log 系統日誌存放,分析日誌要看這個目錄的東西;
/var/spool 列印機、郵件、代理伺服器等假離線目錄;
上面內容參考於
http://blog.sina.com.cn/s/blog_662234020101ebfd.html

這是我的linux系統目錄結構
administrator@ubuntu:/$ ls -l
總用量 100
drwxr-xr-x 2 root root 4096 8月 22 07:33 bin
drwxr-xr-x 3 root root 4096 8月 22 07:34 boot
drwxr-xr-x 2 root root 4096 8月 22 07:29 cdrom
drwxr-xr-x 16 root root 4320 11月 1 22:26 dev
drwxr-xr-x 136 root root 12288 11月 1 22:38 etc
drwxr-xr-x 5 root root 4096 10月 24 10:02 home
drwxrwxrwx 1 root root 4096 10月 31 18:59 host
lrwxrwxrwx 1 root root 32 8月 22 07:31 initrd.img -> boot/initrd.img-3.5.0-17-generic
lrwxrwxrwx 1 root root 33 8月 22 07:14 initrd.img.old -> /boot/initrd.img-3.5.0-17-generic
drwxr-xr-x 21 root root 4096 8月 22 07:33 lib
drwx------ 2 root root 16384 8月 22 07:14 lost+found
drwxr-xr-x 3 root root 4096 8月 24 22:13 media
drwxr-xr-x 2 root root 4096 10月 9 2012 mnt
drwxr-xr-x 2 root root 4096 10月 17 2012 opt
dr-xr-xr-x 205 root root 0 11月 2 2015 proc
drwx------ 8 root root 4096 8月 24 23:48 root
drwxr-xr-x 22 root root 780 11月 1 22:27 run
drwxr-xr-x 2 root root 12288 8月 22 07:34 sbin
drwxr-xr-x 2 root root 4096 6月 11 2012 selinux
drwxr-xr-x 2 root root 4096 10月 17 2012 srv
dr-xr-xr-x 13 root root 0 11月 2 2015 sys
drwxrwxrwt 8 root root 4096 11月 1 22:44 tmp
drwxr-xr-x 10 root root 4096 10月 17 2012 usr
drwxr-xr-x 15 root root 4096 10月 25 23:11 var
lrwxrwxrwx 1 root root 29 8月 22 07:31 vmlinuz -> boot/vmlinuz-3.5.0-17-generic

administrator@ubuntu:~$ pwd
/home/administrator
administrator@ubuntu:~$ cd ..
administrator@ubuntu:/home$ cd ..
administrator@ubuntu:/$
linux的console界面的默認路徑不是根目錄
建議看看劉遄老師的《linux就該這么學》,書籍當中有詳細的描述

G. SELinux開啟狀態,Redis無法自動啟動.請問如何解決

1.在linux系統下可以通過初始化腳本啟動Redis,使得Redis能隨系統自動運行
①:在Redis源代碼目錄中的utils文件夾中有個redis_init_script的初始化腳本,復制到/etc/init.d目錄中,
文件改名為redis_埠號,然後修改第6行的 REDISPORT 為同樣的埠號
②:建立需要的文件夾/etc/redis存放redis的配置文件/var/redis/埠號 存放Redis的持久化文件
③:修改配置文件將配置文件模板復制到/etc/redis目錄中以埠號命名(如 6379.conf) 然後對部分參數編輯
daemonize yes 使Redis以守護進程模式運行
pidfile /var/run/redis_埠號.pid 設置Redis的pid文件位置
port 埠號 設置Redis監聽的埠號
dir /var/redis/埠號 設置持久化文件存放位置
④:使用 /etc/init.d/redis_埠號 start 啟動 Redis
⑤:設置Redis隨系統自動啟動 sudo update-rc.d redis_埠號 defaults

H. 求教selinux源代碼獲取

linux下的內核頭文件放在/usr/include/linux/和/usr/include/sys/ linux目錄樹: scripts目錄 該目錄中不包含任何核心代碼,該目錄下存放了用來配置內核的腳本和應用程序源碼。 lib目錄 該目錄主要包含兩部分內容:gnuzip解壓演算法,用於在系統...

閱讀全文

與selinux源碼相關的資料

熱點內容
程序員看不懂怎麼辦 瀏覽:271
linux操作系統題 瀏覽:765
單片機無符號數加法 瀏覽:227
應用隱藏加密怎麼關閉 瀏覽:269
汽車空調的壓縮機電線有什麼用 瀏覽:429
電腦加密圖片如何取消加密 瀏覽:340
慧凈電子51單片機視頻 瀏覽:343
javamap賦值 瀏覽:165
什麼app可以玩掌機游戲 瀏覽:46
java簡單聊天室 瀏覽:462
通用汽車編程軟體 瀏覽:432
一級抗震框架梁箍筋加密區規定是多少 瀏覽:974
教你如何把安卓手機變成蘋果 瀏覽:11
app編譯分類 瀏覽:323
怎麼用伺服器的資源包 瀏覽:199
oa軟體手機登陸伺服器地址 瀏覽:289
androidrtp打包 瀏覽:723
信息被加密碼了怎麼辦 瀏覽:420
彈出光碟命令 瀏覽:517
kdj公式源碼分享 瀏覽:355