帮助


--help 作为命令的选项

-h

少部分命令既没有--help也没有-h

ls中的-h选项是人性化显示


#ls --help查对应的选项说明

在一个帮助语法里面没有被任何符号包裹的东西是必选的

例子:Usage: ls [OPTION]... [FILE]...

[]   可选项

...  表示前面的东西有多个

{}   必选项

<>   

|   或者



(shell是一个用来人与机器沟通的命令解释器,bash,查看用的是哪种shell

echo $SHELL

[root@rhel6u5 doc]# echo $SHELL

/bin/bash

)

内建命令 装了shell产生的命令称为内建命令,内建命令没有--help

查看帮助help 内建命令如:help cd

help for


外建命令 除了shell以外其他软件产生的命令就是外建命令,ls就是外键命令,

查看方式:

[root@rhel6u5 doc]# rpm -qf /bin/ls

coreutils-8.4-31.el6.x86_64

外键命令的帮助可以使用--help


**查看是内建还是外建命令

[root@rhel6u5 doc]# type cd

cd is a shell builtin

[root@rhel6u5 doc]# type ls

ls is aliased to `ls --color=auto'


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

man手册


rhel5里总共9章

rhel6里总共8章


第一章 基本命令

第二章 系统调用的函数(linux下c语言开发者使用的)

第三章 c语言标准库函数(如man 3 qsort)

第四章 有关设备文件的帮助

第五章 配置文件的帮助(dba常用的)

第六章 游戏相关

第七章 杂项

第八章 系统管理(如挂载、rpm等,也是dba常用的,man 8 rpm)


*******************重要*************

如果要查的关键字在系统中只有一个,那么使用man rpm就行,不用加章节数字

如果要查的关键字在系统中有多个,如passwd,如果使用man passwd则直接出章节靠前的passwd


whereis passwd可以看到关键字所属位置如下:

[root@rhel6u5 doc]# whereis passwd

passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1.gz


**要查找章节使用man -f命令,如下:

[root@rhel6u5 doc]# man -f passwd

passwd               (1)  - update user's authentication tokens

passwd               (5)  - password file

passwd [sslpasswd]   (1ssl)  - compute password hashes


man -k passwd 把凡是带有passwd关键字的手册全部都列出,-k是key,作用是搜索

带有passwd关键字的man手册。


g到开始G到结尾 /可以搜索关键字  不能编辑 q退出

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

info 使用直接info加关键字

info rpm

进入之后直接敲?会有各种快捷键的帮助,提示如何操作

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

/usr/share/doc --每个软件对应的帮助文档或者模板文件一般默认安装在这个目录下


例子:

vim /usr/share/doc/dhcp*/


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

用户

添加账户

#useradd 账户名称

-u uid

-g gid

-s shell

-d 家目录

-c 描述

-M 不创建家目录


查看账户

[root@rhel6u5 doc]# id tom

uid=502(tom) gid=502(tom) groups=502(tom)


user identify

group identify


每次创建新账户时都会默认创建一个和新账户同名的新组,且会在home目录下产生

一个同名家目录

这个组称为这个用户的初始组


主属组 groups中第一个值

附属组 groups中第一个值之后逗号隔开的后面的所有的组


#cat /etc/passwd这个文件

每行一个账户,每行用冒号分成7列

第一列是用户名,第二列x代表密码(在这里不能改密码,但是可以删除x删除密码)

第三列uid(普通账户和系统账户的uid范围是0-60000),

第四列gid(普通组和系统组id范围0-60000),

有关0-60000的由来参见文件/etc/login.defs中的uid_min uid_max...

第五列comment描述信息

第六列家目录绝对路径

第七列登录shell


uid和gid小于500的都系统账户和组,一般情况的系统账户都是不允许登录的

如一些账户的登录shell是/sbin/nologin


修改账户

直接修改passwd文件,代表密码的x不能修改,其他的可以随便修改

#usermod(选项和添加账户的选项差不多)

#usermod -u 600 tom

-g gid

-c 描述字符

-d /tom

-s /sbin/nologin

-l 用户名


修改密码

#passwd tom 给别的用户修改密码,只能root用户做

#passwd 给自己修改密码,所有用户都可以做


删除账户

#userdel -r tom 删除用户连带家目录和个人邮箱一起删除


影子文件(与密码相关) /etc/shadow

第一列用户名,第二列加密密码,

第三列是1970年1月1日到此用户上一次修改密码经过了多少天

第四列是最小密码年龄,两次修改密码之间的最小间隔

第五列是密码有效期

第六列是密码过期警告时间

第七列密码过期之后还能用多少天

第八列账号的有效期

第九列预留


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



添加组

#groudadd 组名


查看组

#cat /etc/group


修改组

直接修改/etc/group配置文件

第一列组名 第二列代表组密码 第三列gid 第四列附属组员


给组添加组员

#gpasswd -a tom grp1  //a是add

删除组员

#gpasswd -d tom grp1  //d是delete

设置组管理员

#gpasswd -A tom grp1  //A是administrator

#cat /etc/gshadow 第三列是组管理员名字


删除组

#groupdel 组名

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

/etc/login.defs 有关

PASS_MAX_DAYS   99999  

PASS_MIN_DAYS   0

PASS_MIN_LEN    5

PASS_WARN_AGE   7


UMASK权限077 对应的是700 drwx------




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

普通账户

root账户



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


权限

1.ugo权限

 *****最重要的 针对对象是普通账户,一般情况除了x权限都对root账户不生效

user group other  用户 组 其它人 对某个文件的操作权限

查看权限

[root@rhel6u5 test]# ll passwd 

-rw-r--r--. 1 root root 1871 Mar  2 09:32 passwd

文件类型 权限 .跟selinux相关(未详细介绍)

rw- r-- r--

文件所有者对文件的操作权限  组所有者对文件的操作权限  其它人对文件的操作权限

r  read

w  write

x  execute


数字表示

4=r

2=w

1=x

rwx rw- r-x

 7   6   5


修改权限

#chmod u+x a

#chmod u-w a

u-x

u+w,g-x,o+r

u-w+x

a-x  a表示ugo三个位置同时进行操作


#chmod 766 a


****-rw-r--r--. 1 root root    0 Mar  2 09:35 aaa

其中1是硬链接的个数


修改所有者和所属组

#chown wing a  效果是把a文件的所有者改成了wing,所属组不变

#chown :wing a  等价写法chown .wing a效果是把a文件的所属组改成了wing,所有者不变

#chown wing:wing a  等价写法chown wing.wing a


2.隐藏权限

用来限制root账户的,防止root账户的误删除,因为ugo权限对root账户的限制基本不生效

#chattr +a a.txt 之后使用root想删除这个文件就会提示权限不足了


例子:

[root@rhel6u5 test]# chattr +a aaa

[root@rhel6u5 test]# rm -rf aaa 

rm: cannot remove `aaa': Operation not permitted

[root@rhel6u5 test]# lsattr aaa 

-----a-------e- aaa

去掉这个隐藏权限

chattr -a aaa

chattr +i aaa

chattr -i aaa

其中+a的可以往这个文件里追加内容(使用输出重定向>>),

+i的这个文件只能看,不能向里追加内容。


目录的写权限就是对目录里的文件进行创建和删除

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

umask

反掩码

决定文件和目录的默认权限

如果没有umask码,那么创建一个文件默认权限是666,目录默认权限是777

[root@rhel6u5 test]# umask

0022


修改反掩码:

[root@rhel6u5 ~]# umask 0011

[root@rhel6u5 ~]# umask

0011


系统实际权限的计算方法:

777   111 111 111              111 111 111        111 101 101 -->755 

666   110 110 110              110 110 110        110 100 100 -->644

022   000 010 010  -->按位取反 111 101 101  与上面的原始权限做与运算


快捷求法:

rwx rwx rwx   777(目录默认权限) 与反掩码逻辑进行按字母位差集结果是rwx r-x r-x 755

rw- rw- rw-   666(文件默认权限) 与反掩码逻辑进行按字母位差集结果是rw- r-- r-- 644

--- -w- -w-   022(反掩码值)

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

作业:

创建账户user1,user2,user3

要求user1的uid为700,user2的uid为701,user3的uid为702

修改user1的密码为123,user2的密码为456

使用user1账户创建文件a.txt,要求user1对a.txt可读写,但不能执行,

user2账户对a.txt没有任何权限,user3对a.txt只拥有可执行权限

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

facl

file access control list 文件访问控制列表,用来扩展ugo权限的特殊权限

用于单独给某一个账户设置权限


#setfacl --设置facl权限

[root@rhel6u5 ~]# setfacl -m u:tom:rwx /test/a.txt

//  -m是修改 u:用户名:权限 文件


#getfacl --查看facl权限

[root@rhel6u5 ~]# getfacl /test/a.txt 

getfacl: Removing leading '/' from absolute path names

# file: test/a.txt

# owner: root

# group: root

user::rw-

user:tom:rwx  --这一行是设置之后新添加的

group::r--

mask::rwx     --这一行是设置之后新添加的

other::r--


-R recursive 递归设置

setfacl chmod chown 都可以加-R(setfacl中-R要放在-m前面)


facl权限的继承(默认权限):使用递归设置选项应用于目录之后,下面的子目录及文件也都有了

对应的权限,但是下面后来创建的子目录和文件不会有这些权限,需要使用权限的

继承setfacl -m d:u:user1:rw abc   其中的d就是default

**继承权限对目录本身是不生效的

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

suid

只能给二进制可执行命令设置suid,当给一个命令设置了suid之后,以后不管谁来执行这条

命令,都会拥有root对这条命令所拥有的权限

例子:

[root@rhel6u5 ~]# which cat   --找到cat命令的存放位置

/bin/cat

[root@rhel6u5 ~]# ls -al /bin/cat   --查看权限

-rwxr-xr-x. 1 root root 48568 Oct 17  2013 /bin/cat

[root@rhel6u5 ~]# chmod 4755 /bin/cat  --修改可执行权限chmod u+s /bin/cat

[root@rhel6u5 ~]# ls -al /bin/cat   

-rwsr-xr-x. 1 root root 48568 Oct 17  2013 /bin/cat   --此时变成了(rwx+s)r-xr-x

此时再用别的用户,cat命令可以查看任何本来没有权限查看的文件了


****从此可以看出,linux中的权限本质上是一个4位的八进制数如0755等


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

sgid

所属组继承(给目录设置,设置了sgid之后,目录的所属组会继承给它新的子目录和子文件)

chmod 2775 /xxx/xxx或者chmod g+s /xxx/xxx(类似于suid)

此时再在这个目录下创建文件,那么新创建的文件会继承目录的所属组

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

sticky(t)

***给目录设置 设置了t权限之后,所有人(普通账户)都不能删除其他人的文件

/tmp目录的o就设置了t权限,防止用户之间删除文件,一般用户777权限的目录

设置方法

#chmod 1777 /test

#chmod o+t /test

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

(#echo hello>a  其中echo是打印命令,

>输出重定向 覆盖

>>输出重定向 追加

echo hello > a.txt

echo hi >> a.txt

echo hehe >> a.txt


<输入重定向 覆盖

<<输入重定向 追加

例子:cat /etc/passwd 其本质就是cat < /etc/passwd

#!/bin/bash

cat >> d.txt << EOF

111

222

333

EOF


其意义是把123行的内容交给cat命令,然后用cat命令输出重定向到文件d.txt中


cat >> a.txt

之后输入的内容然后ctrl+d就输入进文件中了

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

文件类型

7种

#ll a.txt

-普通文件 (有些系统中f表示普通文件)

d目录文件

b块设备文件

c字符设备文件

s套接字文件   (/dev/log)

p管道文件

l符号链接文件  (软链接)

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