权限
-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