首页 > 代码库 > ​权限命令,sudo命令,用户管理命令,特殊权限

​权限命令,sudo命令,用户管理命令,特殊权限

权限命令

chmod 777 /文件 或chmod u+x,g-r+,o=w /文件
-R递归 
权限:删除一个文件必须对该文件所在目录有w权限 ,目录权限优于文件权限   目录必须有x权限,不然无法cd,可以ls一级
技术分享
只有root和文件所有者可以chmod,只有root可以改变文件所有者 chown 用户名 /文件 chgrp 用户名/文件
 
umask -S

[root@first home]# umask -S

u=rwx,g=rx,o=rx
查看权限缺省值,新建的文件都没有x权限,因为怕病毒直接执行
umask 777-权限  换缺省值 如想换成rwx r-- r-- ,为umask 033


sudo

su yinxingyouyou
env 查看用户当前环境变量 就是图形界面,分辨率,桌面背景,鼠标移动速度等个性化,可以env看下
env - root/yinxingyouyou 环境变量一起换
 su - root -c "useradd user3" 临时执行root命令,需要密码的

sudo权限
把本来只能root执行的命令赋予普通用户执行,sudo的操作对象是系统命令
让普通用户分担root的工作量 
visudo 也可以直接修改 vi /etc/sudoers man 5 sudoers 
sudo -l 看都赋予了哪些命令
sudo /sbin/shutdown -r now

要添加普通用户到sudo中

root    ALL=(ALL)       ALL
yinxingyouyou    ALL=(ALL)       ALL

说明:格式为(用户名    网络中的主机=(执行命令的目标用户)    执行的命令范围)

如果你希望之后执行sudo命令时不需要输入密码,那么可以形如

    root    ALL=(ALL)       ALL 
    blinux  ALL=(ALL)       NOPASSWD:ALL

输入:wq保存即可。


其中IP不是限制来源IP,是限制访问IP, 是被管理主机的地址



用户管理命令

useradd yinxingyouyou;passwd yinxingyouyou
这个命令敲过后会执行那7个文件 grep更直观,会过滤显示,比如grep yinxingyouyou就看跟这个名字有关的行
grep yinxingyouyou /etc/passwd
grep yinxingyouyou /etc/shadow
grep yinxingyouyou /etc/group
grep yinxingyouyou /etc/gshadow
ll -d /home/yinxingyouyou/
ll /var/spool/mail/yinxingyouyou


useradd -u 666 -g root -G root,bin -c test user -d /yinxingyouyou -s /bin/bash yinxingyouyou 
u是UID g是GID G是附加组,多个用逗号隔开 c是说明,有空格用引号引起来 d是默认目录,比如要用Apache搭建服务器,需要让这个网站来管理它的Apache主目录, s是shell 

新建用户时的缺省值是在/etc/default/sueradd和/etc/login.defs
 /etc/default/sueradd
默认组名 默认家目录 密码过期宽限天数 密码失效时间 默认shell 模板目录 是否建立邮箱
 /etc/login.defs
除去注释行,密码有效期,密码修改间隔,密码最小位数,密码到期警告,最小和最大UID范围,加密模式SHA512

passwd
主账号直接回车或者加相应用户名
子账号 直接回车,输一遍原密码,输两遍复杂性的不是基于字典的密码,退格键也是一个字符,设置时不可以按退格
passwd-s yinxingyouyou 查询密码状态 1.用户密码设定时间 2.密码修改间隔时间 3.密码有效期 4.警告时间 5.密码不失效
passwd -l yinxingyouyou 锁定用户 其实是把/etc/shadow下的密码串前面加了个!,去试试     -u解锁用户
echo "123" | passwd --stdin yinxingyouyou stdin是接受这个字符串作为用户的密码。这命令主要是用在shell编程里批量添加用户用

usermod 修改已存在的用户的信息-u 666 设置UID -c “test user”用户说明 -G 用户 组名 修改用户附加组  -L 锁定 -U解锁
锁定用户命令很多, passwd -l user1;手工修改/ect/passwd,用户登录权限从/bin/bash改成/sbin/nologin;直接把用户注释掉,在前面加#;vim修改shadow,在用户密码前面手工加! usermod -L 用户名

chage修改用户密码状态 
技术分享
chage -d 0 yinxingyouyou,这个命令其实是把密码修改日期归零了,这样用户一登录就必须修改密码(试),主要用在批量创建用户时用

awk -F‘:‘ ‘{if($3+0>500) print $0}‘ /etc/passwd这个是打印出普通用户


userdel -r yinxingyouyou 同时删除家目录 
如何手工删除用户
技术分享

id yinxingyouyou 查看用户UID GID 所属组
想强制把一个用户改成超级用户,就把passwd里的UID改成0,所以UID也是可以重复的

把用户所属组换成0组,并不能使其变成超级用户,不信试试,要改UID,不是改GID


影子文件/etc/shadow 8个字段
1.用户名
2.加密串,就算密码一样,加密串也不一样。*或者!!代表用户不能登录。所以临时禁用一个用户可以在密码串前加!
3.密码最后一次修改日期。1970年1月1日,到修改密码的那天。
4.允许两次修改密码的最小时间间隔 和3相比
5.密码有效期,默认为好几百年,想让这个用户90天必须改一次,可以设成90
密码有3个原则:复杂性(不能是123456),时效性(定期修改),易记性
6.到期警告时间 7就是说提前7天告诉你密码要到期了
7.密码过期后的宽限天数,空白就是一天都不行,5就是宽限5天,-1就是宽限到永久
8.账号失效时间,到这个时间账号就不能用了,要用时间戳表示 
把时间戳换算成日期date -d"1970-1-1 16606 days" 
把日期换算成时间戳echo $(($(date --date="2014/01/06" +%s)/86400+1))

组信息文件/etc/group和组密码文件/etc/gshadow 4个字段
1.组名
2.组密码 root可以给普通用户设个组管理员,组管理员可以用组密码管理其他组,因为root太忙了没时间
3.GID 也是普通用户组ID是500以后,超级用户组ID是0
4.组中附加用户 
所以,不用添加命令(useradd grpadd),而是直接在里面修改,也可以添加用户和组,这就是手动添加用户


组管理命令 添加、删除、把用户加进去
groupadd 组名  (-g 制定GID,很少用)加完去/etc/group看看
groupmod 组名 (-g GID改组ID -n 新组名 改组名,用的才多)
groupdel 组名 如果组中有作为初始组的用户,不能删,如果只有附加组,可以删
gpasswd 组名 -a 用户名 把用户加组 -b 用户名 把用户从组移除 然后去vim /etc/group看附加组加了没。其实直接改文件反而更好记,linux的命令归根结底也都是对文件进行操作,所以直接改文件也行。


特殊权限

前面讲了基础权限,用户,组,其他人,读,写,执行

ACL权限 一个文件只能属于一个组,如果想把文件给所有者,所属组以外的一个人共享,就要用ACL,ACL主要是解决身份不足的问题
ACL都是默认开启的,开启方法见视频

在/创建projectx目录,创建projectx组(groupadd),把项目人员加进来(gpasswd -a 用户名 projectx或者直接去/etc/group改),调整目录权限(改变所有者chown root:projectx /projectx,然后改变权限chmod 770 /projectx),权限rwx,其他人权限0
setfacl -m u:linshi:rx -R /projectx/ u换成g是添加组的权限
getfacl /project/ 查看修改的权限

加完ACL权限后会ll -d查看会有+在权限后面 
最大有效权限mask acl设置的用户和组的限要和mask权限相与,mask 是设置除所有者外的使用者的权限
setfacl -m m:rx /projectx/ 设置最大有效权限
删除ACL权限 setfacl -x u:用户名 文件名   u换成g就是删除组的ACL权限
setfacl -b 文件名 删除文件的所有ACL权限,回车后ll -d看看+没了

默认ACL权限,让目录里的新加文件继承父目录的权限,只能是新加文件,老文件不会。是这个默认ACL权限创建后的新建文件。
setfacl -m d:u:用户名:权限 文件名   加了个d: 为default
这两个命令都只能对目录,不能对文件

文件的3个特殊权限
setUID
1.只有可执行的二进制程序才能设定SUID权限,2.命令执行者要对该程序有x权限(设置setUID之前记得加x权限),3.命令执行者在执行该程序时获得该程序的属主身份,4.setUID只在该程序执行过程中有效 4个缺一不可
chmod 4755 文件名 或者 chmod u+s 文件名 第一个4就是SUID权限,表明用户有SUID权限 -rwsr-x---
取消setUID权限 chmod 755 文件名 或者 chmod u-s 文件名
如果给vi设一个4755权限,普通用户用这个的时候就变成root了,要知道linux所有东西都是以文件形式保存的
要定期扫描,保证系统中没有计划之外的setUID出现
setGID
-rwx--s--x   chmod 2755(g+s) 目录名 设置SGID权限 chmod 755 (g-s) 目录名 取消SGID权限
对文件的作用跟SUID类似,对目录的作用是普通用户在这个目录内创建的文件的所属组都是这个组,而不是用户的主组
sticky BIT
普通用户应该对该目录拥有w和x权限。只对目录有效
chmod 1775(o+t) 目录名 设置粘着位 chmod 775(o-t) 目录名 取消粘着位   虽然权限是dwrxwrxwrx 但加t后自己创建的文件别人可以改(w),不能删(对root也不能删吗?)
每一种特殊权限都有其特定对象,所以7755没有意义。其中一个权限(SBIT),对文件没用,一个权限(SUID)对目录没用

文件系统属性chattr权限 change attributes
chattr +、-、=   a、i、A 文件或目录    lsattr -a 文件或目录看是否有i
chattr +i 文件或目录 锁定文件,不能改名删除或修改内容;只能修改目录下的文件的数据,不能删除或建立文件,包括root
i属性是非常好的防止误操作的一个权限 
chattr +a 文件或目录 只能添加,不能删除,对于文件;只能修改,建立文件,不能删除,对于目录
所以只能用echo追加,不能用vi

chattr命令不能保护/、/dev、/tmp、/var目录。


a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。

i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。

A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。



​权限命令,sudo命令,用户管理命令,特殊权限