五、chown、chgrp命令

从名字就能够猜測他们是干嘛的,可是这两个命令须要root权限。

chown命令的格式为:chown user:group file  中间的user : group三项能够依据须要省略某部分。比方如今有个文件file属于用户bob,bob的权限是rwx,而bob属于组group1,group1的权限是r。有另外一个用户jack属于group2。

chown jack file

这就把file的woner从bob改成了jack,可是file所属的群组仍然是group1。事实上一開始我也认为非常混乱,这特么什么情况?权限要怎分配?可是使用“ls
-l”命令确实显示的是owner为jack,group为group1。查了一些资料后,我认为能够这么理解:文件初创的时候,创建者拥有的权限由umask决定;本例中bob是创建者,可是当owner由bob改成jack的时候,jack直接继承bob的全部权限,不管bob后来对file的权限进行了如何的改动,这一点我亲自敲命令验证过了。

而至于file的群组仍然是group1,意思是说,group1里面的全部成员包含原来的bob,仍然具有当初对file的权限,在本例中就是r权限。须要注意的是,此时jack并不属于group1,而仍属于group2。chown仅仅是改变文件本身的从属,可是不改变用户与群组的从属关系,如本例中chown把file的owner改成了jack,可是并没有同一时候把jack拉入group1。

chown jack:group2 file

这样除了能达成上面那个命令的改变owner的效果之外,还把file的所属群组改成了group2。可是依据我们前面的分析,这里的group2并不是是绑定的,即我们也能够随便改成group3。总结:user和group能够不是从属关系。然后权限的分配是:jack继承bob的全部权限,group2里的成员继承group1其它成员(除了bob以外的人)对file的全部权限。

chown jack: file

显然这里省略了groupname,那么依据惯例会有一个默认的上场,是哪个呢?依据资料显示,是login group of user jack,关于这个群组,此处省略一千字,后面会分析,我们能够粗浅的觉得是jack的眼下绑定的那个群组。

chown :group2 file

这个就更简单了,owner不变,可是所属群组改成了group2,意思是改组的成员继承了group1其它成员的权限。

看到这里,我发现chown已经把chgrp的活儿都干了,事实上chown曾经的版本号是不同意改变群组的,这是chgrp存在的意义。可是如今chown升级了,chgrp就变得可有可无。它的语法跟chown是一样的,仅仅是不能改变user而已。如,chgrp root
file,这里的root会被默觉得root群组而非root用户。

六、增删用户相关指令

先说一下几个相关的设定文档,最重要的两个档案是/etc/passwd和/etc/shadow,前一个主要涉及账户名称和相应id,后者主要涉及password。先分别查看一下他们长什么样。

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

这两行是截取的passwd的内容,以冒号作为分隔符,分成了七段:第一段是账户名称,说白了,这是给人类看的,方便记忆,而电脑却是用数字id作为索引的,passwd的作用就是把二者相应起来,像一个函数;第二段的x表示加密的password,转移到shadow中; 第三段和第四段各自是uid和gid,即用户id和群组id;第五段是凝视或描写叙述,用来说明这个账户是干什么的;第六段是该账户的家文件夹所在地;第七段就是用户使用的shell程序,默觉得/bin/bash,也能够设定成zsh等其它工具。

root:!:16254:0:99999:7:::

daemon:*:15994:0:99999:7:::

这是截取的shadow的内容,每行被冒号分成九段。第一段就是username,必须先在passwd中存在;第二段是经加密过的用特殊符号表示出来的password;第三段表示近期那次更改password的日期,但它的表示方法却是从1970 年 1 月 1 日起至今的天数;第四段是mindays,即保持password稳定不变的最小天数,今当超过此限才干修改password,故此值要不小于0;第五段为maxdays,即保持password有效的最大天数,超过此限必须更改password,否则账户会临时失效,当然能够设一个非常大的数字,表示password不须要修改;第六段是warn,即password有效期到期之前多少天向用户发出警告;第七段是inactive,指的是password到期后还能够保持这个账户信息的天数,超过此限将会封锁账户;第八段是expire,即账号失效日期,用从1970
年 1 月 1 日算起的天数表示,超出这个天数该账户就会失效,一般用于收费系统中;第九段是reserve,即保留字段,是待开发的字段,眼下没有什么用。

须要注意一下第二个字段,若password的第一个字符是叹号或星号,则表示临时这个账号无法登陆或不用登陆linux,一般刚增加的用户这里都是叹号,而系统服务账号则通常是星号。我们看到我的root账户相应的password字段居然也是叹号,这事实上正好印证了前面关于ubuntu系统root账户奇葩设定的说法。

以下说说useradd命令,基本使用方法非常easy,就是简单的 useradd name,然后就会发如今/home文件夹下出现了一个以name命名的文件夹,这表示这个用户的家文件夹等相关信息资料已然建立了,可是临时还不能登陆,须要用passwd命令设定它的password之后才干够登陆到linux系统。

除了这样的傻瓜式的操作外,useradd还提供了一系列參数以便精细化控制用户账号的建立过程,这些參数就相应了/etc/passwd文档每行被冒号分隔的七个字段。我们分别介绍。

-u   后面跟一个uid,这个表示uid的数字还是不能乱写的,有一些讲究:首先是范围问题,有效的uid号码是从0到65535,在ubuntu中应该是到65533,由于我查看/etc/passwd时发现这么一行——nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin,我猜这最后一个已经被系统预设成了65534,所以不能超过这个数了。另外,在ubuntu中,前一千位即0~999是留给系统用户的,普通用户仅仅能从1000開始,如装机时建立的账户信息就是这样:m:x:1000:1000:m,,,:/home/m:/bin/bash。最后就是使用的uid必须是没有被其它已经存在的账户占用的。假设不加这个參数,默认就是直接从已存在的uid中找到最大的那个加1就好。

-g   后面的參数是已经存在的群组名或其id,ubuntu默觉得新建一个与username同名的群组

-c   后面跟的就是凝视说明内容

-d  指定家文件夹所在,ubuntu默觉得在/home文件夹下

-s   指定所使用的shell,ubuntu默觉得/bin/bash

除了这些主要的參数之外,另一些比較高级的,感兴趣的能够自己man useradd,我就不多说了。

usermod命令

这个命令是用来改动账户相关信息的,一般来讲,一旦某个用户建立,尽量不要再去改动username和用户id,可是其它的却是能够改的。改的方式有两种,一是直接改动两个设定档的对应的字段,二就是使用usermod命令。该命令的基本參数跟useradd一样,由于该改改去无非就是那几个字段,只是除此之外另一些高级的。

-l  改动username,如usermod -l bob jack   这就把jack这个用户的名字改成了bob

-u/g/c/d/s,看名字就知道改动哪个字段了,基本上除了不能改password,usermod把用户账户能改的信息全改了。

-L 临时将使用者的password冻结,让他无法登入。事实上仅改 /etc/shadow 的password栏。

-U   -L的逆操作,就是解冻账号。

-G   后跟已存在的群组名或群组id,表示添加该用户的群组。我们知道一个用户能够属于多个群组的。

-e    后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据——失效日期。

-m   新建一个家文件夹或覆盖原来的家文件夹,usermod的-d參数不过改动了passwd的内容,并没有实际建立家文件夹。

userdel命令,即删除某个用户账号,加上-r參数则表示连家文件夹一起删除,如 userdel -r bob 。有时候会显示“用户xx已经登陆”,即无法删除,这时能够加上-f參数,然后重新启动就可以。

Ubuntu下的用户和权限(二)的更多相关文章

  1. Ubuntu下的用户和权限(三)

    七.增删群组相关的命令 相同的我们要先介绍两个重要的设定档:/etc/group和/etc/gshadow,前面那个事实上和/etc/passwd一样.而后者就是群组的password表了.先看看长啥 ...

  2. ubuntu下root用户默认密码及修改方法

    [ubuntu下root用户默认密码及修改方法] 很多朋友用ubuntu,一般都是装完ubuntu系统,马上就修改root密码了,那么root用户的默认密码是多少,当忘记root用户密码时如何找回呢, ...

  3. ubuntu下新建用户

    ubuntu下新建用户和RedHat系列的linux有点不一样 新建用户的命令是useradd,修改密码是passwd,如下: sudo useradd zhuhui sudo passwd 1234 ...

  4. ubuntu 下修改文件访问权限chmod 777 -R *血的教训!没事别乱开权限!用谁开谁的就行。。。最后不要用这个命令,文件操作全部改用终端

    本文转自: 个人建议 Ubuntu下修改目录权限命令如下:chmod 600 name (只有所有者有读和写的权限)chmod 644 name (所有者有读和写的权限,组用户只有读的权限)chmod ...

  5. 阿里云Ubuntu下安装、配置权限和导入本地mongodb

    ---恢复内容开始--- 第一部分:首先先在Ubuntu下安装好mongodb,步骤如下: 首先我们需要借助远程管理工具链接到阿里云上的ubuntu系统,接着进行如下操作 一.导出软件源的公钥 sud ...

  6. Ubuntu 下新建用户后无法sudo

    在ubuntu 下新建一个用户,然后发现无法使用sudo命令. sudo adduser test_username sudo passwd test_username # 这里就添加了一个用户,然后 ...

  7. kali下添加用户和权限分配

    1.添加用户 useradd -m test #-m的意思是创建用户的主目录 2.为用户test设置密码. passwd test 3.为添加的用户赋予权限(-a 添加 :-G 群组) 如果没有这一步 ...

  8. Ubuntu下搭建多用户多权限ftp

    #1.切换root用户模式 (已在root模式下的请忽略) sudo -i #然后提示你输入当前用户密码,输入密码后回车后如果密码正确控制台就变成root@***:/# 了. #2.更新软件源 apt ...

  9. MVC开发模式下的用户角色权限控制

    前提: MVC开发模式 大概思想: 1.在MVC开发模式下,每个功能都对应着不同的控制器或操作方法名(如修改密码功能可能对应着User/changepd),把每个功能对应的控制器名和操作方法名存到数据 ...

随机推荐

  1. cocos2d-x 3.1.1 学习笔记[17] 关于这些活动功能

    供cocos2d-x通常使用的方法,我有一个好脸色.这项研究真的奖励. 向导首先,定义,实施一系列连续动作. 对于我们的行动能回调函数,我们必须申报并加以实施. void callBack(); vo ...

  2. MyReport报表引擎2.0.0.0新功能

    Web报表引擎:Web上的良好的打印解决方式,WinForm的打印预览体现,报表自己主动化,支持直接打印,页小计,统计,转成金额大写,一维码显示等功能,满足中国式报表的常见功能需求.Web报表编辑器: ...

  3. UVa 11621 - Small Factors

    称号:发现没有比给定数量少n的.只要2,3一个因素的数字组成. 分析:数论.贪婪,分而治之. 用两个三分球,分别代表乘法2,和繁殖3队列,队列产生的数字,原来{1}. 然后.每取两个指针相应元素*2和 ...

  4. 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置

    原文:第十七章--配置SQLServer(2)--32位和64位系统中的内存配置 前言: 本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE ...

  5. android 更新实现自己主动

    其主要原理是: 在应用程序启动.取server在版本 , 以下这个是获取当前应用的版本号信息 private void getCurVersion() { try { PackageInfo pInf ...

  6. MEF初体验之十二:Composition Batch

    一个MEF容器实例是不可变的.如果catalog支持改变(像观察一个目录的改变)或是如果你的代码在运行时添加或移除部件,改变都可能发生.以前,你不得不作出改变并在组合容器上调用它的组合方法.在Prev ...

  7. Notes系统安全日志

    最近出现了一些不正常的操作系统,但到目前为止,只有一个粗略的验证,然而,彻底清除.对于安全日志系统中的一些总结. 1.系统登录必须先登录 该日志必须包含:登录时间.注销时间.登录ip.主机名.MAC住 ...

  8. ruby 删除文件夹(包括文件夹中的文件夹和文件)

    def deleteDirectory(dirPath) if File.directory?(dirPath) puts "是文件夹"; Dir.foreach(dirPath) ...

  9. ASP.NET5 Beta8

    ASP.NET5 Beta8 ASP.NET5 beta8现已上都的NuGet作为一个工具升级到Visual Studio2015!此版本极大地扩展.NET核心对OS X和Linux所支持的范围.您现 ...

  10. js 面向对象选项卡

      <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" conte ...