8232 Commits

Author SHA1 Message Date
antirez
1c15e0ff20 ACL: fix setting of FAST flag. 2019-02-12 17:06:26 +01:00
antirez
d78a6fdcbd ACL: CAT subcommand implemented. 2019-02-12 17:02:45 +01:00
Guy Benoish
9cd3b12cdf Trim SDS free space of retained module strings
In some cases processMultibulkBuffer uses sdsMakeRoomFor to
expand the querybuf, but later in some cases it uses that query
buffer as is for an argv element (see "Optimization"), which means
that the sds in argv may have a lot of wasted space, and then in case
modules keep that argv RedisString inside their data structure, this
space waste will remain for long (until restarted from rdb).
2019-02-12 14:21:21 +01:00
Salvatore Sanfilippo
19696ba011 Merge pull request #5833 from soloestoy/masteruser
ACL: add masteruser configuration for replication
2019-02-12 10:27:59 +01:00
zhaozhao.zz
de0f42bff3 ACL: add masteruser configuration for replication
In mostly production environment, normal user's behavior should be
limited.

Now in redis ACL mechanism we can do it like that:

    user default on +@all ~* -@dangerous nopass
    user admin on +@all ~* >someSeriousPassword

Then the default normal user can not execute dangerous commands like
FLUSHALL/KEYS.

But some admin commands are in dangerous category too like PSYNC,
and the configurations above will forbid replica from sync with master.

Finally I think we could add a new configuration for replication,
it is masteruser option, like this:

    masteruser admin
    masterauth someSeriousPassword

Then replica will try AUTH admin someSeriousPassword and get privilege
to execute PSYNC. If masteruser is NULL, replica would AUTH with only
masterauth like before.
2019-02-12 17:12:37 +08:00
antirez
34f11c811d ACL: when client->user is NULL the client is a superuser.
Related to #5832.
2019-02-12 09:44:30 +01:00
antirez
bece806662 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2019-02-12 09:43:50 +01:00
Salvatore Sanfilippo
be28ee2258 Merge pull request #5832 from soloestoy/show-client-user
ACL: show client's user
2019-02-12 09:42:14 +01:00
zhaozhao.zz
9150d9246e ACL: show client's user 2019-02-12 16:03:58 +08:00
Salvatore Sanfilippo
da3fcfae0b Merge pull request #5831 from lamby/x32-warnings
Don't assume the __x86_64__ pointer size to avoid warnings on x32
2019-02-11 17:17:14 +01:00
Chris Lamb
d2c38031dc Don't assume the __x86_64__ pointer size to avoid warnings on x32.
__x86_64__ is defined on the on the x32 architecture and the conditionals in
debug.c therefore assume the size of (void*) etc:

  debug.c: In function 'getMcontextEip':
  debug.c:757:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
       return (void*) uc->uc_mcontext.gregs[16]; /* Linux 64 */
              ^
  debug.c: In function 'logRegisters':
  debug.c:920:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
       logStackContent((void**)uc->uc_mcontext.gregs[15]);

We can remedy this by checking for __ILP32__ first. See:

  https://wiki.debian.org/ArchitectureSpecificsMemo

... for more info.
2019-02-11 17:12:27 +01:00
antirez
7983f6e884 ACL: return error when removing a non existing password.
Otherwise it's very simple for an human mistake to think a password is
removed because of a typo in the ACL SETUSER myuser <somepass command
line.
2019-02-11 17:01:58 +01:00
antirez
46243329d4 ACL: refactor+fix AUTH check in processCommand().
The part that is fixed is that now if the default user is off whatever
is its configuration the user is not considered authenticated.
2019-02-11 16:47:02 +01:00
antirez
3822a465f2 ACL: ACLFreeUserAndKillClients(): free user later.
Soon or later we may have code in freeClient() that may have to deal
with ACLs. Imagine for instance the command proposed multiple times (not
sure if this will ever be accepted but still...):

    ONCLOSE DEL mykey

Accumulating commands to run when a client is disconnected. Now the
function is compatible with such use cases.

Related to #5829.
2019-02-11 16:28:31 +01:00
zhaozhao.zz
5cfa46fd14 ACL: kill the old users clients after load aclfile 2019-02-11 16:26:00 +01:00
John Sully
6059bc7e67 Initial work of multithreaded key-db. Note: Fails tests 2019-02-11 03:36:18 -05:00
John Sully
3751d2b737 Fastlock fixes
Former-commit-id: da84b26785b82672ed8217b74464fa294049bc2b
2019-02-10 22:00:19 -05:00
John Sully
eefa3e9168 Fastlock fixes 2019-02-10 22:00:19 -05:00
John Sully
ffad5f32bc move ae to C++
Former-commit-id: eb9070c8333ebe7d6e0d622f90e904c1b17e9710
2019-02-10 20:24:11 -05:00
John Sully
bd46c2041e move ae to C++ 2019-02-10 20:24:11 -05:00
John Sully
e86543a00e Keep pool allocator up to date (even though we aren't enabling it)
Former-commit-id: b7b503d3ce6c20d28684c83ad3855bb7486cb3d3
2019-02-10 19:33:07 -05:00
John Sully
32d0b3141a Keep pool allocator up to date (even though we aren't enabling it) 2019-02-10 19:33:07 -05:00
John Sully
6914dafd6c Prevent so many copies of sdslen getting added
Former-commit-id: 327bbec981feb0d90df416281575953cd71ef6c2
2019-02-10 19:31:46 -05:00
John Sully
adabbca14b Prevent so many copies of sdslen getting added 2019-02-10 19:31:46 -05:00
John Sully
f1fc8edb77 Performance enhancements!
Former-commit-id: 7175a8e4ebee74233702b8e308c0d57661b54bac
2019-02-09 13:05:06 -05:00
John Sully
5be3566838 Performance enhancements! 2019-02-09 13:05:06 -05:00
John Sully
4059814245 Reduce memory usage for in place strings by 8 bytes
Former-commit-id: 9aefc183c696733b6b15128107430c0c95629681
2019-02-09 13:04:18 -05:00
John Sully
f6736cd713 Reduce memory usage for in place strings by 8 bytes 2019-02-09 13:04:18 -05:00
John Sully
219b0f7441 complete rebranding with tests passing
Former-commit-id: 3e9b8677098059964f3f7a492394da4ede9bd37d
2019-02-09 10:11:46 -05:00
John Sully
dac1213462 complete rebranding with tests passing 2019-02-09 10:11:46 -05:00
John Sully
3f9736a654 Fix bug where we try to load a database with no name
Former-commit-id: e8b5bbf7a16c1d82c8c063a88acd446de1c1392a
2019-02-09 07:56:45 -05:00
John Sully
5420f93de9 Fix bug where we try to load a database with no name 2019-02-09 07:56:45 -05:00
John Sully
8e0450c32e remove Redis branding
Former-commit-id: 79ef18e8853421e22f4192591b8c543eeeb79356
2019-02-08 17:56:32 -05:00
John Sully
cedd67eaff remove Redis branding 2019-02-08 17:56:32 -05:00
antirez
48423054ea ACL: add command fingerprint for CAT subcommand. 2019-02-08 12:40:42 +01:00
antirez
fcd5ff1a76 ACL: add arity check in ACL command where missing. 2019-02-08 12:38:41 +01:00
antirez
66fd5e058f ACL: ignore modules commands when adding categories.
We can't trust modules commands flagging, so module commands must be
always explicitly added, with the exception of +@all that will include
everything. However something like +@readonly should not include command
from modules that may be potentially dangerous: our categories must be
safe and reliable and modules may not be like that.
2019-02-08 11:50:39 +01:00
antirez
4a7062f9bd ACL: some documentation inside redis.conf. 2019-02-08 09:52:07 +01:00
antirez
87ce87e68c ACL: load ACL file at startup. Prevent silly configurations. 2019-02-07 17:20:03 +01:00
antirez
b1db13d8fa ACL: ACLLoadFromFile(): several errors fixed to make it work. 2019-02-07 17:07:51 +01:00
antirez
434489abb7 ACL: ACLLoadFromFile(), restore DefaultUser global. 2019-02-07 17:00:35 +01:00
antirez
68d127d7b6 ACL: fix fgets wrong buffer size. 2019-02-07 16:53:41 +01:00
antirez
735cb69f12 ACL: add assertion and fix comment typo. 2019-02-07 16:47:14 +01:00
antirez
61c7688b75 ACL: fix a few ACLLoadFromFile() errors and finish ACLFreeUsersSet(). 2019-02-07 16:20:49 +01:00
antirez
f7b86d2b8f ACL: WIP: preserve the old config on loading errors. 2019-02-07 12:57:21 +01:00
antirez
dfb8b08f30 ACL: implement LOAD subcommand plus some minor rafactoring. 2019-02-07 12:20:30 +01:00
antirez
a980f6168e ACL: fix and complete ACLLoadFromFile() loading step. 2019-02-07 12:04:25 +01:00
antirez
dc8605f944 ACL: now ACLLoadFromFile() validates against fake user. 2019-02-06 16:44:55 +01:00
antirez
1922f590d2 ACL: refactoring creation of unlinked users. 2019-02-06 16:19:17 +01:00
antirez
1050774a5b ACL: initial design for ACLLoadFromFile() function. 2019-02-06 12:39:11 +01:00