歡迎您光臨本站 註冊首頁

linux04-許可權與網路配置

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

許可權


-rw------- 1 root root 1112 Mar 27 03:14 anaconda-ks.cfg


rw------- 許可權用九位來表示

前三位代表用戶(u表示),中間三位代表組(g表示),后三位代表others(o表示) ,還有一種表示是a(表示所有,all)

許可權有三種 r (read) 讀 w (write) 寫 x (execute) 執行


r 讀 許可權
針對目錄,有r許可權,就代表能對此目錄有列表的功能 (就是ls列出來的功能)
針對文件,有r許可權,就代表能對此文件有閱讀的功能 (就是指cat一類的命令)
w 寫 許可權
針對目錄,有w許可權,就代表在此目錄下創建文件或者目錄 (touch,mkdir等),還有就是可以刪除目錄下的文件
針對文件,有w許可權,就代表能在此文件寫入內容或者修改 (> ,>>, vi 再寫等)
x 執行 許可權
針對目錄,有x許可權,就代表能進入此目錄 (cd)
針對文件,有x許可權,就代表能執行它 (命令,可執行文件等)


chmod - change file access permissions

chown - change file owner and group


許可權對root來說有些特殊性

[root@li ~]# chmod u-r /test/
[root@li ~]# ll -d /test
d-wxr-xr-x 3 root root 4096 Apr 18 09:59 /test

[root@li ~]# ls /test/ --可以

[root@li ~]# chmod g-r /test/
[root@li ~]# ll -d /test
d-wx--xr-x 3 root root 4096 Apr 18 09:59 /test
[root@li ~]# ls /test/ --還可以

[root@li ~]# chmod o-r /test/
[root@li ~]# ll -d /test/
d-wx--x--x 3 root root 4096 Apr 18 09:59 /test/
[root@li ~]# ls /test/ --仍然可以

[root@li ~]# ll -d /test/ --把許可權都減光了,但還是可以讀,寫,執行
d--------- 3 root root 4096 Apr 18 09:59 /test/


[root@li /]# chmod u r,u w,u x,g r,g x,o r,o x /test/ --一次改多個


[root@li /]# ll -d /test/
drwxr-xr-x 3 root root 4096 Apr 18 09:59 /test/

[root@li test]# chmod a-w,a-x /test --用a表示all來修改許可權


r 4
w 2
x 1

rwx 7
rw 6
rx 5
r 4
wx 3
w 2
x 1
--- 0

[root@li /]# chown a.root /test/
[root@li /]# chown a.root /test/ -R --修改/test目錄下所有的文件和目錄的屬主為a,屬組為root


創建一個文件 test ,要求 user1用戶對它有讀寫執行,user2,user3,user4用戶對它有讀和執行,其它用戶只讀

把user2,user3,user4加到一個組aaa

rwxr-xr-- user1 aaa test


創建一個文件 test ,要求 user1用戶對它有讀寫執行,user2,user3,user4用戶對它有讀和執行,user5 只讀 ,user6 只寫, user7隻執行 --有五種許可權需求,不能實現


--上面的針對同一個文件或者目錄有三類不同的許可權需求,是可以表示出來的;如果有四類或者四類以上的許可權需求,就不能表示,那麼後面要講的ACL(access control list)就可以用上了


關於強制保存的討論?

只有當用戶對文件沒有寫許可權的時候,才會在保存時出現要你使用!強制保存的選項

上級目錄對user1沒有寫許可權,目錄里的文件對user1也沒有寫許可權,那麼user1不能強制保存這個文件
而如果把上級目錄改為對user1有寫許可權,就算是目錄里的文件對user1沒有寫許可權,user1也可以強制保存這個文件,並且保存后,屬主和屬組會變為user1;
所以這種情況會比較混亂(特別是文件伺服器的情況),所以目錄一般默認許可權就是755,避免除開目錄屬主外的用戶能夠寫

關於刪除文件的討論?
能不能刪除文件或目錄與它本身的許可權無關,能否刪除需要看它的上一級目錄的許可權,也就是說當前用戶對上一級目錄有寫許可權,就可以刪除此目錄下的文件或子目錄


--從上面的強制保存和刪除的結論來看,目錄的寫許可權是非常重要的.所以一般目錄許可權都是755,這是由umask 0022來決定的


為什麼默認創建的目錄為755,默認創建的文件為644
[root@li /]# umask
0022 --建議不要去修改,會造成許可權混亂

[user1@localhost ~]$ ll /test/
total 0
?--------- ? ? ? ? ? test

--目錄一般來說都會有x許可權,表示能cd進去;上面的情況比較特殊,user1對/test目錄沒有x許可權,但有r許可權.所以也就是能ls它,又不能cd它,所以造成了問號的情況;如果r許可權也沒有的話,也就是不能ls,也不能cd,就會直接報permission denied.

======================================

特權位(s),粘貼位(t)
setuid s位在前三位
setgid s位在中間三位

特權位s --只針對文件有效
一個可執行文件擁有s位時,當別的用戶來執行這個可執行文件的話,使用的許可權是此可執行文件屬主或者屬組的許可權

只針對前三位,中間三位;后三位加不了s位
對目錄可以加,但是無效,目錄不是命令,根本不能執行它


[root@localhost test]# ll -d /etc
drwxr-xr-x 103 root root 12288 Mar 8 10:45 /etc
[root@localhost test]# ll /etc/shadow
-r-------- 1 root root 1425 Mar 7 16:42 /etc/shadow
[root@localhost test]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22960 Jul 17 2006 /usr/bin/passwd


--通過上面的許可權可知,普通用戶修改密碼使用passwd能改自己的密碼,但是密碼是存放在/etc/shadow里,也就是說普通用戶對/etc/shadow沒有寫的許可權,但passwd可執行文件的前三位有s位,所以普通在調用passswd時是用的root的許可權

實驗:
去掉/usr/bin/passwd命令的s位,那麼普通用戶就不能自己修改密碼

實驗:
修改/bin/touch,加上setuid,setgid,然後使用普通創建文件再查看變化

實驗:
普通用戶可以關機,給關機命令加S位,並在普通用戶環境變數里加/sbin的路徑


粘貼位t --只針對目錄有效

--什麼情況下一個普通用戶才能刪除一個文件?
主要這個用戶對此文件的上級目錄是否可寫,可寫則可以刪除,不可寫則不可以刪除,與文件的許可權無關


特別用在/tmp目錄

有t位的目錄,任何用戶在有許可權的情況下是可以創建文件和目錄,就算是有許可權刪除別人的文件或目錄也不能刪除,同時互相也不能強制保存修改
自己只能刪除自己創建的目錄,用於一些共享上傳的文件伺服器場合


會提示Operation not permitted --這是操作不允許,不是pemission denied


實驗
用兩個用戶在/tmp目錄下各自建立文件,
在有t位的情況下,是否能互相刪除,互相強制修改保存
沒有t位的情況下又怎樣?


--s位和t位都是佔用x位,那麼是否有x位,主要是看s或t的大小寫來判別;
大寫,表示沒有x位
小寫,表示有x位


用數字錶示特殊許可權位
t 1
setgid 2
setuid 4


隱藏屬性

lsattr - list file attributes on a Linux sec-
ond extended file system

chattr - change file attributes on a Linux
second extended file system

[root@localhost /]# lsattr /etc/shadow
------------- /etc/shadow
[root@localhost /]# chattr i /etc/shadow
[root@localhost /]# lsattr /etc/shadow --有了i許可權后,此文件就不能改動,root用戶都不行


----i-------- /etc/shadow

man chattr --查看隱藏屬性的用法

實驗:
加一個大寫的A的隱藏屬性,可以讓文件的access time屬性不會變,用來減少磁碟的I/O(access time屬性使用stat 命令去查看) --注意:A屬性對於再touch一次這個文件是無效的


================================

常用的系統命令


[root@localhost ~]# mii-tool --在虛擬機下不支持
eth0: negotiated 100baseTx-FD, link ok --這表示網卡和網線OK

[root@localhost ~]# mii-tool
eth0: no link --這表示網卡OK,但網線沒插好等情況

[root@localhost ~]# mii-tool
no MII interfaces found --這表示網卡鬆動,或者是網卡沒有被激活,或者模塊不支持等情況

[root@localhost ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:23:CD:95:DA:0B
inet addr:10.1.1.35 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::223:cdff:fe95:da0b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15768 errors:0 dropped:0 overruns:0 frame:0
TX packets:1404 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1187943 (1.1 MiB) TX bytes:577140 (563.6 KiB)
Interrupt:193 Base address:0x4c00

[root@li ~]# ifconfig eth0 10.1.1.35 netmask 255.255.255.0

[root@li ~]# ifconfig eth0 down
[root@li ~]# ifconfig eth0 up

[root@li ~]# ip addr


ping 10.1.1.192 --直接ping一個IP 測試是否能通

ping -c 4 10.1.1.192 --只PING 4個包


[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux

[root@localhost ~]# uname -r
2.6.18-164.el5 --內核版本

[root@li ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
--操作系統版本,有時候會去修改用於安裝軟體時版本不兼容時的一個欺騙安裝

[root@li ~]# ls /usr/src/kernels/2.6.18-164.el5-i686/
--內核源代碼的路徑


[root@localhost ~]# uname -m
i686

[root@localhost ~]# ls /lib/modules/`uname -r`


修改主機名三步:

hostname li.cluster.com --臨時修改當前主機名


vim /etc/sysconfig/network --系統全局的網路配置文件
HOSTNAME=li.cluster.com --永久修改當前主機名 FQDN(full qualified domain name)有些軟體是要求主機名為fqdn格式,例如apache


vim /etc/hosts
10.1.1.35 li.cluster.com --在這裡加上修改過的主機和IP對應

[root@localhost ~]# vim /etc/nsswitch.conf
hosts: files dns


-------------------------------------------------


ssh - OpenSSH SSH client (remote login pro-
gram)

[root@localhost ~]# ssh 10.1.1.172
[root@localhost ~]# ssh zhou.139.com --也可以ssh接主機名,但要求/etc/hosts里有對應


[root@localhost ~]# ssh 10.1.1.104 --默認以當前用戶遠程登陸
The authenticity of host '10.1.1.104 (10.1.1.104)' can't be established.
RSA key fingerprint is b1:70:27:ac:ad:f6:ab:35:00:5a:b7:ad:ad:e4:43:0a.
Are you sure you want to continue connecting (yes/no)? yes --第一次遠程登陸會讓你輸入yes,它會加一個RSA值到/root/.ssh/known_hosts文件里,下次再ssh這台機,就不用再輸入yes了


10.1.1.104 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA/HQMabL2hR0qKrNxJU34WWLvKjnjT9FFbRYk5EcsZMNAFR k0sXUT8YjSRNiAQlRfWNRp8Wbxh7XGvQ9YJpzxxkQA9LP W/O4e 2TMKt3vfDLP0M6SWuykQ aChpQokXouNGZsHo3Y1xa7ysgvV4CVAl6ItxjdeKkCy2oiArggnIiKYVtFg20Y44SzxH7ycdnLdj09ftIsZZlkC1Bld4x1i5QUmUkzJEgHsLj0rpe4U8gfbrhJw5m02Y6cE655XPpFxuP7VF/L8a8i0 SEKgwO8FfSUngKfn2YjKlgXKstyVJvK nCKXRT6XNTNE5f5uSUIcEsWrTn OPKfoClpJew==


[root@localhost ~]# ssh 10.1.1.104
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
7f:7b:7e:55:bf:28:4b:be:34:22:1c:42:39:cc:f8:ff.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:6
RSA host key for 10.1.1.104 has changed and you have requested strict checking.
Host key verification failed.

--遇到此報錯,有可能是104的IP被另一台電腦使用,就把/root/.ssh/known_hosts里關於104電腦的RSA KEY信息給刪除掉 就可以再加了


[root@localhost ~]# su - user1
[user1@li ~]$ ssh 10.1.1.172 --如果本機有user1,可以使用user1直接ssh,就是連接對方的user1

[root@localhost ~]# ssh user1@10.1.1.172 --也可以這樣去連user1,最主要是對方要有user1用戶,本機有沒有user1不必要

[root@li ~]# ssh 2.2.2.171 -l user1 --還有一種 使用-l參數


[root@localhost ~]# ssh 10.1.1.172 date --調對方的命令
root@10.1.1.172's password:
hello ,this is root
2011年 03月 08日 星期二 14:34:22 CST


[root@li ~]# ssh 10.1.1.220 -X system-config-date --調有關圖形,需要加-X


ssh 10.1.1.104 -Y --登陸到104的主機后,可以任意調用圖形
調圖形要注意的是遠程伺服器要圖形支持

===========================

關於踢掉一個遠程登錄的終端連接的方法

who 或 w 命令找出是誰登錄到哪個終端

ps -ef |grep pts/2 --假如登錄到pts/2,就這樣去查找它的PID(PID為最前面的數字)

kill -9 PID --殺掉這個進程號

====================================


[root@li ~]# scp /share/soft/iso/rhel-5.4-server-i386-dvd.iso 10.1.1.220:/root/Desktop/

[root@li ~]# scp -r /share/soft/iso/ 10.1.1.220:/root/Desktop/


scp 10.1.1.104:/root/Desktop/sn.txt /root/Desktop/ --從遠端拷到本端

scp -r 10.1.1.104:/root/Desktop/ /root/Desktop/ --拷目錄也要加-r參數

scp -r aaa.bb.com:/root/Desktop/ /root/Desktop/ --可以用主機名替代IP,但要寫到/etc/hosts里


[root@li Desktop]# scp /usr/src/kernels/2.6.18-164.el5-i686/drivers/net/arm/Makefile 10.1.1.172:/usr/src/kernels/2.6.18-164.el5-i686/drivers/net/arm/

--把上面的命令轉換為下面拷貝方法
[root@li Desktop]# cd /usr/src/kernels/2.6.18-164.el5-i686/drivers/net/arm/
[root@li arm]# scp Makefile 10.1.1.172:`pwd`/


=========================================

windows下的遠程ssh工具有很多,常用的有securityCRT , putty等


===========================================

====================================================================

網路配置

ifconfig eth0 10.1.1.36 netmask 255.255.255.0 --臨時修改你的IP地址


ifconfig eth0:0 10.1.1.36 netmask 255.255.255.0 --在eth0的基礎上虛擬出eth0:0的網卡

[root@localhost ~]# ifconfig eth0:1 10.1.1.37 netmask 255.255.255.0
[root@localhost ~]# ifconfig eth0:2 10.1.1.38 netmask 255.255.255.0


手動修改物理地址的方法:
先要ifconfig eth0 down

ifconfig eth0 hw ether 00:01:22:AB:EF:CD

ifconfig eth0 up

[root@li Desktop]# system-config-network --圖形修改的程序,不建議用


vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 --定義設備號
BOOTPROTO=dhcp --定義獲取IP的方式為dhcp
HWADDR=00:25:86:90:7B:67 --定義物理地址
ONBOOT=yes --定義此網卡設備是否啟動


DEVICE=eth0
BOOTPROTO=static --定義獲取IP的方式為static 靜態IP
IPADDR=10.1.1.35 --定義靜態IP
NETMASK=255.255.255.0 --定義子網掩碼
GATEWAY=10.1.1.1 --手動定義你的網關,就是route -n命令看到的默認網關 這一句也可以寫到/etc/sysconfig/network這個文件下(是全局生效,就是對所有網卡都生效)
HWADDR=00:23:CD:95:DA:0B
ONBOOT=yes

# /etc/init.d/network restart --修改完后重啟你的網路服務,使配置生效


-------------------------------------------


[root@li Desktop]# vim /etc/sysconfig/network

NETWORKING=yes --這裡是全局設置,如果這裡為no,那麼本機的網路將不可用


service network restart --重啟網路服務

/etc/init.d/network restart --重啟網路服務


vim /etc/sysconfig/network-scripts/ifcfg-eth0:0 --此文件不存在,需要手動建立
DEVICE=eth0:0
BOOTPRO=static
IPADDR=10.1.1.36
NETMASK=255.255.255.0
ONBOOT=yes

==================================================================

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0-range0
--一次性虛擬多個IP,此文件不存在,也需要手動創建

IPADDR_START=10.1.1.37 --虛擬的IP起始值
IPADDR_END=10.1.1.50 --虛擬的IP結束值
NETMASK=255.255.255.0 --子網掩碼
CLONENUM_START=10 --指的是eth0:后的數字起始值

===================================================================


圖形配置工具 setup


--下面兩個文件是一個硬連接(物理上是同一個文件)

[root@li ~]# ll -i /etc/sysconfig/networking/devices/ifcfg-eth0
10673958 -rw-r--r-- 5 root root 189 Jun 30 16:42 /etc/sysconfig/networking/devices/ifcfg-eth0
[root@li ~]# ll -i /etc/sysconfig/network-scripts/ifcfg-eth0
10673958 -rw-r--r-- 5 root root 189 Jun 30 16:42 /etc/sysconfig/network-scripts/ifcfg-eth0


==============================================


useradd user1 這條命令,在系統里自動做了哪些事

vim /etc/passwd
user1:x:504:504::/home/user1:/bin/bash

vim /etc/shadow
user1:!!:15079:0:99999:7:::

vim /etc/group
user1:x:504:

vim /etc/gshadow
user1:!::

mkdir /home/user1
chown user1:user1 /home/user1/

===========================================
注意拷貝環境變數模板要注意,下面幾種拷貝命令都有錯誤:
cp /etc/skel/ /home/user1/ -rf 錯
cp /etc/skel/* /home/user1/ -rf 錯
cp /etc/skel/.* /home/user1/ -rf 錯,.*也包含了..,所以把上級目錄也就是/etc/下的所有東西也拷過去了

cp /etc/skel/.bash* /home/user1/ 正確拷法

=============================================

touch /var/spool/mail/user1
chown user1.mail /var/spool/mail/user1


[root@localhost ~]# grub-md5-crypt --使用這個命令用md5算出一個加密密碼字元串,並手動加到/etc/shadow的第二列里
Password:
Retype password:
$1$Oere/0$z35W83sqcFSEJljeyyoZe/

使用小寫a隱藏參數表示文件只能被追加內容,不能修改或清空

--刪除一行
[root@li ~]# cat -n /etc/passwd |tail -1
60 sdfdfa
[root@li ~]# sed -i '60d' /etc/passwd

本文出自 「linuxart」 博客,請務必保留此出處http://linuxart.blog.51cto.com/686203/843896


[火星人 ] linux04-許可權與網路配置已經有694次圍觀

http://coctec.com/docs/linux/show-post-45743.html