帮助
--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符号链接文件 (软链接)
-----------------------------------------