您的位置:首页 > 运维架构 > Linux

Linux命令笔记

2016-05-07 15:29 567 查看
Linux下怎么设置命令进入图形界面
vi /etc/inittab
id:3:initdefault:这一行,将3改为5
cat filename  查看文件内容从文件第一行开始查看 -b 列出行号空白行不显示行号 -n空白行显示行号
tac filename #查看为念内容但是从文件最后一行和cat相反
tail filename#默认显示最后10行 tail -n 20 filename 显示最后20行  tail -n +6 filename 从第6行开始显示
nl filename #查看文件显示行号
vi filename编辑
进入vi后 i 开始编辑  退出先esc在: 在wq(保存)q!(不保存)

rz 上传文件
sz filaname 下载文件
Redhat关闭SELinux和防火墙
1. 永久有效
修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启
2. 即时生效
setenforce 0
setenforce是Linux系统安全模块
可以使用getenforce查看状态

#更改文件夹的名字
mv EhcacheServer4_19 Ehcache
#更改文件的名字
mv test.txt ctl.txt

将/etc/passwd,有出现 root 的行取出来
# grep root /etc/passwd
# cat /etc/passwd | grep root
将/etc/passwd,有出现 root 的行取出来,同时显示这些行在/etc/passwd的行号
grep -n root /etc/passwd
将/etc/passwd,将没有出现 root 的行取出来
grep -v root /etc/passwd
找到redis.conf中包含'pass'的地方(显示行号,且忽略大小写)
grep -in 'pass' redis.conf

sed -n '/^export/p' exports.log # 查找exports.log中以export开头的行
启动myeclipse 进入myeclipse安装目录,找到myeclipse文件所在路径 然后执行./myeclipse即可

vi redis.conf
[/关键字]:  进入vi命令后输入"/"然后输入要查到的关键字
例如‘/pass’ 然后回车,如果回车后找到的不是要编辑的地方可以一直按'n'然后找到自己要编辑的地方
按ESC 后  输入:w filename 将内容以指定的文件名保存
:wq! #强制保存

更改/etc/sysconfig下的network文件,在提示符下输入vi /etc/sysconfig/network,修改主机名

top显示,管理执行中的程序
gzip -c  ctl.tar > ctl.tar.gz  压缩后不删除源文件
gzip -v oracle.sql  #压缩后源文件不存在
zcat oracle.sql #查看压缩后的文件 只能是单个文本文件压缩后去查看
gzip -d  filename# 来进行解压缩 gunzip filename解压文件
gzip -9 -c man.config > man.config.gz 将man.config 用最佳的压缩比压缩,并保留原本的档案
bzip2 [-cdkzv#] 檔名
bzcat 檔名.bz2
bzip2 -z man.config
bzcat man.config.bz2
bzip2 -d man.config.bz2

No suitable device found  for connection "System eth0"  删除/etc/udev/rules.d/70-persistent-net.rules  然后重启
如果还不行就用ifconfig -a 查看物理 MAC HWADDR	地址(eth0)然后将 /etc/sysconfig/network-scripts/ifcfg-eth0
修改为查到的HWADDR

在linux里建立一个快捷方式
ln -s /home/soft/MyEclipse/'MyEclipse 10' /home/soft/eclipse  对于有空格的路径用''括起来
ln -s 源目录 目标快捷方式
比如你要在/etc下面建立一个叫LXBC553的快捷方式,指向/home/LXBC,那就是
ln -s /home/LXBC /etc/LXBC553
查看/etc/profile的前10行内容,应该是:
# head -n 10 /etc/profile
查看/etc/profile的最后5行内容,应该是:
# tail -n 5 /etc/profile
如果想同时查看可以将前10行和后5行的显示信息通过输出重定向的方法保存到一个文档,这样查看文档即可一目了然。
例如:
将内容输出到/home/test文件中
# head -n 10 /etc/profile >>/home/test
# tail -n 5 /etc/profile>>/home/test
查看的话只需要打开test文件即可。
cat /home/test
cat test.txt|head -n 6|tail -n +3  显示从第3行第6行
sed -n '3,6p' test.txt  显示从第3行第6行

两个linux系统传递文件
scp /home/temp/test.txt root@22.5.242.232:/home/files   然后会让输入密码
--查看80端口是否占用
netstat -ano|grep 80
netstat -ano|findstr "80"
/media/sf_D_DRIVE  下面可以看到共享的文件夹

$ chmod u+x file                      给file的属主增加执行权限
$ chmod 751 file                      给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
$ chmod u=rwx,g=rx,o=x file      上例的另一种形式
$ chmod =r file                     为所有用户分配读权限
$ chmod 444 file                   同上例
$ chmod a-wx,a+r   file          同上例
$ chmod -R u+r directory           递归地给directory目录下所有文件和子目录的属主分配读的权限
$ chmod 4755                            设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。
+增加权限
-删除权限
=重新分配权限
r读
w写
x执行

退出more只需按q即可
gnome-terminal
ll *term* 列出当前目录下包含term的文件
find . -name '[r]*'   查找当前目录下以r开头的文件
find / -name '*erminal*' 在根目录下查找名字包含 ‘erminal’ 的文件
find . -name '*erminal*' 在当前目录下查找名字包含 ‘erminal’ 的文件
1.按照文件名查找
(1)find / -name httpd.conf  #在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf  #在/etc目录下文件httpd.conf
(3)find /etc -name '*srm*'  #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . -name 'srm*'   #表示当前目录下查找文件名开头是字符串‘srm’的文件
(5)find . -type f -name "*.log" | xargs grep -n --color=auto  "*success*"  在当前目录下搜索所有包含“success” 且以.log 结尾的文件
find . -type f -name '*.sql'|xargs grep -n --color=auto 'revoke'

非root用户1024以内不能用

more filaname  一个文件内容多,每次enter向下看
startx 进入界面

vi /etc/hosts  修改host文件  主机名必须可以解析(安装redhat是输入的主机名 com.ctl.pc)。
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 com.ctl.pc

tar -cvf xx.tar /home/ wenjianjia
tar -xvf xx.tar
tar -tvf xx.tar列出tar包内容

linux tomcat配置的是8080端口通过下面命令外界可以使用80端口来访问tomcat
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080(重启后失效)
2.service iptables save
3.service iptables restart

网络地址转换(NAT)--端口转发
ftp   tcp   21  21
http  tcp   80  80

将VirtualBox Host-Only Network
ip设置为IPADDR=192.168.1.6
NETMASK=255.255.255.0
NETMASK=255.255.255.0

使用VirtualBox host-only
VirtualBox Host-Only Network
配置为
DNSI=192.168.42.1
NETMASK=255.255.255.0
IPADDR=192.168.42.6
如何在linux系统中设置静态ip地址
cd /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
HWADDR=08:00:27:42:D9:16
TYPE=Ethernet
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
NM_CONTROLLED=yes
ONBOOT=yes
BOOTPROTO=static
DNSI=192.168.42.1
IPV6INIT=no
USERCTL=no
IPADDR=192.168.42.19
NETMASK=255.255.255.0
GATEWAY=192.168.42.1
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
NAME="System eth0"

重启网络服务。service network restart或/etc/init.d/network restart

ifconfig eth0查询当前ip

Linux重启网卡的方法# service network restart

查找文件路径  whereis   filename

source /etc/profile 让编辑后的profile立即生效

用户切换
su - 普通用户名
mkdir  新建文件夹
mkdir -p dir1/dir2 #建立多层文件夹
mkdir -m 711 dir3 #新建权限为rwx--x--x的目录
在命令行中输入: shutdown -r now : 表示现在重启计算机!
另一种重启方式就是输入: reboot   也表示重启!

netstat -anp查看端口占用
netstat -apn | grep 80

删除文件夹实例:
rm -rf /var/log/httpd/access
将会删除/var/log/httpd/access目录以及其下所有文件、文件夹

删除文件使用实例:
rm -f /var/log/httpd/access.log
将会强制删除/var/log/httpd/access.log这个文件

rpm -i 需要安装的包文件名
举例如下:
rpm -i example.rpm 安装 example.rpm 包;
rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息;
rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度;

vsftpd
使用linux的用户登录(可以下载上传该用户文件夹下面的数据)
Starting vsftpd for vsftpd: 500 OOPS: cannot read config file: /etc/vsftpd/vsftpd.conf
500 OOPS:cannot change directory:/root 问题
阅读:86392010-01-14 09:47
标签:杂谈
安装完red hat enterprise linux 5后,ftp不能使用root用户,将/etc/vsftpd/ftpusers和/etc/vsftpd/user_list两个文件中的root注释掉,就是在root前加个#,再运行ftp结果报错
500 OOPS:cannot change directory:/root
到网上查了下,是selinux的配置问题,两种方法解决:
1、setsebool -P ftp_home_dir on 之后再运service vsftpd restart
或 setsebool -P ftpd_disable_trans on 之后再运service vsftpd restart 也行
2、关闭selinux
修改/etc/selinux/config文件或/etc/syscofnig/selinux设置SELINUX= disabled ,然后重启

使用如下命令#rpm -qa |grep vsftpd可以检测出是否安装了vsftpd软件,
如果没有安装,使用YUM命令进行安装。(yum install vsftpd -y)
启动ftp命令#service vsftpd start
停止ftp命令#service vsftpd stop
重启ftp命令#service vsftpd restart
安装好vsftpd 访问ftp时 报需要设置    setsebool ftp_home_dir 1(直接在终端命令行输入)
anon_upload_enable=YES
anon_mkdir_write_enable=YES
两项前面的#号,就可以完成匿名用户的配置,此时匿名用户既可以登录上传、下载文件。记得修改配置文件后需要重启服务。
ftp的用户名密码和linux登录的用户名密码一致
chown -R ctl:ctl /soft 给ftp非配目录权限 可以访问根目录下面的soft文件夹
安装gftp时报错 ,stropts.h不存在需要进入 gftp中lib文件夹下,找到pty.c将 #include <stropts.h>删除掉即可
安装好gftp后使用gftp命令登录例如  gftp 192.168.0.111
tar.gz 是用tar命令将源码文件打包成一个文件,然后用zip命令压缩成一个压缩包,所以在安装前要解压缩,命令如下:tar -xvzf test.tar.gz完成后会生成一个解压缩后的目录,进入该目录,查看readme文件或者install文件,里面有详细的安装命令。一般的安装步骤是./configure  回车make  回车make install  回车make clean  回车如果configure没有通过,说明你的系统环境没有达到要求,该软件所依赖的文件没有被安装,需要根据提示信息来具体分析。以上的各个命令只是最常用的使用方式,还有比较实用的参数没有介绍,可以自己查看帮助文档。

如何关闭防火墙
/etc/init.d/iptables restart
#最后重启防火墙使配置生效
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
service  iptables  status        查看防火墙状态
service  iptables  start           开启防火墙
service  iptables  stop           关闭防火墙
service  iptables  restart        重启防火墙

RedHat 开放防火墙端口
1. cd到/sbin目录,执行命令:
iptables -I INPUT -p tcp --dport 1158 -j ACCEPT
iptables -I INPUT -p tcp --dport 1521 -j ACCEPT
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
iptables -I INPUT -p tcp --dport 8090 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 10000 -j ACCEPT
iptables -I INPUT -p tcp --dport 50000 -j ACCEPT
iptables -I INPUT -p tcp --dport 60000 -j ACCEPT
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
iptables -I INPUT -p tcp --dport 10010 -j ACCEPT
iptables -I INPUT -p tcp --dport 10020 -j ACCEPT
iptables -I INPUT -p tcp --dport 10030 -j ACCEPT
iptables -I INPUT -p tcp --dport 9043 -j ACCEPT
iptables -I INPUT -p tcp --dport 9060 -j ACCEPT
iptables -I INPUT -p tcp --dport 3343 -j ACCEPT
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -p tcp --dport 20 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 9080 -j ACCEPT
iptables -I INPUT -p tcp --dport 9081 -j ACCEPT
iptables -I INPUT -p tcp --dport 9443 -j ACCEPT
iptables -I INPUT -p tcp --dport 5060 -j ACCEPT
iptables -I INPUT -p tcp --dport 5061 -j ACCEPT

2.service iptables save
3.service iptables restart
防火墙开放特定端口:
/etc/sysconfig/iptables
②添加:
-A INPUT -m state  --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state  --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state  --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state  --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT
-A INPUT -m state  --state NEW -m tcp -p tcp --dport 50000 -j ACCEPT

-A OUTPUT -m state  --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A OUTPUT -m state  --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A OUTPUT -m state  --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A OUTPUT -m state  --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT
-A OUTPUT -m state  --state NEW -m tcp -p tcp --dport 50000 -j ACCEPT

-A INPUT -m state  --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许80端口通过防火墙)
-A INPUT -m state  --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(允许3306端口通过防火墙)
★数字8080代表开放8080端口,也可以改成其他的端口★
③重启防火墙
================================================================
保存对防火墙的设置
serivce iptables save
查看iptables规则及编号
iptables -nL --line-number
关闭所有的INPUT FORWARD(转发) OUTPUT的所有端口
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
只打开22端口
iptables -A  INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
参数讲解:
–A 参数就看成是添加一条规则
–p 指定是什么协议,我们常用的tcp 协议,当然也有udp,例如53端口的DNS
–dport 就是目标端口,当数据从外部进入服务器为目标端口
–sport 数据从服务器出去,则为数据源端口使用
–j 就是指定是 ACCEPT -接收 或者 DROP 不接收
禁止某个IP访问
iptables -A INPUT -p tcp -s 192.168.1.2 -j DROP
–s 参数是来源(即192.168.1.2)
后面拒绝就是DROP
删除规则
iptables -D INPUT 2
删除INPUT链编号为2的规则

关机命令如下:
1、halt 立刻关机
2、poweroff 立刻关机
3、shutdown -h now 立刻关机(root用户使用)
4、shutdown -h 10 10分钟后自动关机

linux如何关闭防火墙
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop

文件拷贝   cp ./soft/a/1.txt  ./soft/b/1.txt
文件夹拷贝 cp -r 文件夹1 文件夹2  #文件拷贝包含子目录
文件夹拷贝 cp -i dir2 dir3 #拷贝时提示是否覆盖重复的文件
文件夹拷贝 cp -a dir2 dir3 #拷贝时整个数据属性一模一样,包括更改时间属性

jdk安装
vi  /etc/profile
export JAVA_HOME=/home/soft/jdk1.7.0_79
export CATALINA_HOME=/home/soft/apache-tomcat-7.0.11
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
source /etc/profile 立即生效

tar打包
tar -cvf  xx.tar /home/flowertojar
tar -xvf  xx.tar
# tar -cvf /usr/local/auto_bak/test.tar /usr/local/test 仅打包,不压缩
# tar -zcvf /usr/local/auto_bak/test.tar.gz /usr/local/test 打包后,以gzip压缩 在参数f后面的压缩文件名是自己取的,习惯上用tar来做,如果加z参数,则以tar.gz 或tgz来代表gzip压缩过的tar file文件
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-x是解开的意思
压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一  个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2   //解压 tar.bz2
tar –xZvf file.tar.Z   //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
总结
(1)、*.tar 用 tar –xvf 解压
(2)、*.gz 用 gzip -d或者gunzip 解压
(3)、*.tar.gz和*.tgz 用 tar –xzf 解压
(4)、*.bz2 用 bzip2 -d或者用bunzip2 解压
(5)、*.tar.bz2用tar –xjf 解压
(6)、*.Z 用 uncompress 解压
(7)、*.tar.Z 用tar –xZf 解压
(8)、*.rar 用 unrar e解压
(9)、*.zip 用 unzip 解压
Linux压缩保留源文件的方法:
gzip –c filename > filename.gz
Linux解压缩保留源文件的方法:
gunzip –c filename.gz > filename
gunzip的用法
1.作用
gunzip命令作用是解压文件,使用权限是所有用户。
2.格式
gunzip [-acfhlLnNqrtvV][-s ][文件...]
或者gunzip [-acfhlLnNqrtvV][-s ][目录]
3.主要参数
-a或--ascii:使用ASCII文字模式。
-c或--stdout或--to-stdout:把解压后的文件输出到标准输出设备。
-f或-force:强行解开压缩文件,不理会文件名称或硬连接是否存在,以及该文件是否为符号连接。
-h或--help:在线帮助。
-l或--list:列出压缩文件的相关信息。
-L或--license:显示版本与版权信息。
-n或--no-name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理。
-N或--name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。
-q或--quiet:不显示警告信息。
-r或--recursive:递归处理,将指定目录下的所有文件及子目录一并处理。
-S或--suffix:更改压缩字尾字符串。
-t或--test:测试压缩文件是否正确无误。
-v或--verbose:显示指令执行过程。
-V或--version:显示版本信息。

mysql问题
edora8启动mysql 报错:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
1、先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.
另外看看是不是权限问题.
2、确定你的mysql.sock是不是在那个位置,
mysql -u 你的mysql用户名 -p -S /var/lib/mysql/mysql.sock
3、试试:service mysqld start
4、如果是权限问题,则先改变权限 #chown -R mysql:mysql /var/lib/mysql   (要执行)
[root@localhost ~]# /etc/init.d/mysqld start
启动 MySQL: [ 确定 ]
[root@localhost ~]# mysql -uroot -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
原因是,/var/lib/mysql 的访问权限问题。
shell> chown -R mysql:mysql /var/lib/mysql
接着启动服务器
shell> /etc/init.d/mysql start
服务器正常启动后察看 /var/lib/mysql 自动生成mysql.sock文件。
但是我的问题仍然没有得到解决。
问题终于解决:
方法: 修改/etc/my.conf:
[mysqld]
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/usr/local/mysql
If there is not currently a section called [client], add one at the bottom of the file and copy the socket= line under the [mysqld] section such as:
[client]
socket=/var/lib/mysql/mysql.sock
发现依旧如此,运行/etc/init.d/mysql start报错:Starting MySQLCouldn't find MySQL manager or server
是mysqld服务没启,运行/usr/local/mysql/bin/mysqld_safe &

root用户也不让保存则使用  wq!

Linux添加/删除用户和用户组
本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数。
1、建用户:
adduser phpq                             //新建phpq用户
passwd phpq                               //给phpq用户设置密码

2、建工作组
groupadd test                          //新建test工作组

3、新建用户同时增加工作组
useradd -g test phpq                      //新建phpq用户并增加到test工作组

注::-g 所属组 -d 家目录 -s 所用的SHELL

4、给已有的用户增加工作组
usermod -G groupname username

或者:gpasswd -a user group

5、临时关闭:在/etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上*就可以了。想恢复该用户,去掉*即可。

或者使用如下命令关闭用户账号:
passwd peter –l

重新释放:
passwd peter –u

6、永久性删除用户账号
userdel peter

groupdel peter

usermod –G peter peter   (强制删除该用户的主目录和主目录下的所有文件和子目录)

7、从组中删除用户
编辑/etc/group 找到GROUP1那一行,删除 A
或者用命令
gpasswd -d A GROUP

8、显示用户信息
id user
cat /etc/passwd

更详细的用户和用户组的解说请参考
Linux 用户和用户组详细解说
本文主要讲述在Linux 系统中用户(user)和用户组(group)管理相应的概念;用户(user)和用户组(group)相关命令的列举;其中也对单用户多任务,多用户多任务也做以解说。

本篇文章来源于 PHP资讯 原文链接:http://www.phpq.net/linux/linux-add-delete-user-group.html

vi /etc/sudoers  添加
username	ALL=(ALL) 	ALL
这样username将和 root用户一样用有权限
Linux 用户(user)和用户组(group)管理概述

date '+%Y/%m/%d %H:%M:%S'
free -m内存清理
last 列出目前与过去登入系统的用户相关信息
last -n 10 (显示10条)
、理解Linux的单用户多任务,多用户多任务概念;

ls *term*查询当前目录下包含term的文件
su username 登录后不包含username的环境
su - username 登录后包含username的环境

Linux 是一个多用户、多任务的操作系统;我们应该了解单用户多任务和多用户多任务的概念;

1、Linux 的单用户多任务;

单用户多任务;比如我们以beinan 登录系统,进入系统后,我要打开gedit 来写文档,但在写文档的过程中,我感觉少点音乐,所以又打开xmms 来点音乐;当然听点音乐还不行,MSN 还得打开,想知道几个弟兄现在正在做什么,这样一样,我在用beinan 用户登录时,执行了gedit 、xmms以及msn等,当然还有输入法fcitx ;这样说来就有点简单了,一个beinan用户,为了完成工作,执行了几个任务;当然beinan这个用户,其它的人还能以远程登录过来,也能做其它的工作。

2、Linux 的多用户、多任务;

有时可能是很多用户同时用同一个系统,但并不所有的用户都一定都要做同一件事,所以这就有多用户多任务之说;

举个例子,比如LinuxSir.Org 服务器,上面有FTP 用户、系统管理员、web 用户、常规普通用户等,在同一时刻,可能有的弟兄正在访问论坛;有的可能在上传软件包管理子站,比如luma 或Yuking 兄在管理他们的主页系统和FTP ;在与此同时,可能还会有系统管理员在维护系统;浏览主页的用的是nobody 用户,大家都用同一个,而上传软件包用的是FTP用户;管理员的对系统的维护或查看,可能用的是普通帐号或超级权限root帐号;不同用户所具有的权限也不同,要完成不同的任务得需要不同的用户,也可以说不同的用户,可能完成的工作也不一样;

值得注意的是:多用户多任务并不是大家同时挤到一接在一台机器的的键盘和显示器前来操作机器,多用户可能通过远程登录来进行,比如对服务器的远程控制,只要有用户权限任何人都是可以上去操作或访问的;

3、用户的角色区分;

用户在系统中是分角色的,在Linux 系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性;

root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;
虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;

4、多用户操作系统的安全;

多用户系统从事实来说对系统管理更为方便。从安全角度来说,多用户管理的系统更为安全,比如beinan用户下的某个文件不想让其它用户看到,只是设置一下文件的权限,只有beinan一个用户可读可写可编辑就行了,这样一来只有beinan一个用户可以对其私有文件进行操作,Linux 在多用户下表现最佳,Linux能很好的保护每个用户的安全,但我们也得学会Linux 才是,再安全的系统,如果没有安全意识的管理员或管理技术,这样的系统也不是安全的。

从服务器角度来说,多用户的下的系统安全性也是最为重要的,我们常用的Windows 操作系统,它在系纺权限管理的能力只能说是一般般,根本没有没有办法和Linux或Unix 类系统相比;

二、用户(user)和用户组(group)概念;

1、用户(user)的概念;

通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)。比如我们的同事想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)这时我就可以给他建一个新的用户名,让他用我所开的用户名去折腾,这从计算机安全角度来说是符合操作规则的;

当然用户(user)的概念理解还不仅仅于此,在Linux系统中还有一些用户是用来完成特定任务的,比如nobody和ftp 等,我们访问LinuxSir.Org 的网页程序,就是nobody用户;我们匿名访问ftp 时,会用到用户ftp或nobody ;如果您想了解Linux系统的一些帐号,请查看 /etc/passwd ;

2、用户组(group)的概念;

用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;

举例:我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他们修改,所以我们可以把这些用户都划到一个组,然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的;

用户和用户组的对应关系是:一对一、多对一、一对多或多对多;

一对一:某个用户可以是某个组的唯一成员;
多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;
多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;其实多对多的关系是前面三条的扩展;理解了上面的三条,这条也能理解;

三、用户(user)和用户组(group)相关的配置文件、命令或目录;

1、与用户(user)和用户组(group)相关的配置文件;

1)与用户(user)相关的配置文件;

/etc/passwd 注:用户(user)的配置文件;
/etc/shadow 注:用户(user)影子口令文件;

2)与用户组(group)相关的配置文件;

/etc/group 注:用户组(group)配置文件;
/etc/gshadow 注:用户组(group)的影子文件;

2、管理用户(user)和用户组(group)的相关工具或命令;

1)管理用户(user)的工具或命令;

useradd    注:添加用户
adduser    注:添加用户
passwd     注:为用户设置密码
usermod  注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov       注:同步用户从/etc/passwd 到/etc/shadow
pwck         注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv  注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger        注:查看用户信息工具
id              注:查看用户的UID、GID及所归属的用户组
chfn          注:更改用户信息工具
su             注:用户切换工具
sudo         注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo      注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit  注:和sudo 功能差不多;

2)管理用户组(group)的工具或命令;

groupadd  注:添加用户组;
groupdel         注:删除用户组;
groupmod        注:修改用户组信息
groups     注:显示用户所属的用户组
grpck
grpconv   注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv   注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;

3、/etc/skel 目录;

/etc/skel目录一般是存放用户启动文件的目录,这个目录是由root权限控制,当我们添加用户时,这个目录下的文件自动复制到新添加的用户的家目录下;/etc/skel 目录下的文件都是隐藏文件,也就是类似.file格式的;我们可通过修改、添加、删除/etc/skel目录下的文件,来为用户提供一个统一、标准的、默认的用户环境;

[root@localhost beinan]# ls -la /etc/skel/
总用量 92
drwxr-xr-x    3 root root  4096  8月 11 23:32 .
drwxr-xr-x  115 root root 12288 10月 14 13:44 ..
-rw-r--r--    1 root root    24  5月 11 00:15 .bash_logout
-rw-r--r--    1 root root   191  5月 11 00:15 .bash_profile
-rw-r--r--    1 root root   124  5月 11 00:15 .bashrc
-rw-r--r--    1 root root  5619 2005-03-08  .canna
-rw-r--r--    1 root root   438  5月 18 15:23 .emacs
-rw-r--r--    1 root root   120  5月 23 05:18 .gtkrc
drwxr-xr-x    3 root root  4096  8月 11 23:16 .kde
-rw-r--r--    1 root root   658 2005-01-17  .zshrc

/etc/skel 目录下的文件,一般是我们用useradd 和adduser 命令添加用户(user)时,系统自动复制到新添加用户(user)的家目录下;如果我们通过修改 /etc/passwd 来添加用户时,我们可以自己创建用户的家目录,然后把/etc/skel 下的文件复制到用户的家目录下,然后要用chown 来改变新用户家目录的属主;

4、/etc/login.defs 配置文件;

/etc/login.defs 文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID和GID的范围;用户的期限等等,这个文件是可以通过root来定义的;

比如Fedora 的 /etc/logins.defs 文件内容;

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail  注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件;
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999   注:用户的密码不过期最多的天数;
PASS_MIN_DAYS   0       注:密码修改之间最小的天数;
PASS_MIN_LEN    5       注:密码最小长度;
PASS_WARN_AGE   7       注:

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                   500  注:最小UID为500 ,也就是说添加用户时,UID 是从500开始的;
UID_MAX                 60000   注:最大UID为60000;

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                   500   注:GID 是从500开始;
GID_MAX                 60000

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME     yes   注:是否创用户家目录,要求创建;

5、/etc/default/useradd 文件;

通过useradd 添加用户时的规则文件;

# useradd defaults file
GROUP=100
HOME=/home  注:把用户的家目录建在/home中;
INACTIVE=-1  注:是否启用帐号过期停权,-1表示不启用;
EXPIRE=   注:帐号终止日期,不设置表示不启用;
SHELL=/bin/bash  注:所用SHELL的类型;
SKEL=/etc/skel   注: 默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;

# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量 资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# df -hl # 查看各分区使用情况
# du -sh # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载 磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况 网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息 进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态 用户
# w # 查看活动用户
# id # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务 服务
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务 程序
# rpm -qa # 查看所有安装的软件包

ls -al #显示隐藏文件
[ctl@com ~]$ date '+%Y-%m-%d %H:%M:%S:%s' #显示年月日时分秒 2016-05-07 16:07:04:1462608424
[ctl@com ~]$ cal 6 2016  # 日历2016年6月
June 2016
Su Mo Tu We Th Fr Sa
1  2  3  4
5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
bc  #打开计算器
man 后面跟命令可以查看 命令的详细使用方法,如果要退出man需要按下'q'
nano命令文件编辑 nano是一个字符终端的文本编辑器,有点像DOS下的editor程序。它比vi/vim要简单得多,比较适合Linux初学者使用。某些Linux发行版的默认编辑器就是nano。
free -m 看啊看内存

文件属性
1,ls
ls -a 查看所有文件
ls -l 查看详细的属性
2,lsattr
查看文件的扩展属性,
如果文件被 chattr +i   添加了写保护,
用lsattr可以看到添加的属性
3,file
查看文件的类型
4,stat
查看文件的状态

chgrp #改变文件所属用户组
chown#改变文件所有者
chmod#改变文件权限r=4,w=2,x=1   u代表user,g代表group,o代表other,a代表all ,+(加入)、-(除去)、=(设置)  rwx 文件或目录 -R代表递归
chmod u=rwx,go=rx test.txt
chmod a-x  startup.sh #全部去掉可执行权限
每种身份(owner,group,others)各自的权限(r、w、x)分数是需要累加的,例如[-rwxrwx---],分数为
owner=4+2+1=7
group=4+2+1=7
others==0+0+=0=0

linux:vi 替换命令
:s/^.*$/\L&/100
##将100行内的小写转换成大写
vi/vim 中可以使用 :s 命令来替换字符串。
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

iostat -xdm 1 #系统级IO监控

2、方法2,需要在当前文件夹中进行:
rm -rf !(keep) #删除keep文件之外的所有文件
rm -rf !(keep1 | keep2) #删除keep1和keep2文件之外的所有文件

linux下删除指定文件之外的其他文件

一、Linux下删除文件和文件夹常用命令如下:
删除文件: rm file  www.2cto.com
删除文件夹: rm -rf dir
需要注意的是, rmdir 只能够删除 空文件夹。

二、删除制定文件(夹)之外的所有文件呢?

1、方法1,比较麻烦的做法是:
复制需要保留的文件到其他文件夹,然后将该目录删除, 然后将需要保留的移动 回来。
mv keep ../ #保留文件(夹) keep
rm -rf * #删除当前文件夹里的所有文件
mv ../keep ./ #将原来的东西移动回来

2、方法2,需要在当前文件夹中进行:
rm -rf !(keep) #删除keep文件之外的所有文件
rm -rf !(keep1 | keep2) #删除keep1和keep2文件之外的所有文件

3、方法3,当前文件夹中结合使用grep和xargs来处理文件名:
ls | grep -v keep | xargs rm #删除keep文件之外的所有文件
说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从 标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件。
好处:使用了grep来正则表达式来匹配文件名字,可以一次保留多个文件,从而进行更加准确的处理。

4、方法4,使用find命令代替ls,改进方法3从而能够处理制定文件夹的文件:
find ./test/ | grep -v keep | xargs rm #删除当前test文件夹中keep文件之外的所有文件
说明,用grep而不用find -name选取名字,因为find选取名字时比较麻烦,对正则表达式支持不够,无法排除指定文件名。

5、方法5,直接使用find命令删除其他文件:
find ./ -name '[^k][^e][^e][^p]*'  -exec rm -rf {} \; #删除keep以外的其他文件。
find ./ -name '[^k][^e][^e][^p]*'  | xargs rm -rf  #删除keep以外的其他文件。推荐!
说明:上面第二行的代码效率高些,原因在于删除多个文件时 -exec会启动多个进程来处理,而xargs会启动一个rm进程来处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: